![什么是用于 vim 映射?](https://linux22.com/image/1533735/%E4%BB%80%E4%B9%88%E6%98%AF%E7%94%A8%E4%BA%8E%20vim%20%E6%98%A0%E5%B0%84%EF%BC%9F.png)
从 :help 命令中的键映射部分:
如果这些命令之一的第一个参数是
<buffer>
映射,则映射将仅在当前缓冲区中有效。
我不明白这个定义。难道不是所有命令都应用于您正在处理的缓冲区吗?它还提到您可以使用它将<buffer>
相同的组合键映射到不同缓冲区上的不同命令。仅从这一点来看,我认为如果您想在处理文件时映射某些内容,您会使用它,这样它就不会影响其他缓冲区?我很困惑。
为了提供一个具体的例子来说明我的观点,下面是一个使用 F9 运行 Python 脚本的映射,这是我在 Stack Overflow 上找到的。我怀疑它的用途<buffer>
,因为即使没有它,映射似乎也能正常工作:
autocmd FileType python nnoremap <buffer> <F9> :!clear;python %<cr>
答案1
这意味着映射仅存在于定义它的缓冲区中。如果切换到另一个缓冲区(文件),映射将在那里不起作用(不存在)。
为什么这很有用的一个例子是仅对特定文件类型有用的映射(在此示例中为 Python 文件)。
通常,这些映射是在filetype plugin
每次加载该文件类型的新缓冲区时获取的。