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

Jon*_*nah 3 vim

我正在使用此截屏视频中描述的方法来保持我的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
Run Code Online (Sandbox Code Playgroud)

我可以做一些事情,比如vim ~/.vim/**/*.vim 加载它们然后:argdo set ff=unix | w以相同的方式修复所有文件,但这似乎是一个糟糕的方法,因为任何时候我用我的vimfiles从一台计算机更新git repo并从另一台计算机拉出它,我必须记得做这个文件转换.有没有更好的办法?

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

谢谢!

rom*_*inl 5

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

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

您可以将这些设置放入~/.vim/vimrc.local并明确地将此文件添加到.gitignorerepo中~/.vimrc.local或从vimrc中获取该文件.

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

  • 另一种处理lineendings的方法可能是使用Git设置(在Linux上尝试`git config --global core.autocrlf input`). (2认同)