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:

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ład 5yj skopiuje 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 pliku
  • colorcolumn - dodaje znacznik na podanej kolumnie, aby wizualnie widzieć, kiedy przesadzamy z długością linii
  • scrolloff - utrzymuje podaną liczbę linii odstępu nad i pod kursorem podczas przewijania
  • spelllang - 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.