<buffer> 用于 vim 映射的什么?

Dor*_*al6 6 remapping vim buffer

从 :help 命令,在键映射部分:

如果这些命令之一的第一个参数是<buffer>映射将仅在当前缓冲区中有效。

我不明白这个定义。不是所有命令都应用于​​您正在处理的缓冲区吗?它还提到您可以使用它<buffer>来将相同的组合键映射到不同缓冲区上的不同命令。仅从这一点来看,如果您想在处理文件时映射某些内容,我认为您会使用它,因此它不会影响其他缓冲区?我糊涂了。

为了提供我来自哪里的具体示例,以下是使用 F9 运行 python 脚本的映射,我在 Stack Overflow 上找到了它。我在质疑它的用途<buffer>是什么,因为没有它,映射似乎也能正常工作:

autocmd FileType python nnoremap <buffer> <F9> :!clear;python %<cr>
Run Code Online (Sandbox Code Playgroud)

Hep*_*ite 5

这意味着映射仅存在于定义它的缓冲区中。如果您切换到另一个缓冲区(文件),则映射在那里不起作用(存在)。

之所以有用的一个示例是仅对特定文件类型(在此示例中为 Python 文件)有用的映射。

通常,这些映射定义在filetype plugin每次加载该文件类型的新缓冲区时获取的源中。