VIM csomagkezelés howto
Az egyre több erre hajazó kiegészítő szinte messziről jövő segélykiáltásként szelte át az internet-étert egy beépített csomagkezelőért.
Így lehetett, hogy Vim 8-ban debütált a csomagok támogatása. vimhelp.org/repeat.txt.html#packages
Sajnos vagy nem sajnos jó ideje Neovim felhasználóvá avanzsáltam és minden informálódás nélkül leírtam, hogy ez a package manageres móka csak Vim-ben van, Neovimben nincs. Viszont a minap a Neovim git log
ot böngészve mintha erre utaló szavakat olvastam volna. A megérzésem jó volt, Neovimben is van Vim 8 csomagkezelő.
Megjegyzés: A csomagkezelő kifejezés nem a legmegfelelőbb, a Vim 8 packages a csomagok betöltését végzi, de nem telepíti őket.
VIM 8 package könyvtárstruktúra
A Vim 8 a telepítésért nem felel, csupán a csomagok betöltéséért. A csomagokat két módon lehet betölteni, mindig vagy ha kell. Tehát külön kezelhetjük azokat a csomagokat, amiket csak alkalmanként használnunk, (pl. különböző programnyelvek szintaxis definícióit) és külön azokat, amikre úgy általában szükségünk van (pl. buffer kezelést megkönnyítő pluginek).
$VIMHOME/pack/*/start
$VIMHOME/pack/*/opt
Ahol $VIMHOME
$HOME/.vim
ha Vim-et használunk és $XDG_CONFIG_HOME/nvim
($HOME/.config/nvim
), ha Neovim-et.
A *
helyére nagyjából bármit beírhatunk, kategorizálhatjuk őket. A migráció első körében egy my_plugins
nevet használtam, ezt később érdemes felülbírálni.
A start
könyvtárba azokat a plugineket tesszük, amikre mindig szükségünk van. Az opt
könyvtárba azokat, amiket csak alkalmanként használunk. Azzal, hogy így szétválasztjuk a plugineket, sokat gyorsíthatunk a Vim indulásán.
Új parancsok
Ahhoz, hogy az opt könyvtárba került csomagokat betölthessük 2 új parancsot kaptunk:
:packadd <csomagnév>
- Egyetlen csomagot tölt be:packloadall
- Az összes csomagot betölti
Migráció
Nosza, migráljunk!
Vopher
Korábban egy roppant buta eszközt használtam, a vophert Nem próbált mindenféle gondot megoldani, csak egyet. A pathogen mellé készült, ami nagyon rossz pluginek beszerzéséből (nem tudja), a vopher meg pont csak erre való: letölti a csomagokat és kicsomagolja őket. A vopher konfigurációja a csomag repository URL-ek listája.
Innen indultam ki, megvan a csomagok listája amit használok, azokat szeretném az új csomagkezelővel betölteni.
Az új csomagkezelő valamelyest rugalmasabb, mint a pathogen, ezért a vophert is lecseréltem.
Csomagok installálása
A vopher nagyon fapados, de mondhatjuk, hogy ha szükség volt rá, akkor gyorsan lehetett vele installálni és frissíteni is. De milyen jó lenne valami újat kipróbálni!
Gyakorlatilag az összes cikk a git submodule
dolgok használatát írta, amikor próbáltam informálódni a csomagok installálásának mikéntjéről, tehát én is ezt az utat jártam meg.
Korábban már kalandoztam git submodule
-okkal, de nem igazán jött át, hogy hogyan tudnám én azt hatékonyan használni, talán éppen a Vim csomagokkal próbálkoztam akkor is.
Tehát az alaphelyzet:
- Van egy privát git repository-m, ahol egyebek mellett a vim konfigurációt is tárolom, egy vim nevű mappában.
- Van egy file-om egy adag Github URL-lel.
A git submodule dokumentációjából (git-scm.com/docs/git-submodule) megtudhatjuk, hogy új submodule-t egy ördögi paranccsal tudunk a repóba tenni, aztán lehet is commitolni és pusholni:
git submodule add https://valahol.org/egy/csomag csomaghelye/csomag
Esetemben:
git submodule add https://github.com/akarki/valami.vim.git vim/pack/my_plugins/start/valami.vim
git submodule add https://github.com/akarki/barmi.vim.git vim/pack/my_plugins/opt/barmi.vim
git commit -m "Add vim plugins"
git push origin master
Ez alapján összeállítottam egy shell scriptet, ami a korábbi URL listát vette alapul. Utána töröltem a pathogen scriptet, kivettem a pathogen dolgát a vimrc-ből és már kész is volt az új plug-in rendszer.
Dokumentáció generálás
A csomagok installálása nem jelenti azt, hogy lesz hozzá rendes vimdoc is. Erre szolgál a :helptags <csomagneve|ALL>
parancs.
Terminálból:
vim --cmd ':helptags ALL' —-cmd ':q'
Ha nem működne, indíts egy vimet és úgy add ki a parancsot
:helptags ALL
Modulok frissítése
Git submodule kezeli a csomagverziókat, azzal is fogjuk őket frissíteni:
git submodule update --init --recursive --remote
git add .
git commit vim 'update vim modules'
Modulok törlése
A git 1.8.5.2 óta roppant könnyű:
git rm vim/pack/my_plugins/opt/barmi.vim
rm -rf .git/modules/vim/pack/my_plugins/opt/barmi.vim
Hibák
A színséma valamiért nem akarja az igazat, ha start könyvtárba kerül, így azt a colors/opt könyvtárba tettem és külön töltöm be, a vimrc-ből.
packadd yowish.vim
colo yowish
Reprodukció
Ha mondjuk egy szűz gépen is fel szeretnénk használni.
git clone git@somewhere.com/me/dotfiles.git
cd dotfiles
git pull origin master
git submodule init
git submodule update
Lehet vimezni ott is!
A kép eredetije: https://www.flickr.com/photos/49889874@N05/4772680734/
Hozzászóláshoz a Disqus szolgáltatását használom, korábbi vélemények elovlasásához és új hozzászólás írásához engedélyezd a Disqus-tól származó JavaScripteteket.