2012-04-04 4 views
4

[SOLVED]解決策は、このようです:vimscriptを書くときのオプションの使い方は?

if exists('g:nameOfMyOption') && g:nameOfMyOption 
    ... 
endif 

それは非常に簡単ですが、私はオンライン答えを見つけることができません。プラグインファイルで次のようにしたい:

" MyChecker.vim 
" 
" Uncomment the following line to set the autochecker option 
"set autochecker=1 

if ISSET(autochecker) 
    autocmd InsertChange * :call MyAutoCheckerFunction() 
endif 

私はISSETラインをどうやって行うのですか?私はむしろ明示的にautocheckerを設定する必要はありません= 0、私はちょうどautocheckerが存在するかどうかをチェックしたいと思います。

編集:私は、次しようとすると:

if &autochecker == 1 
    ... 
endif 

を私は、このエラーメッセージが表示されます:

Error detected while processing MyChecker.vim: 
line 32: 
E113: Unknown option: autochecker 
E15: Invalid expression: &autochecker == 1 

答えて

6

あなたはvimの中でカスタムオプションを作成することはできません。私は次の関数を使用し、一般的なオプションについては

let g:AutoChecker = 1 

.... 

if g:AutoChecker == 1 
    " ... 
endif 
+0

Ah、ok。だから私は、ユーザーが "オプション"を変更したい場合は、彼らは自分の.vimrcに "let g:AutoChecker = 0"を入れなければなりませんか? – usul

+1

明示的にvarを設定していない場合は、exist()を使ってその存在をテストしたいと思うでしょう。これを参照してください:https://github.com/rson/vimscript-snippets/blob/master/idiomatic_plugin_mapping.vim#L13 –

+0

OK、それを行う方法を参照してください!この例も非常に役に立ちました。あなたがた両方に感謝します! – usul

1

:あなたは代わりのようなグローバル変数を作成する必要がありlh#option#get()。 最初にb:{varname}が存在し、その値を返す場合はg:{varname}を返します。それ以外の場合は、変数が1つも存在しない場合は、デフォルト値が返されます。

プログラミング関連のオプション(特定のファイルタイプでオプションを上書きできる)の場合は、別の関数、lh#dev#option#get()を使用します。

C++ Optionsセクションlh-cppのドキュメントは、これら2つの機能の背後にある理論的根拠を間接的に説明しています。

+0

これは本当にいいです。私は、他のスクリプトを使って構文認識テキストオブジェクトを使っています。そこに拡張機能の本当の宝庫があるようだ。 –

関連する問題