8

У меня есть папки .vimrc и .vim, которые я настраивал некоторое время, но на своей машине на новой работе я только что установил точечные файлы ryanb (которые содержат файлы конфигурации для vim, git и других). В каждой конфигурации есть вещи, которые мне нравятся, поэтому в конечном итоге я хочу объединить их в новую личную конфигурацию. Между тем, я хотел бы иметь возможность переключаться вперед и назад.

Есть ли в vim простая команда для этого - «использовать следующие каталоги .vimrc и .vim» - или было бы более просто выгрузить сами файлы, когда я хочу переключиться?

3 ответа3

6

Параметр -u позволит вам указать файл конфигурации, отличный от ~/.vimrc, но нет опции для указания альтернативы каталогу ~/.vim. Однако Vim может использовать другой каталог, изменив параметр «runtimepath» («rtp») в каждом из ваших файлов конфигурации. Например, вы можете использовать эту команду

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

в одном из ваших файлов конфигурации указать Vim использовать каталог ~/.vim1 вместо каталога ~/.vim.

3

-u говорит vim использовать альтернативный файл vimrc.

0

Переключить конфигурацию путем замены каталога

У меня есть следующие настройки:

❯ 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

Если вы хотите перейти на другой конфиг, вам просто нужно выполнить

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

Необязательно: функция оболочки с завершенной вкладкой для переключения конфигурации

Если вы амбициозны, вы можете написать минимальную функцию оболочки с автозаполнением, чтобы сделать это супер-удобным. Например, если вы используете Zsh, вы можете использовать

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

Он уже обеспечивает завершение табуляции и работает везде в вашей файловой системе:

❯ 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

(имя функции похищено с https://github.com/dawsbot/swim)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .