Vim/Więcej niż edytor

< Vim

Vim dlaczego nie jako IDE

Sesje edytuj

Gdy cały dzień spędzimy na pracy w naszym ulubionym programie i chcemy na pewien czas przerwać jego działanie na pewno, zechcecie zapisać wszystkie ustawienia programu tak aby w późniejszym czasie powrócić do dalszej pracy. W ustawienia programu oczywiście wchodzą takie rzeczy jak, wygląd okien, lista plików, zakładki, rejestry, globalne zmienne środowiskowe i inne opcje wystarczy że skorzystamy z sesji które umożliwią nam to wszytko.

Aby zapisać aktualny stan sesji wystarczy wykonać polecenie:

 :mksession naszapraca.vim

oczywiście naszapraca.vim to nazwa naszego pliku ze wszelkimi ustawieniami, i jego nazwa jest dowolna tak samo jak jego rozszerzenie.

Aby powrócić do naszej pracy i odtworzyć sesje wystarczy uruchomić program z parametrem:

 vim -S naszapraca.vim

I już jesteśmy gotowi kontynuować naszą pracę.


Więcej na ten temat można poczytać w dokumentacji Vima http://www.vim.org/htmldoc/usr_21.html#21.4

Karty (taby) edytuj

Zacznijmy od otworzenia wielu plików w kartach. Oczywiście istnieje wiele sposobów na to aby tego dokonać. Jednym z nich jest

 vim -p nazwa1 nazwa2 nazwa3 

Co spowoduje otwarcie plików nazwa1, nazwa2, nazwa3 w osobnych kartach tuż po uruchomieniu programu. Jeżeli mamy już uruchomiony program za pomocą komendy w trybie normalnym:

 :tabnew ścieżkadopliku/nazwapliku

jesteśmy w stanie otworzyć kolejny plik w osobnej karcie.

Aplikacja jest w stanie otworzyć dowolną ilość kart, jednak w zależności do potrzeb jesteśmy wstanie ograniczyć wyświetlaną ich ilość poprzez ustawienie w pliku konfiguracyjnym zmiennej:

 tabpagemax

lub poprzez komendę w trybie normalnym:

 set tabpagemax=17

co sprawi, iż wyświetlane będzie 17 kart, każda następna nie będzie wyświetlana. Należy pamiętać, że mimo to pliki będą otwierane bez względu na to ile jest widocznych kart.

Komenda :tabf umożliwia otworzenie wyszukanie i otworzenie pliku w nowej karcie:

  :tabf plik*

w ten sposób otworzony zostanie plik pasujący do wzorca, jeżeli istnieje kilka plików spełniających to kryterium program poinformuje nas o tym i będziemy musieli zawęzić kryterium tak aby wynikiem przeszukiwania był tylko jeden plik.

Poruszanie się po zakładkach

Do poruszania po kartach wykorzystujemy następujące polecenia:

 :tabn  //następna zakładka
 :tabp  //poprzednia zakładka

Jeżeli mamy bardzo dużą ilość otwartych kart jesteśmy w stanie dostać się do ostatniej lub pierwszej karty bezpośrednio poprzez wykonanie komendy:

 :tabfirst   // pierwsza karta
 :tabfir    //j.w
 :tablast   //ostatnia karta

Dodatkowo możemy się przemieszczać pomiędzy kartami za pomocą komend:

 :tabn 2   //druga karta od prawej 
 :tabp 4   //przesuń o 4 karta w lewo 

Możemy również uporządkować sobie odpowiednio karty według własnego uznania, wykorzystujemy do tego komendę:

 :tabm 2  //przenieś aktualną kartę na 2 pozycję


Konfiguracja linii kart:

 set showtabline=2


Ustawianie własnych skrótów (mapowanie klawiszy)

Okna edytuj

No, to idziemy dalej. Pora na okna. Pewnie zadziwi was, że w konsolowym edytorze teksu istnieją okna. Wtedy dzielimy nasz interfejs na dwie części. Zacznijmy od wpisania komendy:

 :split

I mamy dwa okienka. Czasem musimy jednak przeskoczyć z jednego okna do drugiego. Umożliwi to nam naciśnięcie kombinacji klawiszy Ctrl+w i naciśnięcie któregoś klawisza kierunku (h, j, k, l). Jak już nam się znudzi otwieranie pustych plików, możemy spróbować:

 :split jakistamplik.txt

Otworzy nam się od razu plik, jaki wpisaliśmy. Gdy wpiszemy jeszcze raz, konsola podzieli nam się na 3 elementy, jeszcze raz na 4 itd, itd, itd... Wszystkie równej wysokości. Czasem jednak możemy potrzebować większego, bądź mniejszego okienka. Wtedy naciskamy znowu Ctrl-w, lecz rozmiar modyfikujemy poprzez naciśnięcie klawisza kierunku z SHIFTEM. Możemy dzielić okno też w poziomie, za pomocą komendy:

 :vsplit

Na koniec możemy czasem mieć potrzebę skończenia pracy z oknem, zamykamy:

 :close

Przemieszczanie się po kodzie edytuj

Aby wyświetlić wszystkie linie które zawierają daną fraze, wystarczy ustawić kursor na frazie którą chcemy odnaleźć i nacisnąć skrót klawiszowy [I (I - duże i)

Gdy chcemy obejrzeć tylko definicję danej zmiennej wystarczy użyć skrótu [i


Jeżeli chcemy podejrzeć jak zostało zdefiniowane dane makro czyli np.:


 #define ZMIENNA 2 

wystarczy użyć skrótu [d jednocześnie mając ustawiony kursor na danym makrze.

Dodatkowo dostępne są jeszcze skróty:


 [<C-i>

Przechodzi do pierwszej następującej po nim lini zawierającej daną zmienną.

C-i - Ctrl+i, jednak można użyć zamiast niego klawisza Tab czyli:

 [<Tab>

otrzymamy w ten sposób ten sam efekt.


 ]<C-i>

podobnie jak wyżej z tą różnicą iż przesukuje w górę czyli pierwsza poprzedzająca linia.

 gd

Przechodzi do definicji danej zmiennej (kursor musi się znajdować na danej zmiennej)

 gD

Przechodzi do globalnej definicji danej zmiennej (kursor musi się znajdować na danej zmiennej)


Komentowanie bloku kodu edytuj

Jak na porządne IDE przystało także Vim posiada komentowanie fragmentów bloku kodu.

Aby tego dokonać wystarczy zaznaczyć dany blok kodu (Ctrl+V), następnie wcisnąć I, wprowadzić znak których chcemy wprowadzić np. % , //

Po wprowadzeniu znaku zatwierdzamy klawiszem ESC


Dopełnianie treści edytuj

Jedną z ważniejszych i przydatniejszych funkcji jakie posiadają typowe IDE, jest dopełnianie nazw funkcji, metod, definicji etc...

Jest to bardzo przydatna rzecz której oczywiście nie zabrakło w naszym programie.

Do dyspozycji mamy kilka możliwości uzupełniania wprowadzanego tekstu. Jest możliwość dopasowywania wzorców wg.:

    całych linii (Ctrl-X Ctrl-L)
    fraz z bieżącego pliku (Ctrl-X Ctrl-N)
    fraz ze słownika (Ctrl-X Ctrl-K)
    fraz ze słownika synonimów (Ctrl-X Ctrl-T)
    fraz z bieżącego pliku i plików dołączonych (Ctrl-X Ctrl-I)
    tagów (Ctrl-X Ctrl-])
    nazw plików (Ctrl-X Ctrl-F)
    definicji i makr (Ctrl-X Ctrl-D)
    linii poleceń VIM (Ctrl-X Ctrl-V)
    fraz z listy opisanej przez opcję complete (Ctrl-N)

Sprawdzanie pisowni edytuj

   :help spell

Sprawdzanie poprawności słów które wpisujemy możemy wykonać po włączeniu opcji:

    :set spell

Włączamy sprawdzanie razem z wyborem języka (można oddzielnie przez set spellang)

    :set spell spelllang=pl "wszystkie bufory, aktualne i otwarte w przyszłości
    :setlocal spell spelllang=pl " aktualny bufor
    :windo set spell spelllang=pl " wszystkie okna w bieżącej zakładce
    :bufdo set spell spelllang=pl " wszystkie otwarte bufory

więcej o włączaniu języka

    :help spelllang

gdzie pl, jest język który chcemy wykorzystać. W momencie ustawiania języka Vim sprawdzi czy w katalogu z plikami konfiguracyjnymi ~/.vim/ występuje katalog spell oraz czy w nim znajduje się odpowiedni plik ze słownikiem w danym języku. W powyższym przypadku będzie to język polski. Jeżeli nie posiadamy jeszcze słownika należy utworzyć katalog spell:

   mkdir ~/.vim/spell

oraz wgrać do niego pliki ze słownikami które chcemy używać. Lista dostępnych plików znajdziemy tutaj Warto zauważyć, iż do wyboru mamy słowniki w różnym kodowaniu, cp1250, utf8, ascii, latin etc...

Można też zastosować automatyczne włączenie w konfiguracji

  if v:version >= 700
      " Toggle in-line spell checking on and off with `,s`
      let mapleader = ","
      nmap <silent> <leader>s :set spell!<CR>
      "Set region to British English
      "set spelllang=en_gb
      set spelllang=pl
  endif


]s Przejdź do następnego błędnego słowa za kursorem. Liczba przed komendą może być zastosowania do powtórzenia. 'wrapscan" ma zastosowanie.

[s Jak "]s" ale czuka wstecz, znajduje błędne słowo przed kursorem

z= dla słowa pod/za kursorem, zasugeruj poprawne słowo. Jeśli jesteś pewny, że pierwsza sugestia jest dobra, możesz użyć 1z=

zg dodaj słowo pod kursorem jako prawidłowe słowo do własnej listy (spellfile)

zw usunięcie słowa ze słownika

zug cofnij dodanie słowa do słownika

zuw cofnij usunięcie słowa ze słownika