2009-03-11 14 views
15

私は働いているすべてのマシンにvimrcを持ちますが、それは当然古いviにはないオプションを含んでいます。.vimrcでvi(not vim)を検出するには?

viがvimのエイリアスではないマシンでviセッションを開始した場合、またはvimがインストールされていないマシンでviセッションを開始した場合、viはvimrcを読み込み、迷惑なエラーを投げます。サポートされていません。

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

答えて

34

VIは、実際のvimへのリンクではない場合、それはの.exrcをお読みください、の.vimrc を読んではいけません。 .vimrcを読み込んでいるということは、それが実際にvimの以前のバージョンであることを示しています。

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

タイプ:

:help if 

詳細はvimの中にそのような場合には、このような新しい機能を、ブラケットに構築する「場合」、あなたはVimを使用することができます。

+0

タイプ:それはあるのVimのバージョンを把握するためのバージョンを。 –

+0

@anon、これはうまくいきましたが、 'vi --version'を実行すると、' VIM-Vi IMproved 7.2(2008 Aug 9、compiled Feb 17 2012 10:24:10) 'というようにVIMコンパイルされたviオフ。 「GUIのない​​小さなバージョン」という記述でさらに見ることができますが、なぜこれが機能しましたか?私は何かが欠けている。 – garg10may

6

非vimは.vimrcを読み込まないため、.exrcを探しています。 "if version> = 500"を使用して古いバージョンのvimを検出することができます

12

あなたのチェックでより具体的にするには、個々の機能もチェックできます。

私は私の.vimrcでこれを持っている:それは確かにVimの "VI" の名前でコンパイルされますので、

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


if has("autocmd") 
    " Buffers 
    autocmd BufEnter * cd %:p:h 
endif 
3

"VI" のvimrcを読み込みます。そして、おそらくあなたが「VI」を検出するために、「互換性」の機能をチェックしようとすることができますので、「互換性の非常にViのように、」コンパイルされます:

if !has("compatible") 
    let g:loaded_matchparen=1 
    syntax off 
endif 
関連する問題