Neovim – Vim na miarę XXI wieku.

ArDość dawno temu usłyszałem po raz pierwszy na temat tego projektu, ale nigdy nie zagłębiłem się wystarczająco w temacie, żeby poczuć chęć wypróbowania go u siebie. Słyszałem że jest niestabilny, że wiele rzeczy w nim nie działa, że jeszcze długa droga zanim stanie się konkurencyjny.

neovim_logo

Otóż jak się okazuje edytor ten prawie w pełni pokrył pełną funkcjonalność oryginalnego Vima i co ciekawsze:

  • mój .vimrc zawiera obecnie 216 linii
  • w folderze ~/.vim/bundle/ znajduje się obecnie 29 działających pluginów

I dwie proste komendy:

$ ln -s ~/.vimrc ~/.nvimrc
$ ln -s ~/.vim ~/.nvim

Sprawiły że nvim i vim nie różnią się niczym na pierwszy rzut oka. Wyglądają tak samo i nvim nie tylko obsłużył pathogena, ale też radzi sobie z całym tym gąszczem pluginów.

Co to oznacza?

Oznacza to że wykonano kawał dobrej roboty i możemy się stabilnie przenosić do nvima. Nie jest on co prawda dostępny jeszcze w oficjalnych repozytoriach Arch Linuxa, ale zbudowanie go ze źródeł dostępnych na githubie nie jest wcale trudne, zwłaszcza dzięki AUR. Dla innych systemów przygotowano bardzo dobry poradnik na novim wiki, więc nie będę się tutaj na ten temat rozpisywać.

Neovim w liczbach

Na dzień pisania posta:

  • Github
    • 26 styczeń 2014 – rozpoczęcie prac
    • 387 otwartych i 816 zamkniętych issue.
    • 928 forków
    • 13,550 gwiazdek
    • 3,544 commity
    • 166 contibutorów.
  • Bountysource
    • projekt zgromadził $33,966.

Ciekawe cechy projektu

  1. Po pierwsze uporządkowana została spora część oryginalnego kodu vima.
  2. Wszystko zostało przeprojektowane z myślą o możliwości utworzenia serwera nvima który miałby odpowiadać na zdalnie wysyłane komendy – jest to niesamowite główne dlatego, że moglibyśmy tworzyć wtedy pluginy do graficznych środowisk programowania, które nie musiałyby bezmyślnie małpować działania naszego ulubionego edytora, ale po prostu używać go jako backendu. Mimo że na chwilę obecną nie doczekaliśmy się takiej implementacji, mam spore nadzieje na przyszłość.
  3. Neovim umożliwia odpalanie instancji shella w swoich oknach (window), co oszczędza nam używania <C-z> do wrzucania edytora w tło.
  4. Bogate możliwości skryptowania – po pierwsze sam vimscript dostał możliwości programowania współbieżnego, więc możemy swobodnie tworzyć nowe procesy. Niesamowicie zwiększy to wydajność wielu pluginów, gdy tylko autorzy zdecydują się zrobić z tego użytek. Dodatkowo dzięki prostemu API możemy tworzyć skrypty w dowolnym języku programowania – zaleca się pythona, C, czy samego vimscripta.
  5. Neovim ma natywne wsparcie dla xclipa – dzięki temu wszystkie operacje usuwania czy też kopiowania mogą być od razu kierowane do naszego schowka systemowego. Bardzo przydatne dla osób które nie mogą przeżyć "+y.

Podsumowanie

Postanowiłem dać szansę temu edytorowi i aliasowałem vima do nvima. Na razie cały ten artykuł napisałem przy użyciu tego edytora i zauważyłem parę drobnych udogodnień w działaniu, których zawsze mi brakowało. Ponoć ten projekt ma raz na zawsze rozwiązać wszystkie problemy które mieliśmy z vimem – cóż trzymam za słowo. Zobaczymy jak sprawdzi się przy poważnym projekcie programistycznym.