Od czego by zacząć ten wpis? Nie chciałbym tu tłumaczyć i opowiadać całej historii Vi, Vima i Neovima oraz wojny między całym tym ekosystemem a Emacsem. Chciałbym podejść do tego bardziej osobiście i opowiedzieć o moich doświadczeniach z tymi niesamowitymi edytorami: jak to wszystko się zaczęło i jak doszedłem do momentu, kiedy nie wyobrażam sobie innej pracy z tekstem. Okazjonalna obsługa pakietu Office albo innych narzędzi edycji kończy się u mnie tekstem poprzecinanym :wa, bo tak weszło mi to w nawyk i wyparło taki skrót klawiszowy jak Ctrl + s.
Pierwszy kontakt z Vi Link to heading
Pierwszy raz o vi usłyszałem na pierwszym roku studiów, kiedy pewien profesor postanowił zrobić klasyczny żart i najpierw kazał na ćwiczeniach edytować plik za jego pomocą, a potem wyjść z programu bez podawania żadnych instrukcji. Po 15 minutach zlitował się nad tymi, którzy nie wiedzieli, jak wyjść z programu, i zaproponował użycie nano jako znak hańby i niedoświadczenia. Byłem jedną z tych zhańbionych osób.
Tym bardziej trudno mi teraz uwierzyć, że nawet do moich notatek używam Neovima. Choć muszę przyznać, że na początku nie była to prosta przygoda. Jednym z moich problemów jest też to, że nigdy do końca nie nauczyłem się pisać w pełni bezwzrokowo. Nie piszę najwolniej, jeśli piszę coś z głowy, ale przepisywanie to inna historia.
Dlaczego zacząłem? Link to heading
Z prostej przyczyny: kolejne prace i stanowiska wymagały ode mnie coraz częstszego modyfikowania plików na szybko na serwerach, na szczęście testowych, a nie produkcyjnych. nano okazało się bardzo ograniczone w tych zastosowaniach. Do tego doszły takie rozwiązania jak deweloperskie maszyny wirtualne do budowania ogromnego kodu. Szybciej było zacząć pracować nad kodem na tych zdalnych maszynach, niż lokalnie ustawiać całe środowisko i potem synchronizować kod. Kolejnym argumentem był ostatni boom na Neovima i jego różne dystrybucje, w mojej bańce internetowej podsycany przez takie osobistości internetowe jak TJ DeVries, Primeagen czy Typecraft. To wszystko popchnęło mnie w stronę Vi i Vim motions. A ja teraz zapraszam Cię na szybką przebieżkę po tym, jak zacząć.
Skok na głęboką wodę czy moczenie stópek Link to heading
To, jak wejdziesz w temat, jest Twoim wyborem. Ja tylko przedstawię Ci kilka sposobów, jak to zrobić. Wybrałem skok, ale wiązało się to z lekką dozą frustracji i zmęczenia, bo na samym początku wiele prostych akcji zajmowało mi niewspółmiernie długo. Sama świadomość tego, że możesz w każdej chwili otworzyć swój ulubiony edytor i tam napisać ten kod ot tak, zamiast męczyć się nawet z zaznaczaniem paru linii i ich skopiowaniem, jest bardzo demotywująca. A potem przychodzi moment, kiedy coś w głowie przeskakuje i już nie chcesz wracać.
To było intensywne, ale zmusiło mnie do szybkiego wyrobienia sobie pamięci mięśniowej przynajmniej dla podstawowych skrótów. A jak to zrobiłem? Zainstalowałem Neovima i wybrałem jedną z popularnych dystrybucji, LazyVim, żeby mieć jakiś punkt wyjścia. Wiem, niektórzy uważają użycie dystrybucji na początku za świętokradztwo, ale dla mnie było to bardzo wygodne. Jedyne, o czym warto pamiętać, to odróżnienie podstawowej obsługi Vima od skrótów zapewnionych przez dystrybucję. Najlepszym sposobem na to oraz na zapamiętanie podstawowych ruchów jest wydrukowanie ściągi i przyklejenie jej pod monitorem. U mnie zadziałało jak złoto. Przykładowe ściągi:
- https://vim.rtorr.com/
- https://www.vimgym.dev/blog/vim-motions-cheat-sheet-beginners
- https://rumorscity.com/2014/08/16/5-best-vim-cheat-sheet/ (osobiście używałem pozycji drugiej z tego linku, bo jest graficznie przystępna)
A co z tymi, którzy wolą jednak zacząć powolutku? Jeśli używasz VS Code na co dzień, zainstaluj jedną z wtyczek: Vim albo VSCode Neovim. Proponowałbym tę pierwszą, bo nie potrzebujesz tego, co oferuje Neovim, a tylko chcesz obsługiwać VS Code za pomocą Vim motions. To pozwala w kontrolowany sposób przyzwyczajać się do skrótów i kombinacji klawiszy w znajomym środowisku.
Co jeszcze można zrobić, żeby się tego nauczyć? Link to heading
Jest jeszcze coś, co nazywa się vimtutor. To wbudowany w Vima i Neovima program, który uczy użytkownika podstaw obsługi. Na pewno warto go uruchomić i przejść kilka razy dla utrwalenia. A jak go uruchomić? Jeśli masz zainstalowanego Vima, użyj polecenia vimtutor, a jeśli Neovima, użyj nvim +Tutor.
Najważniejsze opcje do ustawienia na sam początek Link to heading
Jest kilka opcji, które zawsze ustawiam, nieważne, gdzie otwieram Neovima:
local opt = vim.opt
opt.number = true
opt.relativenumber = true
opt.colorcolumn = "120"
opt.scrolloff = 20
opt.spelllang = { "en", "pl" }
opt.wrap = true
Przejdźmy po kolei przez te opcje i zobaczmy, co robią:
number- włącza wyświetlanie numerów linii i jest to bardzo pomocne, ponieważ wiele operacji można wykonać, podając liczbę linii albo znaków, które mają być objęte tą operacją. Na przykład5yjskopiuje pięć linii w Vimie, włącznie z aktualną.relativenumber- zmienia numerowanie linii na relatywne do tej aktywnej, a przy niej samej wyświetla jej numer w plikucolorcolumn- dodaje znacznik na podanej kolumnie, aby wizualnie widzieć, kiedy przesadzamy z długością liniiscrolloff- utrzymuje podaną liczbę linii odstępu nad i pod kursorem podczas przewijaniaspelllang- ustawia domyślne języki dla wtyczek sprawdzających poprawność językowąwrap- zawija długie linie zamiast chować zawartość za ekranem
Spróbuj samodzielnie Link to heading
Ważne, żeby samodzielnie doświadczać i próbować, bo tak uczymy się najwięcej. Ten artykuł celowo nie prowadzi za rączkę, a jedynie pokazuje kontekst, dlaczego ja tego używam i jak według mnie najlepiej zacząć. Mam nadzieję, że odkrywanie Neovima sprawi Ci dużo frajdy.
W połączeniu z tmuxem, o którym możecie poczytać w moim poprzednim artykule, dostajecie środowisko do pisania, testowania i uruchamiania kodu bezpośrednio w terminalu.