web-dev-qa-db-ja.com

<buffer>はvimマッピングで何に使用されますか?

:helpコマンドのキーマッピングセクションから:

これらのコマンドのいずれかの最初の引数が<buffer>の場合、マッピングは現在のバッファーでのみ有効になります。

私はこの定義を理解していません。作業中のバッファーにすべてのコマンドが適用されていませんか?また、この<buffer>を使用して、同じキーの組み合わせを異なるバッファー上の異なるコマンドにマップできることにも言及しています。それだけで、ファイルの操作中に何かをマップしたい場合に使用すると思います。他のバッファーには影響しませんか?よくわかりません。

私がどこから来たのかについて具体的な例を示すために、以下は、StackOverflowで見つけたF9でpythonスクリプトを実行するためのマッピングです。 <buffer>は、マッピングがなくても問題なく機能するように見えたためです。

autocmd FileType python nnoremap <buffer> <F9> :!clear;python %<cr>
4
Dorsal6

これは、マッピングが定義されたバッファーにのみ存在することを意味します。別のバッファ(ファイル)に切り替えると、マッピングは機能しません(存在します)。

これが役立つ理由の一例は、特定のファイルタイプ(この例ではPythonファイル)にのみ役立つマッピングです。

通常、これらのマッピングはfiletype pluginで定義され、そのファイルタイプの新しいバッファがロードされるたびにソースが取得されます。

2
Heptite