Konfiguracja

by Paweł Paduch published 2018/12/10 18:49:52 GMT+2, last modified 2018-12-10T18:49:52+02:00
Jak umilić sobie i tak już przyjemną pracę z vimem.

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.