Konfiguracja
Konfiguracja
Vim pozwala na bardzo elastyczną konfigurację. Opanowanie tej sztuki owocuje szybką i przyjemną pracą.
Plikiem konfiguracyjnym dla personalny ustawień jest .vimrc (dla wersji graficznej .gvimrc) oba można stworzyć w katalogu domowym użytkownika.
Plik taki jest przetwarzany linia po lini wykonując polecenia w nim zawarte.
Linie zaczynające się od " traktowane są jako komentarze.
Mapowanie klawiszy:
- :map (klawisz) (ciąg znaków sterujących) - po naciśnięciu danego klawisza wykonywany jest pewien ciąg znaków sterujących. Przykładowo :map z 0i/* ^[A */^[ skutkuje zakomentowaniem w c lini na której stoi kursor po naciśnięciu klawisza z. Uwaga! sekwencja ^[ oznacza jeden znak o kodzie 27 (esc)
Sekwencja ta jest tłumaczona następująco. 0 - przejdz na początek lini, i - wstaw przed kursorem, /* - te znaki, ^[ - esc czyli przechodzimy w tryb edycji, A - wstaw na koniec lini, */ te znaczki, ^[ przejdź do trybu edycji. - :unmap (klaiwsz) - odmapowanie klawisza
Rozwinięcia i skróty:
- :ab (ciąg) (ciąg znaków sterujących) - spowoduje, że vi zamiast te znaki na te, które mamy w ciągu znaków sterujących. np.
:abbr PR printf("\n",);^]hhhhhi - po napisaniu PR vim zamieni nam "PR " na printf(""); oraz kursor ustawi w środku pomiędzy "". - :una (ciąg) - odwołanie skrótu
Zmiana kolorów:
Kolory można podawać albo w formie #rrggbb (liczby w zakresie 00-FF) albo w postaci predefiniowanej, zwłaszcza dla konsoli niegraficznej.
0 Black
1 DarkBlue
2 DarkGreen
3 DarkCyan
4 DarkRed
5 DarkMagenta
6 Brown
7 LightGray, LightGrey, Gray, Grey
8 DarkGray, DarkGrey
9 Blue, LightBlue
10 Green, LightGreen
11 Cyan, LightCyan
12 Red, LightRed
13 Magenta, LightMagenta
14 Yellow
15 White
Kolory można ustawiać w następujący sposób:
- :higlight (nazwa grupy) klucz=wartość ... przyczym grupy mogą mieć następujące nazwy:
- Cursor - kolor znaku pod kursorem
- Directory - kolor katalogów i innych specjalnych nazw
- ErrorMsg - komunikat błędu w lini komend
- IncSearch - podświetlanie pasujących liter do wpisywanego wyrazu poszukiwania
- ModeMsg - kolor komunikatu o aktualnym trybie (np. "-- INSERT --")
- MoreMsg - komunikaty more'a
- NonText - '~' i '@' nietekstowe pole, np. na końcu pliku
- Question - pytanie np. yes/no
- SpecialKey - meta i specjalne klawisze z ":map"
- StatusLine - linia statusu aktualnego okna
- StatusLineNC - linia statusu nieaktualnego okna
- Title - nazwy dla wyjścia z ":set all", ":autocmd" itp.
- Visual - selekcja Visual mode
- VisualNOS - selekcja Visual mode gdy vi nie jest właścicielem selekcji
- WarningMsg - komunikat ostrzeżenia
- WildMenu - ?
- LineNr - kolor numerków linii
- Normal - normalny tekst
- Search - podświetlenie wyszukanych słów i inne Comment, Identifier, IncSearch, Constant, Special, Statement, PreProc, Type, Error, Ignore, Todo
Przy określaniu wyglądu można określić którego terminala dotyczy:- term - normalny terminal (vt100, xterm)
- cterm - kolorowy terminal
- gui - graficzny terminal
Dla term mamy następujące argumenty:- bold - pogrubiony
- underline - podkreślony
- reverse - odwrotny
- inverse - to samo co reverse
- italic - pochyły -
- standout
- NONE - brak atrybutu (w celu zresetowania go)
Dla cterm mamy następujące klucze im można przypisywać odpowiednie kolory:- ctermbg - określa tło
- ctermfg - określa kolor znaku
Dla gui można określić:- guibg - określa tło
- guifg - określa kolor znaku
- fontale raczej powinno się stosować fonty o tym samym rozmiarze gdyż mogą wystąpić problemy z odświerzaniem
W celu określenia grupy do jakiej przynależy jakiś kolor dobrze jest się zapoznać z plikami w <kalog vima>/syntax
- Obsługa opcji:
- :set - wyświetlenie wszystkich zmodyfikowanych opcji
- :set all - wyświetlenie wszystkich opcji
- :set no(opcja) - wyłączenie opcji, np :set nonumber
- :set inv(opcja) - odwrócenie opcji - jak była tak to jest nie
- :set (opcja)=(wartość) - przypisanie wartości do opcji
- :set (opcja)+=(wartość) - dopisanie wartości do opcji
- :set (opcja)? - wyświetlenie wartości opcji
- :set (opcja)& - reset do wartości domyślnej
- Tuning gvima:
- :set vb - użycie wizualnego bipka zamiast dźwiękowego
- :set [no]eb - ustawienie lub nie ustawienie dzwonka ostrzegawczego
- :set aw - autozapis, jeśli tylko plik się zmieni
- :set bk - zachowanie backup po zapisaniu pliku
- :set bdir - lista katalogów gdzie są backup'y
- :set bex - ustawienie rozszerzenia dla backup'u domyślnie ~
- :set uc=n - po n znakach odświeżenie swapfile
- :set ut=n - po n milisekundach odświeżenie swapfile, autozapis ten działa, jeśli plik się coś zmieni
- :set mm=n - ustawienie na n maksymalną pamięć w KB przydzieloną na jeden bufor
- :set mmt=nustawienie na n maksymalną pamięć w KB przydzieloną na wszystkie bufory
- :set scr=n - przy przewijaniu ctrl-u i ctrl-d ustawienie ilości linii na n
- :set gfn=(nazwa fontu) - ustawienie fontów (w wersji graficznej)
- :set mp=(nazwa make'a) - ustawienie programu do makowania
- :set sh=(nazwa_shell'a) - podaje się nazwę (z pełną ścieżką) shell'a jakiego chcemy używać do zewnętrznych komend
- :set shcf=(flaga) - flaga do shell'a
- Wielkości:
- :set lines=n - ustawienie wysokości okna na n linii
- :set co=n - ustawienie szerokości okna na n znaków
- :set ch=n - ustawienie na n ilość linii komend
- :set wh=n - minimalna ilość linii dla aktualnego okna
- :set wmh=n - minimalna ilość linii dla wszystkich okien (głównie w trybie dzielonym)
- :set hi=n - ustawienie ilości linii historii poleceń
- :set ul=n - ustawienie maksymalnej liczby "undo", jeżeli komuś jest mało 1000, to sobie może zmienić
- Szukanie:
- :set hls - podświetlanie szukanych słów
- :set is - podświetlanie pasujących słów podczas pisania zapytania
- :set inf - przeskoczenie w miejsce, gdzie pasują wpisane litery
- :set ic - ignorowanie wielkości liter podczas szukania
- :set scs - w połączeniu z opcją ic. Jeżeli jest coś szukane małymi literkami to są znajdywane i duże i małe. A jak jest szukane dużymi to tylko duże
- Podczas pisania
- :set lbr - ustawienie łamania linii pełnymi wyrazami
- :set sw=n - ustawienie na n spacji wcięcia w autowcinaniu (cin lub si) n musi być > 0
- :set si - przeskakiwanie kursora, dobre dla programistow C. Nie powoduje przeskoku do brzegu ekranu tylko umieszcza kursor tak, jak zaczyna się poprzednia linia. Można stosować w połączeniu z cin i sw
- :set cin - ustawienie stylu pisania w C (np. ustawianie nawiasów)
- :set sts=n - softwerowy tab. Działa to tak, że po naciśnięciu tabu wstawiane jest n spacji. Każde 8 zamieniane jest na zwykły tab. Ale te 8 można zmienić na inną ilość za pomocą ts
- :set et - używanie spacji zamiast tab
- :set ts=n - określenie szerokość tab
- :set wrap - zawijanie wierszy
- :set wm=n - ilość liter od prawej gdzie zaczyna się załamywanie, jak jest > 0 to jest automatyczne łamanie linii
- :set sbr=(string) - definiowanie stringu, jaki ma być użyty na początku zawijanej linii
- :set mousef - ustawienie podążania fokusa za myszką, czyli jak mamy okno podzielone np. między dwoma dokumentami, to jest ta część aktywna gdzie jest kursor myszy
- :set mh - ukrywanie kursora myszy podczas pisania
- :set mps=(znak1):(znak2),(znak3):(znak4) - ustawienie par znaków domykających się, wyszukiwanych przez "%" np :set mps=(:),[:]
- :set list - pokazanie znaków końca linii i tab'u
- Informacje
- :set nu - numerowanie linii (tylko widok, w pliku nic się nie zmienia)
- :set report=n - wypisywanie informacje, gdy wykonamy operacje na więcej niż n liniach. Np. report=2 my zrobimy y2y to nie wypisze nic, a jak zrobimy y3y to wypisze: 3 lines yanked
- :set ru - pokazanie aktualnej pozycji kursora
- :set sc - pokazanie na dole ekranu częściowych komend np: chcemy wyciąć 10 lini robimy - y10 i to już widzimy co wpisaliśmy, następne y kończy komendę, tak więc tego już nie będziemy widzieć. Ale pomaga to określeniu, ile tak naprawdę pobieramy tych linii
- :set smd - pokazywanie aktualnego trybu (na dole np. -Insert-)
- :set titlestring=(nazwa_okna) - ustawianie nazwy okna (taki bajer, bo i tak gvim ustawi nazwę okna tak jak się nazywa plik)
- :set cf - gdy jest aktywna i chcemy wyjść z edycji nie zapisanego pliku, to nas pyta czy zapisać
- :set im - najlepiej nie używać. Wchodzi od razu w tryb insert i nie bardzo da się z niego wyjść
Własne funkcje
Funkcje zaczynamy słowem function (Nazwa_funkcji)([parametry]), a kończymy endfunction.
Nazwa musi być z dużej litery. By przedefiniować funkcję po słowie function musi być wykrzyknik. Funkcje wywołujemy przez :call Nazwa_funkcji([parametry]).
Stopka sterująca
Umieszczenie na końcu pliku czegoś takiego: vim:polecenie Spowoduje wykonanie polecenia vima. np.
vim:lines=32:co=100 - spowoduje otworzenie dokumentu w którym znajduje się taka końcowa linia w oknie o rozmiarach 100x32 linie.
Dalsze informacje
Szczegółowe informacje można znaleźć w katalogu doc w vimie. Np: /usr/share/vim/vim64/doc.