Przez lata swojej historii Vim dorobił się stada package mangerów. Od wersji ósmej, są one zbędne. Jest to za sprawą nowej obsługi pakietów.
W sumie to nie zmieniło się aż tak wiele.
Vim od zawsze pozwalał użytkownikowi dodawać użytkownikowi dodatkowe pliki,
w katalogach rzędu ~/.vim/colors
, ~/.vim/plugin
, ~/.vim/doc
i tak dalej.
Żeby zapanować nad wieloma dodatkami,
mieszającymi swoje pliki w całym tym lesie,
powstało niemało maszynerii.
W wersji ósmej dodano opcję,
by każdy dodatek miał swój katalog,
a w nim swoje .../plugin
, .../doc
i co tam jeszcze.
Dzięki temu przestają sobie wchodzić w drogę. Więc można po prostu rozpakowywać paczki ściągnięte z Internetu. Albo jeszcze lepiej: po prostu używać kopii roboczych repozytoriów. Dzięki temu instalacje i aktualizację można osiągnąć takim skryptem (świeża wersja robocza z okazji Ubuntu pod Windows):
#!/usr/bin/env bash
# Create new folder in ~/.vim/pack that contains a start folder and cd into it.
#
# Arguments:
# package_group, a string folder name to create and change into.
#
# Examples:
# set_group syntax-highlighting
#
function set_group () {
package_group=$1
path="$HOME/.vim/pack/$package_group/start"
mkdir -p "$path"
cd "$path" || exit
}
# Clone or update a git repo in the current directory.
#
# Arguments:
# repo_url, a URL to the git repo.
#
# Examples:
# package https://github.com/tpope/vim-endwise.git
#
function package () {
repo_url=$1
expected_repo=$(basename "$repo_url" .git)
if [ -d "$expected_repo" ]; then
cd "$expected_repo" || exit
result=$(git pull --force)
echo "$expected_repo: $result"
else
echo "$expected_repo: Installing..."
git clone -q "$repo_url"
fi
}
(
set_group analyzers
#package https://github.com/vim-syntastic/syntastic.git &
wait
) &
(
set_group navigation
package https://github.com/ctrlpvim/ctrlp.vim.git &
package https://github.com/tpope/vim-unimpaired.git &
wait
) &
(
set_group status
package https://github.com/vim-airline/vim-airline.git &
package https://github.com/vim-airline/vim-airline-themes.git &
) &
(
set_group colorschemes
package https://github.com/altercation/vim-colors-solarized.git &
package https://github.com/sickill/vim-monokai.git &
wait
) &
wait