4

説明:

最近、git リポジトリから .vimrc ファイルを取得しましたが、これまでのところ非常に便利です。付属の便利なツールの 1 つは、ファイルを書き込むときに末尾の空白を自動的に削除することです。

しかし、私はマークダウンを使い始めたばかりで、テキスト ファイルの記述方法が明確な形式であり、それらのファイルを html などのさまざまなタイプに簡単に変換できます。

問題は、マークダウンが 2 つの末尾のスペースを使用して改行を示すことです。私の .vimrc はこれらを自動的に削除します。これを行う autocmd を見つけました。それは:

autocmd BufWrite * :call DeleteTrailingWS()

DeleteTrailingWS は、空白を実際に削除する関数です。

私の質問:

ファイルのタイプがマークダウンでない場合にのみこの autocmd を実行/設定するように変更するにはどうすればよいですか? (.md) 上記の関数だけでなく、一般的な関数を呼び出せるように説明してください。また、複数のファイルタイプでこれを行うにはどうすればよいですか。たとえば、ファイルのタイプが .md、.abcd、または .efgh でない場合にのみ、このコマンドを実行または設定します。

皆さん、ありがとうございました。

4

4 に答える 4

2

クリスチャンの答えは、いくつかのファイルタイプを除外したい場合にうまく機能します。いくつかのファイルタイプだけに autocmds を定義する他のケースでは、通常のアプローチは、バッファローカル autocmds を次のように定義することです。

:autocmd BufWrite <buffer> call ...

これは、他の先頭に追加され:autocmd Filetype ... autocmd ...た 、またはファイルタイプのプラグインを介して行うことができます~/.vim/ftplugin/...

于 2014-12-06T20:03:07.927 に答える
2

堅牢なソリューションについては、私のDeleteTrailingWhitespace プラグインをご覧ください。ShowTrailingWhitespace プラグインと一緒に、Markdown などのファイルタイプを (カスタマイズ可能な方法で) 既に検出してから、例外を追加します (単純にオフにするよりもきめ細かく。つまり、2 つ以上のスペースを許可しますが、Markdown の末尾のタブは引き続き強調表示します)。

于 2014-12-06T20:06:43.907 に答える
1

auto コマンドの*は、実行するファイルの種類を指定するため、 に置き換えるだけで済み*.mdます。

autocmd BufWrite *.md :call DeleteTrailingWS()
于 2014-12-06T20:02:09.393 に答える