Переключаться между двумя разными конфигурациями vim?


9

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

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

Ответы:


7

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

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

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


Я думаю, я могу использовать это, чтобы сохранить все в Dropbox :)
Майкл Карон

1
@Michael Caron - вы можете хранить свои .vimrcи .vimгде угодно, если у вас есть символические ссылки в вашей домашней папке, куда бы вы их ни поместили. Лично я использую этот трюк, чтобы хранить все мои конфиги в .dotfilesпапке, которую я могу синхронизировать с Github.
Натан Лонг

3

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


Я недавно узнал, что vim -u "NONE"открывается vanilla vim, без конфигурации. Это может быть полезно, если у вас сложная конфигурация и вы хотите знать, является ли какое-то поведение встроенным в Vim или нет. (Это также работает для MacVim - я не пробовал Gvim на Linux.)
Натан Лонг,

1

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

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

❯ 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 )


Хорошее решение, я предлагаю добавить псевдоним для каждой конфигурации, например alias vimbasic="ln -snf ~/.vim-configs/basic/ ~/.vim && vim", чтобы вы могли изменить свою конфигурацию, просто набрав псевдоним как vimbasic.
тонна

1

Vim Plugin Manager Volt

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

Установка на macOS: $ brew install volt

Функция «профиль» сохраняет набор плагинов, vimrc и gvimrc.

Вы можете переключать комбинации одной командой. Например, вы можете переключиться с настройки веб-разработки на необходимые плагины + vimrc или vanilla vim.

Это также полезно при создании минимальных конфигураций при возникновении вопросов в сети stackexchange или проблем в github для плагинов vim / vim.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.