每个vimrc跨平台解决方案的优缺点?

Som*_*DOS 14 vim cross-platform

当处理.vimrcLinux和Windows中的配置文件(我目前使用的两个系统)并试图保持跨平台配置时,我发现主要有两个解决方案:

  1. 为vim文件创建一个新文件夹/home/user,因此两个系统都具有相同的vim目录名(而不是.vimlinux和vimfilesWindows中的默认名称),并用于set runtimepath获取这个新文件夹;

    设置runtimepath =〜/ vim_local,$ VIMRUNTIME source~/vim_local/vimrc

    资源

  2. 根据平台或功能在需要时创建一堆操作系统条件(例如has("32")),但保留原始的unix名称并在Windows主文件夹中创建符号链接到原始文件(到某个地方,也许是Windows主页中的目录,甚至是dropbox文件夹).(我没有在像Windows这样的旧版Windows中测试这种方法)..vimrcvimfiles.vim.vim

您更喜欢哪种解决方案?为什么?每种解决方案有哪些缺点?你有哪些其他解决方案?(您也可以.vimrc在这里发布自己的内容进行讨论.)

如果在.vimrc配置文件中使用某些源代码控制,那么您是否也对插件文件进行了版本控制(因此,当您在计算机上"部署"配置时,只需从存储库中进行检出/克隆)?很多人都在使用病原体并将每个插件保存在自己的文件夹中(通常是来自github的git repo).版本控制一个已经是其他地方的存储库的插件是否有意义?

DrA*_*rAl 8

我使用了近似于选项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 个:

  • 字体配置
  • ctags/cscope的路径,因为我在vimfiles中有一个Windows可执行文件,以便于在没有大量安装的情况下在多台PC上运行
  • 撤消目录位置
  • ,x用于最大化GVim窗口的mapping():在Windows和Linux中以不同方式完成
  • 在Windows上,vimtweak.dll的一些映射完全全屏(没有标题栏或任何东西).还没找到Linux的等价物.


Gab*_*art 7

我把它放在我的.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具有特殊含义).