Toggle Config dengan Mengganti Symlink Direktori
Saya memiliki pengaturan berikut:
❯ tree -L 2 ~/.vim-configs
~/.vim-configs
├── nathanl
│ ├── .git
│ ├── gvimrc
│ ├── pack
│ └── vimrc
├── ryanb
│ ├── autoload
│ ├── ...
│ └── vimrc
└── minimal
├── autoload
├── cache
├── doc
├── plugin
└── vimrc
❯ ls -l ~/.vim
lrwxr-xr-x 1 hotschke staff 42 Apr 3 16:35 .vim -> /Users/hotschke/.vim-configs/minimal
Jika Anda ingin mengubah ke konfigurasi yang berbeda, Anda cukup menjalankannya
❯ ln -snf ~/.vim-configs/configX ~/.vim
Opsional: fungsi shell dengan tab lengkap untuk berpindah konfigurasi
Jika Anda ambisius, Anda bisa menulis fungsi shell minimal dengan pelengkapan otomatis untuk membuat ini super nyaman. Misalnya jika Anda menggunakan zsh, Anda bisa menggunakan
# Swim - Switch Vim Configs
compdef '_path_files -/ -W ~/.vim-configs' swim
function swim {
if [ $# -eq 0 ]
then
zmodload zsh/stat
active=$(stat +link "$HOME/.vim")
echo "Swimming with ${${active}:t}"
echo "$HOME/.vim -> $active"
zmodload -u zsh/stat
else
echo "Swimming with $1"
ln -snfv ~/.vim-configs/$1 ~/.vim
fi
}
Ini sudah menyediakan penyelesaian tab dan bekerja di mana saja di sistem file Anda:
❯ pwd
<somewhere in your filesystem not necessarily $HOME or $HOME/.vim>
❯ swim <Tab>
-- directory --
minimal/ nathanl/ ryanb/
❯ swim minimal
Swimming with minimal
/Users/hotschke/.vim -> /Users/hotschke/.vim-configs/minimal
❯ swim
Swimming with minimal
/Users/hotschke/.vim -> /Users/hotschke/.vim-configs/minimal
(nama fungsi dicuri dari https://github.com/dawsbot/swim )