20

私は自分が作業しているすべてのマシンにvimrcを持ち歩いており、古いviには存在しないオプションが当然含まれています。

vi が vim のエイリアスではない、または vim がインストールされていないマシンで誤って vi セッションを開始した場合、vi は vimrc を読み取り、多数の厄介なエラーをスローして、そのようなオプションがサポートされていないことを知らせます。

「vi」の代わりに「vim」と入力し、EDITOR変数をvimに設定できることはわかっていますが(visudoなどの場合)、スクリプトを終了するvimrcの先頭に追加できる行はありますかファイルがviによって読み取られた場合は早いですか?

4

4 に答える 4

39

vi が実際には vim へのリンクでない場合は、.vimrcを読むべきではなく、 .exrcを読むべきです。.vimrc を読み取っているという事実は、実際には以前のバージョンの vim であることを示しています。その場合は、vim の "if" 構造を使用して、次のように新しい機能を括弧で囲むことができます。

:if version >= 500
:  version-5-specific-commands
:endif

タイプ:

:help if

詳細については、vim の場合。

于 2009-03-11T23:13:39.423 に答える
14

チェックをより具体的にしたい場合は、個々の機能もチェックできます。

私は.vimrcにこれを持っています:

if has("eval")
    " Syntax stuff
    let java_highlight_all=1
endif


if has("autocmd")
    " Buffers
    autocmd BufEnter * cd %:p:h
endif
于 2009-06-29T11:22:47.047 に答える
6

非 vim は .vimrc を読み取らず、.exrc を探しています。「if version >= 500」を使用して古いバージョンのvimを検出できます

于 2009-03-11T23:14:36.287 に答える
3

「vi」は、「vi」という名前でコンパイルされた Vim であるため、vimrc を読み取ります。また、「Vi との互換性が非常に高い」ようにコンパイルされている可能性が高いため、機能「互換性」をチェックして「vi」を検出できます。

if !has("compatible")
   let g:loaded_matchparen=1
   syntax off
endif
于 2013-02-10T01:33:22.580 に答える