在unix和windows机器之间同步vimrc和插件

时间:2012-10-21 06:12:35

标签: vim

我正在使用in this screencast描述的方法来保持我的vimrc和插件在多台计算机上同步。我遇到的问题是一台机器正在运行ubuntu而另一台正在运行win7。

到目前为止,我发现了两类问题。第一个似乎是行结尾。为了让我的windows vimrc在linux盒子上读取,我必须做:set fileformat=unix and write。但即使这样做,我也会遇到与所有插件类似的行结束问题:

jg@jg-VirtualBox:~$ vim ~/.vimrc
Error detected while processing /home/jg/.vimrc:
line   11:
E484: Can't open file /home/jg/vimfiles/plugin/autotag.vim
Error detected while processing /home/jg/.vim/plugin/DrawIt.vim:
line   60:
E492: Not an editor command: ^M
line   62:
E15: Invalid expression: &cp^M
line 1290:
E171: Missing :endif
Error detected while processing /home/jg/.vim/plugin/auto_number.vim:
line    5:
E488: Trailing characters

我可以像vim ~/.vim/**/*.vim一样加载它们然后:argdo set ff=unix | w以相同的方式修复所有文件,但这似乎是一种糟糕的方法,因为任何时候我更新git repo使用来自一台计算机的vimfiles并将其从另一台计算机中拉出来,我将不得不记住要进行此文件转换。还有更好的方法吗?

最后,vimrc中的某些配置细节(例如某些二进制文件的位置位置)将根据操作系统的不同而不同。处理这些差异的最佳方法是什么?我应该用if语句分支on(“gui_win32”)来改变我的.vimrc,还是有更好的方法?

谢谢!

1 个答案:

答案 0 :(得分:5)

是的,您必须在vimrc中添加分支以具有特定于机器/操作系统的设置。这并不像听起来那么肮脏:单if / ifelse / endif就够了。

另一种方法是将您的计算机/操作系统特定设置保存在单独的非版本控制文件中:因为它非常本地化,您不需要在其他计算机/操作系统上传播其内容。

您可以将这些设置放在~/.vim/vimrc.local中,并明确地将此文件添加到.gitignore~/.vimrc.local中的回购文件之外,并从您的vimrc中获取该文件。

Vim在Linux上使用Windows系列结尾时遇到了麻烦,但在Windows上处理Linux系列结尾时没有遇到麻烦。只需在任何地方使用Linux行结尾,你就可以了。