5

...またはそのことについては、任意のモードで。

そのような場合に、一部の拡張機能が読み込まれないようにしたいだけです。

if ! currentmode('restricted')
     Bundle('some-extension')
endif
4

2 に答える 2

5

あなたが正しい; のような特別な変数v:vimmodeは役に立ちますが、現在そのようなものは存在しないと思います。これをvim_devメーリングリストに上げてみませんか?!

それまでの間、制限モードで禁止されている何かを呼び出した結果からモードを検出する必要があります。成功への影響が最も少ない私の最良のアイデアはwritefile()、空のファイル名で呼び出すことです。

silent! call writefile([], '')
" In restricted mode, this fails with E145: Shell commands not allowed in rvim
" In non-restricted mode, this fails with E482: Can't create file <empty>
let isRestricted = (v:errmsg =~# '^E145:')
于 2013-05-22T11:34:35.477 に答える
2

これが良い考えかどうかはわかりません:

restricted-mode外部コマンドを無効にしました(一部の関連機能も)。rvim で外部コマンドまたは特定の関数を呼び出すと、 Error が返されE145ます。

したがって、 を介してダミーの外部コマンドを呼び出すだけでsystem()、 Exception をキャッチできますE145。制限モードかどうかを区別します。例えば

try
    call system("echo x") "or even call system("")
catch /E145/
"your codes
endtry

それが役に立てば幸い

于 2013-05-22T11:35:40.940 に答える