Vim jako główne środowisko pracy

Nie wiem jak Ty drogi czytelniku, ale kiedy słyszałem wcześniej nazwę VIM, to kojarzyła mi się ze starym, totalnie dziwnym jak na współczesne czasny edytorem tekstu. Edytor modalny? WTF? Po co to komu… Nie mniej, od kiedy regularnie pracuję w temrinalu linuksowym, i wiedziałem, że jest obecny na niemalże każdym istniejącym serwerze, stwierdziłem, że jednak warto nauczyć się chociaż podstaw. Które nie były wcale takie ciężkie.
Czyli jak coś wydetyować, zapisać, wyjść. Proste. Ale pracować tak ciągle? Nie widziałem tego. Przecież mam swojego dobrze znanego, wygodnego, i czytelnego VSCode’a, z dopasowanymi dodatkami, znam skróty klawiszowe, i dobrze mi się w nim pracuje.
Ale czy dobrze oznacza wydajnie?
Potrzeba optymalizacji
Pracując z plikami konfiguracyjnymi w temrinalu, częśto używałem prostszego edytora nano, lub edytowałem pliki za pomocą VSCode, jednak po dłuższym czasie takiego procesu cały czas miałę wrażenie, że co chwilę muszę przełączać się między oknami, co jest niewygodne.
Jednak kolejnym problemem okazało się “dostosowanie” edytora do własnych potrzeb. Nano było do prostych, szybkich edycji. Z kolei do VScode jest dużo naprawdę świetnych dodatków, bez których ciężko było wyobrazić sobie pracę.
I tu pojawia się zgrzyt.
Czy dałoby się pogodzić szybkość edycji terminalowej z funkcjonalnościami zapewnianymi przez VSCode z dodatkami?
Neovim
I wtedy znalazłem Neovima.
Wedle inforamcji od samych autorów, Neovim to “hyperextensible vim-based text editor”. Czyli w wolnym tłumaczeniu - super rozszerzalny edytor tekstu oparty na Vimie. Brzmi dobrze. Więc może jednak spróbuję.
Kiedy się na to zdecydowałem, moja ogólna wiedza o Vimie była niewielka. Na szczęście nie podpadłem pod stary dowcip:
Jak chcesz uzyskać losową wartość, posadź świeżaka przed Vimem i każ mu z niego wyjść.
Pewna praktyka i cierpienie przy pracy po SSH jednak zrobiły swoje.
Trafiłem też na świetny filmik autorstwa Mirosława Zelenta z Kanału “Pasja informatyki” na YT:
A propos filmiku - polecam obejrzeć go przynajmniej dwukrotnie. Za pierwszym razem - wysłuchać, za drugim razem - próbować już w praktyce.
Decyzja podjęta
No dobra, klamka zapadła, trzeba spróbować.
Zainstalowałem program, i zacząłem go konfigurować. Na szczęście podstawowa konfiguracja na sam początek wystarczyła.
" Ustawienia absolutnie podstawowe
set number " Pokazuj numery linii
set autoindent " Automatyczne wcięcia
set tabstop=4 " Szerokość tabulacji na 4 spacje
set shiftwidth=4 " Szerokość wcięcia na 4 spacje
set cursorline " Podświetl bieżącą linię
set expandtab " Używaj spacji zamiast tabulacji
set clipboard=unnamedplus " Używaj schowka systemowegoTo wystarczyło, żeby można było zacząć pracę. Powoli i spokojnie wdrażać się w skróty klawiszowe, podstaowwe operacje, i ciągłe przyciskanie tego nieszczęsnego “q” (otwieranie trybu edycji komend).
Gotowe distro?
Po pewnym czasie, kiedy sam nie byłem jeszcze pewien czy wiem co robię, dowiedziałem się o LazyVIM - gotowej dystrybucji Neovima z wstępną konfiguracją i dodatkami.
Ale jakoś nie byłem przekonany. Skoro do tej pory używałem gotowego edytora, to używanie gotowego rozwiązania które ktoś ymyślił pod siebie, nie brzmiało dobrze od samego początku. Skroro to hiperrozszerzalny edytor, to może warto samemu go dostosować do własnych potrzeb?
Nie zdecydowałem się na LazyVIM, ale dowiedziałem się nieco o używanych przez niego wtyczkach.
Najgorszy problem - strzałki
No właśnie - te nieszczęsne strzałki. Czyli w jaki sposób poruszać się po tekście bez używania myszki i strzałek. W VSCode to było całkowicie normalne. Tutaj brzmiało po prostu źle.
Ale jak to zrobić? Kiedyś używanie WSAD w grach komputerowych było oczywiste. Ale tutaj domyślnie jest HJKL. Co wydaje się z początku totalnie niewygodne, i tym bardziej nieintuicyjne.
Nie chcę się rozpisywać odnośnie róznych prób poradzenia sobie z tym problemem, więc jakie rozwiązanie okazało się najlepsze?
Spojrzałem na to statystycznie. W totalnie amatorskiej wersji oczywiście. Przy pisaniy generalnie posuwamy się najcześciej w doł, i w prawo. Według mojego własnego doświadczenia - zdecydowanie też częściej w górę niż w lewo. A jeżeli już trzeba się przesunać w lewo, to zazwyczaj kasując tekst.

W trakcie pisania bezwzrokowego palce prawej dłonie spoczywają na klawiaszach “JKL;”. Zatem przeuwanie się w dół, jest dokładnie tam gdzie być powinnno - pod palcem wskazującym, a prawo - serdecznym. Góra jest pomiędzy nimi. A dzięki takiej pozycji serdecznego palca, mamy bardzo łatwy dostęp do klawisza “:” która opodwiada ze wejście w tryb komend - używany praktycnie cały czas.
A lewo? Skoro jest znacznie rzadziej używane, to można do niego dosuwać palec. Co w pisanu bezwzrokowym jest całkowicie naturalne.
Codzienny trening?
No dobrze, ale jak się tego nauczyć? Przecież to nie jest takie proste. Skróty klawiszowe są nienaturalne, i na pierwszy rzut oka wydają się totalnie dziwne.
Więc co zrobić? Pisać. W pracy, po pracy, przed pracą. Zamienić wszystkie swoje edytory na Vim/Neovim, i ćwiczyć. Nie ma drogi na skróty. Nie poddować się przy trudnościach.
Dobra, koniec patosu. W moim przypadku, okres adaptacji trwał około dwóch tygodni. To były ciężkie dwa tygodnie, gdzie wydajność mojej pracy bardzo spadła.
Warto zapamiętać też jedną, uniwersalną zasadę - w VIM jeżeli jakaś akcja znajduje się pod jakimś klawiszem, to zazwyczaj pod wielką literą jest akcja odwrotna (jest kilka wyjątków, ale na początku to nie ma dużego znaczenia).
Podsumowanie
Nie miałem zamiaru tutaj pisać długiego artykułu o Vimie/Neovimie. Chciałem tylko podzielić się moimi przemyśleniami na temat przejścia na ten edytor jako główne środowisko pracy. Jak narazie jestem zadowolony, chociaż przyznaję, że początki dały dość ostro popalić.
Zwłaszcza ostatnio zauważam, że mam większe problemy z samym pisaniem bezwzrokowym, niż z samym Vimem. Za mało treningu, zbyt szybko, zbyt mało uważnie. Możliwe. Ale to działa. I jest super wygodne.
Jeżeli się wachasz - spróbuj. Przecież nie musisz przestawiać się na siłę. Ale jeżeli jak ja - na codzień pracujesz w terminalu, to naprawdę warto ogarnąć chociaż podstawy. Neovim i VIM to świetne narzędzia, ale trzeba je poznać i się do nich przekonać.
A na sam koniec mogę z dumą stwierdzić, że cały ten artykuł napisałem w Neovimie. W nieco bogatszej niż przedstawiona wyżej konfiguracji, ale jednak.