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

时间:2010-10-15 13:44:26

标签: cross-platform vim

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

  1. /home/user中为vim文件创建一个新文件夹,因此两个系统都具有相同的vim目录名(而不是Linux中的默认.vim和Windows中的vimfiles),以及使用set runtimepath获取此新文件夹;

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

    Source

  2. 根据平台或capabilities在需要时在has("32")中创建一堆操作系统条件(如.vimrc),但保留原始的unix名称并在Windows中创建符号链接主文件夹到原始文件(某处vimfiles.vim,Windows Home中可能是.vim目录,甚至是Dropbox文件夹。 (我没有在像Windows这样的旧版Windows中测试过这种方法。)

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

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

2 个答案:

答案 0 :(得分:8)

我使用了近似选项2的内容,但可能考虑了选项3.我将所有内容保存在名为~/.vimc:\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块内:

  • 字体配置
  • ctags / cscope的路径,因为我在vimfiles中有一个Windows可执行文件,以便在没有大量安装的情况下让它在多台PC上运行
  • 撤消目录位置
  • 用于最大化GVim窗口的映射(,x):在Windows&amp;的Linux
  • 在Windows上,vimtweak.dll的某些映射完全全屏(没有标题栏或任何内容)。还没找到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有一个特殊意义)。