与.vimrc
打交道时Linux 和 Windows 中的配置文件(到目前为止我一直在使用的两个系统)并试图保持跨平台配置,我发现主要有两种解决方案:
/home/user
中为 vim 文件创建一个新文件夹, 所以两个系统都有相同的 vim 目录名(而不是默认的 .vim
在 linux 和 vimfiles
在 Windows 中),并使用 set runtimepath
获取这个新文件夹;设置 runtimepath=~/vim_local,$VIMRUNTIME
源 ~/vim_local/vimrc
Source
has("32")
中创建一堆操作系统条件(如 .vimrc
)需要时,基于平台或capabilities ,但保留原始 unix 名称并在 Windows 主文件夹中创建指向原始文件的符号链接(symbolic link)(vimfiles
到 .vim
某处,可能是 Windows 主目录中的 .vim
目录,甚至是保管箱文件夹)。 (我没有在 XP 等旧 Windows 版本中测试过这种方法)。 您更喜欢哪种解决方案,为什么?每种解决方案的缺点是什么?您还有哪些其他解决方案? (您也可以在这里发布自己的
.vimrc
进行讨论。)如果您在
.vimrc
中使用了一些源代码控制配置文件,您是否也对您的插件文件进行版本控制(因此,当跨计算机“部署”您的配置时,您只需从您的存储库中进行 check out /克隆)?很多人都在使用pathogen并将每个插件保存在它自己的文件夹中(通常是来自 github 的 git repo)。对已经是其他地方的存储库的插件进行版本控制是否有意义?
最佳答案
我使用近似选项 2 的东西,但可能考虑了选项 3。我将所有内容保存在一个名为 ~/.vim
的文件夹中。或 c:\vim\vimfiles
.这些由 Bazaar 进行版本控制,并保存在具有 sftp 访问权限的服务器上。在新的 Windows 机器(使用 Bazaar)上安装 vim 时,我把它放在 c:\vim\vim73
并做:
bzr co sftp://<username>@<server>/path/to/vimfiles
copy vimfiles\vimrc_linker.vim _vimrc
在 Linux 机器上,我这样做:
cd
bzr co sftp://<username>@<server>/path/to/vimfiles .vim
ln -s .vim/vimrc_linker.vim .vimrc
vimrc_linker.vim
包含一行:runtime vimrc
打开名为
vimrc
的文件存储在 .vim
(或 vimfiles
在 Windows 上)。这允许我将我的 vimrc 保持在与 .vim
的其余部分相同的版本控制下。目录。因为我通常在 Windows 上使用 cygwin Bazaar,所以我保留所有带有 unix 行尾的插件以避免兼容性问题(Windows 和 Linux vim 都处理插件中的 unix 行尾,但 Linux 不喜欢 Windows 行尾)。版本控制的使用使我可以很容易地使我使用的所有 PC 保持同步,如果我安装了一个插件并且不喜欢它,我可以很容易地恢复更改,而无需考虑安装了哪些文件插件(VCS 告诉我)。
至于os条件,我用
has("win32")
等来区分。但是,很少有情况需要这种区分,所以这是一个小的不便。我的 vimrc 有 1000 行长(它有相当多的功能,我从来没有分解成插件),而 has
中只有大约 10-15 行。 block :,x
):这在 Windows 和 Linux 中以不同的方式完成 关于cross-platform - 每个 vimrc 跨平台解决方案的优缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3942783/