Jak skonfigurawać neovim aby pisać w LaTeX pod kontrolą gita. Przewodnik krok po kroku

Parę słów wstępu

Dostosowanie Neovim do pisania w $\LaTeX$ nie jest trudne, ale gdy robi się to pierwszy raz może zająć trochę czasu. W tym artykule pokaże jak przy pomocy kilku dodatków zrobić pełnoprawne IDE z podglądem na żywo czy podpowiedziami, a jako bonus nasze prace będzie pilnował git. Nie przejmuj się jeżeli nie miałeś styczności z vimem postaram się wytłumaczyć wszystko w miarę łopatologicznie.

Nie skupimy się tutaj na używaniu Neovim jako takiego (zapraszam do innego artykuł Wrowadzenie do vima ) ale na jego potężnej konfiguralności i użycia go do pracy z dystrybucją $\TeX$.

Jest do wyboru parę naprawdę fajnych wtyczek ułatwiających pracę z plikami .tex są to między innymi: LaTeX-Suite , LaTeX-Box czy quicktex … ja wybrałem vimtex . Na co dzień używam Debiana więc opis instalacji pakietów będą dotyczyły tego właśnie OSa.

neovim z podglądem PDF

(Wymagane) pakiety

Instalujemy potrzebne komponenty

Instalujemy $\TeX$ Live

Zaczniemy od instalacji $\TeX$ Live1, to dość rozbudowana dystrybucja z mnóstwem pakietów, możemy zainstalować całość:

1# apt-get install texlive-full

albo dostosować instalacje pod swoje potrzeby, pamiętajmy jednak aby zainstalować również pakiet texlive-lang-polish aby mieć pełne wsparcie języka polskiego, polecam zainstalowanie małego programu texdoctk do wygodnego przeglądania dokumentacji zainstalowanej na komputerze.

Przeglądarka PDF

Instalujemy przeglądarkę wspierającą wyszukiwanie do przodu (forward search), na linuxie mamy spory wybór ja wybrałem Zathura

Dlaczego wybrałem zathure? Przede wszystkim zathura ma takie same skróty klawiszowe jak vim np. poruszamy się po dokumencie za pomocą standardowych klawiszy vima hjkl

Forward search: Redagując plik tex wciskamy \lv i nasz otwarty dokument PDF przeskoczy do miejsca w którym znajduje się kursor.

Backward search: Działa to oczywiście też w drugą stronę będąc na pliku PDF wciskamy <C-Enter> lub <Ctrl-LeftMouseClick> i zostajemy przeniesieni do edytora z kursorem w odpowiednim miejscu.

Więc instalujemy:

1# apt-get install zathura zathura-pdf-poppler zathura-ps

System kontroli wersji git

Git został zaprojektowany w celu zarządzania historią kodu źródłowego. Ale wcale nie musimy być programistami aby z niego korzystać, ba to świetne narzędzie pod kontrole którego możemy oddać swoje pliki tex. W tym artykule skupimy się na podstawach podstaw aby zanadto nie komplikować, ale byśmy mogli swobodnie go używać.

1# apt-get install git

Szybka podstawowa konfiguracja:

1$ git config --global user.name "Imię Nazwisko"
2$ git config --global user.email adres@email.com
3$ git config --global core.editor vim

Na tym etapie to wszystko co musisz wiedzieć o gicie, w następnej części artykułu rozwiniemy temat.

Instalujemy Neovim

Aby zainstalować Neovim, a jakże wykonujemy magiczną komendę:

1# apt-get install neovim

I to wszystko!

Konfiguracjia Neovim

Instalacja pluginów

Wtyczki możemy instalować na dwa sposoby przy użyciu któregoś menadżera pluginów lub przez ręczne pobranie źródeł i rozpakowaniu w katalogu .config/nvim/plugged, ponieważ będziemy używać gita do wersjonowania naszych dokumentów i że jest to sposób dużo wygodniejszy do zarządzania i aktualizowania pluginów my użyjemy gita, a raczej użyje go menadżera wtyczek.

Mój wybór to vim-plug2 więc instalujemy (musisz mieć zainstalowany pakiet curl):

1sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
2  https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

Otwieramy plik .config/nvim/init.vim (jeżeli nie ma, to tworzymy odpowiednie katalogi i pliki)

1$ mkdir .config/nvim/
2$ touch .config/nvim/init.vim

na początku pliku tworzymy sekcie dla menadżera wtyczek vim-plug

1call plug#begin()
2
3call plug#end()

vimtex

Dodamy naszą pierwszą wtyczkę czyli vimtex3

1call plug#begin()
2  Plug 'lervag/vimtex'
3call plug#end()

Otwieramy vima i instalujemy wtyczkę :PlugInstall.

Pomyślnie zainstalowano <code>vimtex</code>

Sprawdzamy czy wtyczka ma spełnione zależności :checkhealth, w moim przypadku brakuje pakietu latexmk którego vimtex używa do kompilacji dokumentów i neovim-remote, a więc:

1# apt-get install latexmk
2# apt-get install python3-pip
3$ pip3 install neovim-remote

Teraz gdy mamy już zainstalowane co trzeba, zabierzmy się za konfigurację niektórych ustawień vimtex jest ich naprawdę sporo tutaj skupimy się na najważniejszych

 1" https://github.com/lervag/vimtex/wiki
 2let g:vimtex_compiler_progname = $HOME.'/.local/bin/nvr'
 3" Ustawiamy aby traktował dokumenty TeX jako pisane w stylu LaTeX
 4let g:tex_flavor = 'latex'
 5let g:vimtex_quickfix_mode=0
 6
 7" Podgląd PDF
 8" https://manpages.debian.org/buster/zathura/zathurarc.5.en.html
 9let g:latex_view_general_viewer = 'zathura'
10let g:vimtex_view_method = 'zathura'

vimtex posiada wygodne automatycznie generowany spis treści który otwieramy komendą :VimtexTocOpen

Otwarty spis treści

Jak wszystko tutaj też możemy dostosować wyświetlanie do swoich potrzeb i upodobań. Oto przykład:

 1" Ustawienia spisu treści
 2let g:vimtex_toc_config = {
 3  \ 'name' : 'TOC',
 4  \ 'layers' : ['content', 'todo', 'include'],
 5  \ 'resize' : 1,
 6  \ 'split_width' : 25,
 7  \ 'todo_sorted' : 0,
 8  \ 'show_help' : 1,
 9  \ 'show_numbers' : 1,
10  \ 'mode' : 2,
11  \}

Więcej informacji znajdziesz w dokumentacji

Sprawdzamy czy działa

Na tym etapie sprawdzamy czy wszytko działa jak powinno, wypróbujemy kilka podstawowych skrótów vimtex:

  • \ll Kompiluje dokument i otwiera przeglądarkę PDF z podglądem. Tak, tak z podświetleniem aktualnej pozycji kursora w pliku.
  • [[ Przeskakujemy do poprzedniej sekcji, lub następnej ]].
  • % Poruszamy się pomiędzy pasującymi separatorami.
  • dse Usuń środowisko (otoczenie)
  • csc zmień środowisko

To jest oczywiście czubek góry lodowej jeżeli chodzi o vimtex kompletną listę komend mamy tu lub poprostu wpisując w wierszu komend :help vimtex

Ok, tyle na początek wystarczy, jak wszystko działa to lecimy dalej.

coc.nvim

Pomimo że vimtex jest super, niektóre funkcje, takie jak automatyczne uzupełnianie czy podpowiedzi o błędach kodu $\LaTeX$, czy też niestandardowe segmenty kodu lepiej powierzyć innym wtyczkom, vimtex świetnie z nimi współpracuje.

Użyjemy coc.nvim4. Nie wchodząc w techniczne szczegóły coc.nvim to inteligentny silnik dla nvim ktury używa Protokół serwera języka

W celu zainstalowania pluginu dodajemy do naszego pliku init.vim kolejną pozycje w sekcji vim-plug

1call plug#begin()
2  Plug 'lervag/vimtex'
3  Plug 'neoclide/coc.nvim', {'branch': 'release'}
4call plug#end()

Otwieramy neovim i instalujemy wtyczkę :PlugInstall. Po instalacji wtyczki dobrym nawykiem jest sprawdzenie czy mamy spełnione wszystkie zależności, w tym celu tak jak robiliśmy to przy instalacji wtyczki vimtex uruchamiamy polecenie :checkhealth i ewentualnie instalujemy wymagane pakiety.

Gdy wszytko działa instalujemy dodatek do coc.nvim zaprojektowany specjalnie dla vimtex, a mianowicie coc-vimtex. W tym celu w linii komend neovima uruchamiamy polecenie:

1:CocInstall coc-vimtex

Artykół w trakcjie tworzenia


  1. https://wiki.debian.org/Latex  ↩︎

  2. https://github.com/junegunn/vim-plug  ↩︎

  3. https://github.com/lervag/vimtex  ↩︎

  4. https://github.com/neoclide/coc.nvim  ↩︎