Przełączać się między dwiema różnymi konfiguracjami vim?

9

Mam folder .vimrc i .vim Od jakiegoś czasu poprawiam, ale na nowej maszynie właśnie zainstalowałem pliki kropkowe Ryanba (które zawierają pliki konfiguracyjne dla vim, git i więcej). W każdej konfiguracji są rzeczy, które lubię, więc ostatecznie chcę je połączyć w nową osobistą konfigurację. Tymczasem chciałbym móc przełączać się tam iz powrotem.

Czy w vimie jest takie proste polecenie - „użyj następującego katalogu .vimrc i .vim” - czy może łatwiej byłoby zamienić same pliki, kiedy chcę się przełączyć?

Nathan Long
źródło

Odpowiedzi:

7

Ta -uopcja pozwoli ci określić plik konfiguracyjny inny niż ~ / .vimrc, ale nie ma opcji określenia alternatywy dla katalogu ~ / .vim. Możesz jednak poprosić Vima, aby używał innego katalogu, modyfikując opcję „runtimepath” („rtp”) w każdym z plików konfiguracyjnych. Na przykład możesz użyć tego polecenia

let &rtp = substitute(&rtp, '\.vim\>', '.vim1', 'g')

w jednym z plików konfiguracyjnych, aby powiedzieć Vimowi, aby używał katalogu ~ / .vim1 zamiast katalogu ~ / .vim.

garyjohn
źródło
Zgaduję, że mogę to wykorzystać, aby zachować wszystko w Dropbox :)
Michael Caron,
1
@Michael Caron - możesz przechowywać swoje .vimrci .vimgdziekolwiek chcesz, o ile masz dowiązania symboliczne w folderze domowym do dowolnego miejsca, w którym je umieścisz. Osobiście używam tej sztuczki, aby przechowywać wszystkie moje konfiguracje w .dotfilesfolderze, który mogę zsynchronizować z Githubem.
Nathan Long,
3

-u każe vimowi użyć alternatywnego pliku vimrc.

Ignacio Vazquez-Abrams
źródło
Niedawno dowiedziałem się, że vim -u "NONE"otwiera vim waniliowy, bez konfiguracji. Może to być przydatne, jeśli masz złożoną konfigurację i chcesz wiedzieć, czy jakieś zachowanie jest rodzime dla Vima, czy nie. (Działa to również w MacVimie - nie próbowałem Gvima na Linuksie.)
Nathan Long,
1

Przełącz Config, zastępując Directory Symlink

Mam następującą konfigurację:

❯ 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

Jeśli chcesz zmienić na inną konfigurację, po prostu musisz ją wykonać

❯ ln -snf ~/.vim-configs/configX ~/.vim

Opcjonalnie: funkcja powłoki z kartą zakończoną do przełączania konfiguracji

Jeśli jesteś ambitny, możesz napisać minimalną funkcję powłoki z autouzupełnianiem, aby uczynić to super wygodnym. Na przykład, jeśli używasz zsh, możesz użyć

# 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
}

Zapewnia już uzupełnianie tabulatorów i działa wszędzie w systemie plików:

❯ 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

(nazwa funkcji skradziona z https://github.com/dawsbot/swim )

Hotschke
źródło
Dobre rozwiązanie, sugeruję dodanie aliasu dla każdej konfiguracji jak alias vimbasic="ln -snf ~/.vim-configs/basic/ ~/.vim && vim", aby można było zmienić konfigurację, wpisując alias jak vimbasic.
ton
1

Vim Plugin Manager Volt

https://github.com/vim-volt/volt

Instalacja na macOS: $ brew install volt

Funkcja „profil” zapisuje zestaw wtyczek, vimrc i gvimrc.

Możesz przełączać kombinacje za pomocą jednego polecenia. Na przykład możesz przełączyć się z konfiguracji programowania WWW na niezbędne wtyczki + vimrc lub waniliowy vim.

Jest to również pomocne przy tworzeniu minimalnych konfiguracji podczas zadawania pytań na temat sieci wymiany stosów lub problemów na github dla wtyczek vim / vim.

Hotschke
źródło