3

このスクリーンキャストで説明されている方法を使用して、vimrc とプラグインを複数のマシン間で同期させています。私が直面している問題は、1 台のマシンが ubuntu を実行しており、もう 1 台のマシンが win7 を実行していることです。

これまでに 2 種類の問題が見つかりました。1つ目は行末のようです。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 リポジトリを更新し、別のコンピューターからプルするときはいつでも、このファイル変換を忘れずに行う必要があります。より良い方法はありますか?

最後に、特定のバイナリの場所の場所など、vimrc の特定の構成の詳細は、OS によって異なります。これらの違いを処理する最善の方法は何ですか? has("gui_win32") で分岐する if ステートメントを .vimrc に追加する必要がありますか、それとももっと良い方法がありますか?

ありがとう!

4

1 に答える 1

6

はい、マシン/OS 固有の設定を行うには、vimrc にブランチを追加する必要があります。それは思ったほど汚れていません: 単一のif/ ifelse/endifで十分です。

もう 1 つの方法は、マシン/OS 固有の設定を別のバージョン管理されていないファイルに保持することです。このファイルは非常にローカライズされているため、その内容を他のマシン/OS に伝達する必要はありません。

これらの設定を入れて、このファイルをリポジトリ内またはリポジトリ外に~/.vim/vimrc.local明示的に追加し、vimrc からそのファイルをソースすることができます。.gitignore~/.vimrc.local

Vim は Linux での Windows の行末処理に問題がありますが、Windows での Linux の行末処理には問題はありません。どこでも Linux の行末を使用するだけで問題ありません。

于 2012-10-21T07:17:16.043 に答える