在unix和windows计算机之间同步vimrc和插件
我使用所描述的方法在多台机器上保持vimrc和插件的同步。我遇到的问题是一台机器运行ubuntu,另一台运行win7 到目前为止,我发现了两种类型的问题。第一种似乎是以行结尾。为了让我的windows vimrc在linux机器上被读取,我必须执行在unix和windows计算机之间同步vimrc和插件,vim,Vim,我使用所描述的方法在多台机器上保持vimrc和插件的同步。我遇到的问题是一台机器运行ubuntu,另一台运行win7 到目前为止,我发现了两种类型的问题。第一种似乎是以行结尾。为了让我的windows vimrc在linux机器上被读取,我必须执行:设置fileformat=unix并写入。但即使这样做了,我也会在所有插件上遇到类似的行尾问题: jg@jg-VirtualBox:~$ vim ~/.vimrc Error detected while processing /home/jg/.v
:设置fileformat=unix并写入。但即使这样做了,我也会在所有插件上遇到类似的行尾问题:
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
以相同的方式修复所有文件,但这似乎是一个糟糕的方法,因为每当我从一台计算机用我的vim文件更新git repo并从另一台计算机中提取它时,我都必须记住进行此文件转换。有更好的办法吗
最后,vimrc中的某些配置细节,例如某些二进制文件的位置,将因操作系统而异。处理这些差异的最佳方法是什么?我应该在我的.vimrc中添加在has上分支的if语句(“gui_win32”),还是有更好的方法
谢谢 是的,您必须在vimrc中添加分支,以具有特定于机器/操作系统的设置。这并不像听起来那么肮脏:一个if
/ifelse
/endif
就足够了
另一种方法是将特定于机器/操作系统的设置保存在一个单独的非版本控制文件中:因为它非常本地化,所以不需要在其他机器/操作系统上传播其内容
您可以将这些设置放在~/.vim/vimrc.local
中,并明确地将该文件添加到.gitignore
或~/.vimrc.local
中的repo之外,并从您的vimrc获取该文件
Vim在Linux上处理Windows行结束时有问题,但在Windows上处理Linux行结束时没有问题。只要在任何地方都使用Linux行结束符,就可以了。处理行结束符的另一种方法是使用Git设置(在Linux上尝试Git config--global core.autocrlf input
)。