728 x 90

Vim – Zaawansowany edytor tekstu

Vim – Zaawansowany edytor tekstu

Vim to najpopularniejszy edytor tekstu w środowisku Linuksowym. W tym artykule przeczytasz o jego szybkiej konfiguracji.

Przed przystąpieniem do pracy z edytorem Vim musimy upewnić się, że jest on zainstalowany w naszym systemie. Edytor można pobrać ze strony domowej projektu – dostępne są m.in. wersje dla Windows, Unix oraz Mac.

Pobieranie edytora na stronie domowej projektu.

W systemie Linux najwygodniejszym sposobem jest instalacja pakietu przygotowanego przez opiekunów dystrybucji. W tych bazujących na Debianie należy zainstalować pakiet vim oraz vim-gtk (dla trybu graficznego), natomiast w dystrybucjach bazujących na RHEL/Fedora pakiety to vim-enhanced oraz vim-X11 odpowiednio.

Podstawowe polecenia

Po instalacji Vim nie zachwyca. Na pewno nie zachwyca nowych użytkowników – ani pod względem obsługi, ani pod względem wyglądu. Co prawda dostępny jest tutorial (polecenie konsoli: vimtutor) prezentujący podstawowe polecenia edytora, jednak próg wejścia, w możliwość swobodnego poruszania się, jest nadal wysoki.

Vim uruchomiony w oknie konsoli.

Vim uruchomiony z wykorzystaniem graficznego interfejsu.

Po uruchomieniu Vim działa w trybie NORMAL, jest to tryb wpisywania poleceń. Polecenia te pozwalają poruszać się po edytorze – np. wykonać operację kopiuj/wklej, przejść na koniec pliku itp.

Po wydaniu jednoliterowego polecenia i Vim przejdzie do trybu INSERT (WPROWADZANIE) – ogólnie mówiąc, jest to tryb, w którym możemy zmieniać otwarty plik. Status informujący o aktywacji tego trybu znajdziemy w lewym dolnym rogu. By powrócić do trybu NORMAL naciskamy klawisz ESC.

Vim w trybie INSERT.

Vim może pracować również w trybie VISUAL (WIZUALNY). W trybie tym możemy zaznaczyć tekst i wykonać na nim żądane polecenie (np. wytnij). Po wykonaniu polecenia Vim automatycznie zmieni tryb na NORMAL. Klawisza ESC używamy, by opuścić tryb bez wprowadzania zmian.

Vim w trybie VISUAL.

Oto lista trybów, z których często korzystam:

Polecenie Tryb Opis
i wprowadzanie modyfikowanie tekstu
v wizualny zaznaczanie tekstu
CTRL + v wizualny blokowy zaznaczanie tekstu blokami
V wizualny liniowy zaznaczanie tekstu liniami

Oprócz trybów warto znać kilka innych poleceń. Podobnie jak wyżej, przedstawione subiektywnie(dwukropek oznacza przejście do linii poleceń):

Polecenie Opis
dd wytnij linię (delete)
dw wytnij słowo (delete)
yy wkopiuj linię (yank)
yw kopiuj słowo (yank)
P wklej powyżej/przed kursorem
p wklej poniżej/za kursorem
/ przeszukaj zawartość bufora
u cofnij
CTRL + r ponów
:e <nazwa> otwarcie pliku
:w zapis bufora
:w <nazwa> zapis bufora do pliku o wybranej nazwie
:ls lista otwartych buforów
:b <numer> przejdź do bufora
:bd zamknięcie bufora
:split podziel okno poziomo
:split <nazwa> podziel okno poziomo i otwórz plik
:vsplit podziel okno pionowo
:vsplit <nazwa> podziel okno pionowo i otwórz plik
:q zamknięcie okna
CTRL + w <strzałka> przejście do okna po lewej/prawej stronie, na górze/dole
:! <polecenie> wykonanie polecenia powłoki

Zapewne niektórzy zwrócili uwagę na słowo delete przy słowie wytnij oraz yank przy kopiuj. Wynika to z faktu, że w Vimie właśnie tak te operacje się nazywają. Pewne rozważania na ten temat można znaleźć na StackExchange.

Polecenia można ze sobą łączyć. Poniższe zapisze bufor do pliku, a następnie zamknie otwarte okno:

 :wq

Oczywiście powyższa lista nie jest kompletna, Vim oferuje dużo więcej poleceń. Oto kilka stron, na których możesz o nich przeczytać:

Dystrybucje

Vim może być czymś więcej, niż tylko zwykłym edytorem tekstu – może być środowiskiem programistycznym. W tym celu należy skonfigurować Vima (plik ~/.vimrc) do naszych potrzeb, zainstalować odpowiednie dodatki i je skonfigurować albo… wykorzystać konfigurację utworzoną przez innych – tak zwaną dystrybucję. Oczywiście dystrybucja taka jest odpowiednio przygotowana, by jej użytkownicy mogli ją dostosowywać.

Chyba najpopularniejszą dystrybucją jest spf13-vim. Na jej stronie internetowej znajdziemy opis instalacji i dokumentację. Inną dystrybucją jest space-vim i to właśnie jej poświęcę uwagę.

Instalacja space-vim

Uwaga!
Polecenia konsoli, pokazane w dalszej części artykułu,
przygotowane zostały z myślą o użytkownikach systemu Linux.
W przypadku innych systemów operacyjnych polecenia te mogą się różnić.

Instalacja została opisana na stronie internetowej dystrybucji – http://vim.liuchengxu.org/.

Przed przystąpieniem do instalacji musimy upewnić się, że mamy zainstalowany program git oraz edytor vim z obsługą języka Python.

Poniższe polecenia Vim pomogą sprawdzić, czy Python jest obsługiwany:

:echo has('python')
:echo has('python3')

Jeśli którekolwiek z nich wyświetli 1 to znaczy, że nasz Vim posiada wsparcie dla języka Python.

Instalację przeprowadzamy z konta użytkownika, który ma tej dystrybucji używać, poprzez wydanie polecenia::

sh -c "$(curl -fsSL https://raw.githubusercontent.com/liuchengxu/space-vim/master/install.sh)"

Proces instalacji dystrybucji space-vim.

Po krótkiej chwili możemy uruchomić edytor. Z pewnością zauważymy, że teraz wygląda on zupełnie inaczej.

space-vim uruchomiony w oknie konsoli.

space-vim uruchomiony z wykorzystaniem graficznego interfejsu.

Konfiguracja

Instalacja dystrybucji tylko z uwagi na jej wygląd nie jest niczym szczególnym, ważne są dodatki. Otwórzmy zatem plik konfiguracyjny i dostosujmy dystrybucję do naszych potrzeb. Oczywiście całą operację wykonamy za pomocą Vima.

1. Otwieramy plik konfiguracyjny ~/.spacevim (domyślny plik konfiguracyjny to ~/.vimrc, jednak na potrzeby dystrybucji został on zmieniony). Będąc w trybie NORMAL wykonujemy polecenie::

:e ~/.spacevim

Naszym oczom ukaże się taki plik konfiguracyjny::

" You can enable the existing layers in space-vim and
" exclude the partial plugins in a certain layer.
" The command Layer is vaild in the function Layers().
" Use exclude option if you don't want the full Layer,
" e.g., Layer 'better-defaults', { 'exclude': 'itchyny/vim-cursorword' }
function! Layers()

  " Default layers, recommended!
  Layer 'fzf'
  Layer 'unite'
  Layer 'better-defaults'

endfunction

" Put your private plugins here.
function! UserInit()

  " Space has been set as the default leader key,
  " if you want to change it, uncomment and set it here.
  " let g:spacevim_leader = ""
  " let g:spacevim_localleader = ','

  " Install private plugins
  " Plug 'extr0py/oni'

endfunction

" Put your costom configurations here, e.g., change the colorscheme.
function! UserConfig()

  " If you enable airline layer and have installed the powerline fonts, set it here.
  " let g:airline_powerline_fonts=1
  " color desert

endfunction

Plik ten możemy podzielić na trzy części według widocznych funkcji – warstwy, dodatki użytkownika oraz konfigurację użytkownika.

Warstwa (Layer) to zbiór dodatków – np. warstwa python zawiera dodatki pozwalające na pracę ze skryptami języka Python.

Dodatki użytkownika to poszczególne dodatki dla Vima, które chcemy włączyć.

Konfiguracja użytkownika umożliwia zmianę poszczególnych opcji Vima – np. używanego schematu kolorów.

2. Zobaczmy jakie warstwy oferuje nam space-vim:

> ls ~/.space-vim/layers/
+checkers +distributions generate_layers.py LAYERS.md +programming +tools +vim
+completion +fun +lang +misc +themes +version-control

Po sprawdzeniu katalogu dystrybucji widać, że zostały one podzielone ze względu na ich role. Jako programista jestem zainteresowany językami C, C++ oraz Python::

> ls ~/.space-vim/layers/+lang/
c-c++ elm go html javascript markdown scala vue
elixir erlang graphviz java latex python typescript

Sprawdźmy jakie dodatki zostaną zainstalowane z warstwą python:

> cat ~/.space-vim/layers/+lang/python/packages.vim
MP 'tmhedberg/SimpylFold', { 'for': 'python' }
MP 'python-mode/python-mode', { 'for': 'python' }

Proponuję rozejrzeć się chwilę po dostępnych warstwach.

3. W celu włączenia nowych warstw musimy wyedytować funkcję Layers. W moim przypadku włączone zostały warstwy: c-c++, python oraz git:

function! Layers()

  " Default layers, recommended!
  Layer 'fzf'
  Layer 'unite'
  Layer 'better-defaults'

  Layer 'c-c++'
  Layer 'python'

  Layer 'git'

endfunction

Po zmianie funkcji Layers należy ponownie uruchomić edytor, aby nowe dodatki zostały zainstalowane.

4. Wiele osób narzeka na konieczność używania dziwnych poleceń w Vimie. Zainstalujmy dodatek novim-mode, który doda obsługę klasycznych skrótów klawiszowych (ich dokumentacja znajduje się tutaj).

W tym celu należy wyedytować funkcję UserInit:

function! UserInit()

  " Space has been set as the default leader key,
  " if you want to change it, uncomment and set it here.
  " let g:spacevim_leader = ""
  " let g:spacevim_localleader = ','

  " Install private plugins
  " Plug 'extr0py/oni'

  Plug 'tombh/novim-mode'

endfunction

Oczywiście po tej zmianie ponownie uruchamiamy edytor i cieszymy się standardowymi skrótami klawiszowymi. Jestem dość sceptycznie nastawiony do tego dodatku, ale może komuś przypadnie do gustu. Przedstawiam go bardziej jako ciekawostkę.

Jedna ważna uwaga: ALT+; oraz ALT+c sprawi, że otworzy się wiersz poleceń Vim. Ten skrót może się przydać, gdy wpadniemy w tarapaty.

5. Na koniec możemy zmienić konfigurację Vima. Ustawmy inny schemat kolorów oraz pożyczmy od spf13-vim konfigurację odpowiedzialną za utworzenie aliasów do typowych błędów w poleceniach::

" Put your costom configurations here, e.g., change the colorscheme.
function! UserConfig()

  " If you enable airline layer and have installed the powerline fonts, set it here.
  " let g:airline_powerline_fonts=1
  color desert

  " Fix common typos like :W, :Q, etc
  command! -bang -nargs=* -complete=file E e 
  command! -bang -nargs=* -complete=file W w command! -bang -nargs=* -complete=file Wq wq 
  command! -bang -nargs=* -complete=file WQ wq 
  command! -bang Wa wa
  command! -bang WA wa
  command! -bang Q q
  command! -bang QA qa
  command! -bang Qa qa

endfunction

Podsumowanie

Vim to rozbudowany edytor tekstu i w jednym artykule niemożliwym jest opisanie wszystkich jego cech. Poza granice tego artykułu wykracza także opis każdego z dodatku znajdującego się w dystrybucji. Jedynym sposobem, na poznanie każdego z osobna, jest wpisanie jego nazwy w wyszukiwarce internetowej i zapoznanie się z opisem.

Wpis został opublikowany również na prywatnym blogu autora: chyla.org/blog

Źródło obrazów: opracowanie własne na podstawie materiałów z vim.org

1 comment

Leave a Comment

Your email address will not be published. Required fields are marked with *

Cancel reply

1 Comment

  • Smithd447
    8 sierpnia 2017, 22:34

    I am impressed with this website, rattling I am a big fan. ddddfgedckeegafb

    REPLY

Inne artykuły