16

私は非常に速く入力し、1 つの ;または :. (コマンドを入力すると、タイプミスが発生することがあり:wq ます。)

特定の名前に一致するファイルの保存を拒否するマクロを作成する方法はありますか?

4

1 に答える 1

17

シンプルでありながら効果的な解決策は、タイプミスの可能性があるファイル名に一致する自動コマンドを定義することです。これにより、警告が発行され、保存が終了します。

:autocmd BufWritePre [:;]* throw 'Forbidden file name: ' . expand('<afile>')

この:throwコマンドは、Vim にバッファーの内容の書き込みを停止させるために必要であることに注意してください。

E605例外がキャッチされないためにエラーが発生するのを回避するために、ブロック:echoerr内で実行されるコマンドを使用してエラーを発行できますtry。 <code>:echoerr は、try構成内から呼び出されたときに例外としてエラー メッセージを生成します (「 」を参照:help :echoerr)。

:autocmd BufWritePre [:;]*
\   try | echoerr 'Forbidden file name: ' . expand('<afile>') | endtry

上記の自動コマンドで使用されたパターンに一致する名前でファイルを保存する必要がある場合は、書き込みコマンドを先頭に追加するか、それに応じてオプション を:noautocmd設定できます (詳細については、およびを参照)。eventignore:help :noautocmd:help eventignore

:noa w :ok.txt
于 2011-06-02T07:03:44.023 に答える