在两个不同的 vim 配置之间切换?

在两个不同的 vim 配置之间切换?

我有一个 .vimrc 和 .vim 文件夹,我已经调整了一段时间,但在我新工作的机器上,我刚刚安装了ryanb 的点文件(其中包含 vim、git 等的配置文件)。每个配置中都有我喜欢的东西,所以最终我想将它们组合成一个新的个人配置。同时,我希望能够来回切换。

vim 中是否有一个简单的命令 - “使用以下 .vimrc 和 .vim 目录” - 或者当我想要切换时,更直接地交换文件本身吗?

答案1

-u选项允许您指定 ~/.vimrc 以外的配置文件,但没有选项指定 ~/.vim 目录的替代目录。但是,您可以通过修改每个配置文件中的“runtimepath”(“rtp”)选项让 Vim 使用不同的目录。例如,您可以使用此命令

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

在您的某个配置文件中告诉 Vim 使用 ~/.vim1 目录而不是 ~/.vim 目录。

答案2

-u告诉 vim 使用备用 vimrc 文件。

答案3

通过替换目录符号链接切换配置

我有以下设置:

❯ 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

可选:使用 tab 键完成切换配置的 shell 函数

如果你有雄心壮志,你可以编写一个具有自动完成功能的最小 shell 函数,让这一切变得超级方便。例如,如果你使用 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

答案4

Vim 插件管理器伏特

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

在 macOS 上安装:$ brew install volt

功能“profile”保存了一组插件、vimrc 和 gvimrc。

您可以使用一个命令切换组合。例如,您可以从 Web 开发设置切换到基本插件 + vimrc 或 vanilla vim。

当在 stackexchange 网络上提出问题或在 github 上提出 vim/vim 插件问题时,创建最小配置也很有帮助。

相关内容