Vim (od Vi Improved) to modalny edytor tekstu działający w terminalu Linuksa, będący rozwinięciem klasycznego edytora vi z Uniksa. Jego znakiem rozpoznawczym jest praca w trybach: zamiast jednego stanu, w którym wszystko, co wpiszesz, ląduje w tekście, masz osobny tryb do wpisywania znaków i osobny do wydawania poleceń. Dzięki temu cała klawiatura zamienia się w zestaw skrótów do nawigacji i edycji, a Ty edytujesz szybko, nie odrywając rąk od liter i nie sięgając po mysz.
Jak to działa
Vim startuje w trybie normalnym (Normal mode), w którym litery nie wpisują znaków, tylko uruchamiają komendy: dd kasuje linię, w przeskakuje o słowo do przodu, gg idzie na początek pliku. Żeby cokolwiek napisać, wchodzisz w tryb wstawiania (Insert mode) klawiszem i lub a, a wracasz klawiszem Esc. Jest jeszcze tryb wizualny (zaznaczanie) i tryb poleceń wywoływany dwukropkiem, np. :wq zapisuje plik i wychodzi.
Cała filozofia opiera się na łączeniu operatorów z ruchami w mały język edycji. d to „usuń”, 3w to „trzy słowa naprzód”, więc d3w kasuje trzy słowa. Gdy raz załapiesz tę gramatykę, edytujesz tekst zaskakująco precyzyjnie i niemal bez patrzenia na to, co robią palce.
Przykład z praktyki
Logujesz się przez ssh na serwer, żeby poprawić konfigurację Nginx. Otwierasz plik: vim /etc/nginx/nginx.conf. Wpisujesz /worker_processes, żeby wyszukać dyrektywę, naciskasz Enter, potem cw, żeby podmienić wartość, wpisujesz nową liczbę, Esc i :wq. Plik zapisany, sesja zamknięta, zero klikania. Vim albo jego tryb naśladuje też mnóstwo innych narzędzi: pager less, edytor commitów w git czy plugin Vim w VS Code, więc te nawyki przenoszą się dalej.
Częste błędy i mity
Klasyk: „jak ja stąd wyjdę?”. Odpowiedź to Esc, a potem :q! (wyjście bez zapisu) lub :wq (zapis i wyjście). Drugi mit mówi, że Vim jest tylko dla hardkorów. W rzeczywistości wystarczy znać kilka komend, by działać, a resztę dokładasz z czasem. Uważaj też, by nie mylić Vima z prostym vi ani z osobnym projektem Neovim (fork Vima z naciskiem na rozszerzalność w Lua) — to pokrewne, ale różne narzędzia. I nie ucz się na pamięć wszystkich skrótów naraz; lepiej odpalić wbudowany samouczek poleceniem vimtutor.
Pojęcia powiązane
vi, Neovim, Emacs, nano, terminal, SSH, .vimrc, vimtutor, modalna edycja, GNU/Linux.