2010-10-15 92 views
14

当在Linux和Windows(两个系统我一直使用至今).vimrc配置文件,并试图保持配置的跨平台打交道,我发现主要有两种解决方案:每种vimrc跨平台解决方案的优缺点?

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

    组runtimepath =〜/ vim_local,$ VIMRUNTIME 源〜/ vim_local /的vimrc

    Source

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

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

如果您使用您的.vimrc配置文件的一些源代码控制,你版本的插件文件,以及(所以当“部署”跨计算机的配置,你只从你的仓库中做结帐/克隆)?很多人使用pathogen并将每个插件保存在自己的文件夹中(通常是github的git repo)。版本控制插件是否已经是其他地方的存储库?

回答

8

我使用了一些近似于选项2的东西,但可能考虑了选项3.我将所有内容都放在一个名为~/.vimc:\vim\vimfiles的文件夹中。这些版本受Bazaar控制,并通过sftp访问保存在服务器上。当一个新的Windows机器上安装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 

它打开存储在.vim(或Windows上的vimfiles)中的名为vimrc的文件。这使我可以将我的vimrc保持在与.vim目录其余部分相同的版本控制下。由于我通常在Windows上使用cygwin Bazaar,因此我将所有插件保留为unix行结尾,以避免兼容性问题(Linux vims在插件中处理unix行结尾,但Linux不喜欢Windows行结尾)。

版本控制的使用允许我保持所有我非常容易同步使用的PC,如果我安装了一个插件并且不喜欢它,我可以很容易地恢复更改,而无需考虑哪些文件由该插件安装(VCS告诉我)。

至于os条件,我用has("win32")等来区分。但是,很少有需要这种差异的情况,所以这是一个小小的不便。我的vimrc是1000线长(有,我从来没有得到全面分裂伸到插件相当多的功能),只有约10-15是has块内部:

  • 字体配置
  • 路径到的ctags/cscope的,因为我有在vimfiles一个Windows可执行文件,便于得到它在多台PC的工作没有大量的安装
  • 撤消目录位置的
  • 一种最大化的GVim窗口映射(,x):这是不同的做法在Windows & Linux
  • 在Windows上,vimtweak.dll的某些映射完全全屏(无标题栏或任何内容)。还没有找到一个相当于Linux的。
+0

感谢您分享您的设置。这里有一些有趣的方法。 – 2010-10-15 14:25:56

+0

我使用相同的方法,它工作得很好。 – 2010-10-17 23:00:15

6

我把这个在我的.vimrc

set runtimepath^=~/.vim "Use instead of "vimfiles" on windows 

所以vim的目录名保持两个平台上。我可以使用os的条件只在Windows上运行。

我发现最好是尽可能unixy,即使在windows上也是如此。我默认情况下使用UNIX行结束(你不想在VIM配置一个CR,尤其是):

set fileformats=unix,dos,mac 

和平台的具体字体:

set guifont=Consolas:h12,Monaco:h15,Inconsolata:h12 
我还使用版本

控制(git/github)为我的主目录中的dotfiles/config/etc,并且它工作得很好。唯一的技巧是正确设置被忽略的文件,这样我就不会经常被告知我不想版本的所有文件(我不得不使用.git/info/exclude,因为home文件夹中的.gitignore有特殊含义)。

+1

“我发现最好尽可能地使用unixy,即使在windows上也是如此。”有趣的方法,这也是我的想法。 – 2010-10-15 16:15:08

+1

最好预先加上“〜/ .vim”,否则“call pathogen#helptags()”在查找doc目录(给定一个空/过时〜/ vimfiles/doc)时会失败。 – blueyed 2010-12-01 10:59:52

+0

@blueyed,谢谢。修复(在问题和我的本地配置) – 2010-12-03 15:46:14