検索時の出力メッセージを変更したいのですが。
非常に長い正規表現で検索を行っても何も見つからなかった場合、vimはメッセージを返しますE486: Pattern not found: .... very long regex code ...
出力をキャプチャして、このメッセージを変更したいと思います。これどうやってするの?
この:s[ubstitute]
コマンドには/e
エラーを抑制するためのフラグがありますが、AFAIKは:silent /foo
そのエラーメッセージを抑制しません。まあ、とにかく、あなたはそれを抑制したくはありません、あなたはそれを「捕らえ」そして何か他のものを見せたいのです。
すべての言語と同様に、vimscriptには独自のがありtry/catch
ます。:h :try
あなたはそれについてページのさらに下で読むことができます。
try
/foo
catch /^Vim\%((\a\+)\)\=:E486/
let @n = v:exception
echo "No luck!"
endtry
try/catch
あなたはあなたがする関数であなたnoremap
を包むことができます/
あなたはvimscriptでエラーメッセージをキャッチすることについて話していると思います。
次に、チェックアウトすることをお勧めしますcatch
::h catch
*:cat* *:catch* *E603* *E604* *E605*
:cat[ch] /{pattern}/ The following commands until the next |:catch|,
|:finally|, or |:endtry| that belongs to the same
|:try| as the ":catch" are executed when an exception
matching {pattern} is being thrown and has not yet
been caught by a previous ":catch". Otherwise, these
commands are skipped.
When {pattern} is omitted all errors are caught.
Examples: >
:catch /^Vim:Interrupt$/ " catch interrupts (CTRL-C)
:catch /^Vim\%((\a\+)\)\=:E/ " catch all Vim errors
:catch /^Vim\%((\a\+)\)\=:/ " catch errors and interrupts
:catch /^Vim(write):/ " catch all errors in :write
:catch /^Vim\%((\a\+)\)\=:E123/ " catch error E123
:catch /my-exception/ " catch user exception
:catch /.*/ " catch everything
:catch " same as /.*/
ブロックでtry
検索を実行すると、エラーメッセージをキャッチして、好きなことを実行できます。