Som*_*DOS 14 vim cross-platform
当处理.vimrcLinux和Windows中的配置文件(我目前使用的两个系统)并试图保持跨平台配置时,我发现主要有两个解决方案:
为vim文件创建一个新文件夹/home/user,因此两个系统都具有相同的vim目录名(而不是.vimlinux和vimfilesWindows中的默认名称),并用于set runtimepath获取这个新文件夹;
设置runtimepath =〜/ vim_local,$ VIMRUNTIME source~/vim_local/vimrc
根据平台或功能在需要时创建一堆操作系统条件(例如has("32")),但保留原始的unix名称并在Windows主文件夹中创建符号链接到原始文件(到某个地方,也许是Windows主页中的目录,甚至是dropbox文件夹).(我没有在像Windows这样的旧版Windows中测试这种方法)..vimrcvimfiles.vim.vim
您更喜欢哪种解决方案?为什么?每种解决方案有哪些缺点?你有哪些其他解决方案?(您也可以.vimrc在这里发布自己的内容进行讨论.)
如果在.vimrc配置文件中使用某些源代码控制,那么您是否也对插件文件进行了版本控制(因此,当您在计算机上"部署"配置时,只需从存储库中进行检出/克隆)?很多人都在使用病原体并将每个插件保存在自己的文件夹中(通常是来自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
Run Code Online (Sandbox Code Playgroud)
在Linux机器上我做:
cd
bzr co sftp://<username>@<server>/path/to/vimfiles .vim
ln -s .vim/vimrc_linker.vim .vimrc
Run Code Online (Sandbox Code Playgroud)
vimrc_linker.vim 包含一行:
runtime vimrc
Run Code Online (Sandbox Code Playgroud)
这将打开vimrc存储在.vim(或vimfiles在Windows上)的文件.这允许我将vimrc保持在与.vim目录其余部分相同的版本控制下.由于我通常在Windows上使用cygwin Bazaar,因此我将所有插件保留在unix行结尾以避免兼容性问题(Windows和Linux vims都应对插件中的unix行结尾,但Linux不喜欢Windows行结尾).
使用版本控制允许我非常容易地保持我使用的所有PC,如果我安装了一个插件并且不喜欢它,我可以很容易地恢复更改,而不必考虑安装了哪些文件插件(VCS告诉我).
至于os条件,我使用has("win32")etc来区分.但是,很少有情况需要这种区分,所以这是一个小小的不便.我的vimrc是1000行(它有很多函数,我从来没有分到插件中)并且has块内只有大约10-15 个:
,x用于最大化GVim窗口的mapping():在Windows和Linux中以不同方式完成我把它放在我的.vimrc:
set runtimepath^=~/.vim "Use instead of "vimfiles" on windows
Run Code Online (Sandbox Code Playgroud)
所以.vim目录名保留在两个平台上.我可以使用os条件只在Windows上运行它.
我发现即使在Windows上也最好尽可能地使用unixy.我默认使用unix line-endings(你不想在vim配置中使用CR),特别是:
set fileformats=unix,dos,mac
Run Code Online (Sandbox Code Playgroud)
和平台特定的字体:
set guifont=Consolas:h12,Monaco:h15,Inconsolata:h12
Run Code Online (Sandbox Code Playgroud)
我也在我的主目录中使用版本控制(git/github)作为dotfiles/config/etc,它运行得很好.唯一的技巧是正确设置被忽略的文件,以便我不会经常被告知那里的所有文件我不想要版本(我必须使用,.git/info/exclude因为主文件夹中的.gitignore具有特殊含义).