在处理Linux和Windows中的.vimrc
配置文件(我目前使用的两个系统)并试图保持跨平台配置时,我发现主要有两个解决方案:
在/home/user
中为vim文件创建一个新文件夹,因此两个系统都具有相同的vim目录名(而不是Linux中的默认.vim
和Windows中的vimfiles
),以及使用set runtimepath
获取此新文件夹;
设置runtimepath =〜/ vim_local,$ VIMRUNTIME source~ / vim_local / vimrc
根据平台或capabilities在需要时在has("32")
中创建一堆操作系统条件(如.vimrc
),但保留原始的unix名称并在Windows中创建符号链接主文件夹到原始文件(某处vimfiles
到.vim
,Windows Home中可能是.vim
目录,甚至是Dropbox文件夹。 (我没有在像Windows这样的旧版Windows中测试过这种方法。)
您更喜欢哪种解决方案?为什么?每种解决方案有哪些缺点?你有哪些其他解决方案? (您也可以在此处发布自己的.vimrc
进行讨论。)
如果在.vimrc
配置文件中使用某些源代码控制,那么您是否也对插件文件进行了版本控制(因此,当您在计算机上“部署”配置时,只需从存储库中进行检出/克隆)?很多人都在使用pathogen并将每个插件保存在自己的文件夹中(通常是来自github的git repo)。版本控制一个已经是其他地方的存储库的插件是否有意义?
答案 0 :(得分:8)
我使用了近似选项2的内容,但可能考虑了选项3.我将所有内容保存在名为~/.vim
或c:\vim\vimfiles
的单个文件夹中。这些是由Bazaar控制的版本,并保存在具有sftp访问权限的服务器上。在新的Windows机器上安装vim(使用Bazaar)时,我将其放入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
(或Windows上的vimfiles
)中。这允许我将我的vimrc保持在与.vim
目录的其余部分相同的版本控制下。由于我通常在Windows上使用cygwin Bazaar,因此我将所有插件保留在unix行结尾以避免兼容性问题(Windows和Linux vims都应对插件中的unix行结尾,但Linux不喜欢Windows行结尾)
版本控制的使用使我可以非常轻松地保存我使用的所有PC,如果我安装了一个插件并且不喜欢它,我可以很容易地恢复更改,而不必考虑哪些文件是由该插件安装(VCS告诉我)。
至于os条件,我使用has("win32")
等来区分。但是,很少有情况需要这种区分,所以这是一个小小的不便。我的vimrc是1000行(它有很多函数,我从来没有分到插件中),只有大约10-15个在has
块内:
,x
):在Windows&amp;的Linux 答案 1 :(得分:7)
我把它放在我的.vimrc
:
set runtimepath^=~/.vim "Use instead of "vimfiles" on windows
所以.vim目录名保留在两个平台上。我可以使用os条件只在windows上运行它。
我发现即使在Windows上也最好尽可能地使用unixy。我默认使用unix line-endings(特别是你不想在vim配置中使用CR):
set fileformats=unix,dos,mac
特定于平台的字体:
set guifont=Consolas:h12,Monaco:h15,Inconsolata:h12
我也在我的主目录中使用版本控制(git / github)作为dotfiles / config / etc,它运行良好。唯一的技巧就是正确设置被忽略的文件,这样我就不会经常被告知那里的所有文件我不想要版本(我必须使用.git/info/exclude
,因为主文件夹中的.gitignore有一个特殊意义)。