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.
