3

我正在使用此截屏视频中描述的方法来保持我的 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以相同的方式修复所有文件,但这似乎是一种糟糕的方法,因为任何时候我都用我的 vimfiles 从一台计算机更新 git repo 并从另一台计算机上提取它,我必须记住做这个文件转换。有没有更好的办法?

最后,vimrc 中的某些配置细节,例如某些二进制文件的位置,会因操作系统而异。处理这些差异的最佳方法是什么?我应该在我的 .vimrc 中添加 if 语句分支到 has("gui_win32"),还是有更好的方法?

谢谢!

4

1 回答 1

6

是的,您必须在 vimrc 中添加分支才能获得特定于机器/操作系统的设置。这并不像听起来那么脏:一个if/ ifelse/endif就足够了。

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

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

Vim 在 Linux 上处理 Windows 行结尾有问题,但在 Windows 上处理 Linux 行结尾没有问题。只需在任何地方使用 Linux 换行符就可以了。

于 2012-10-21T07:17:16.043 回答