什么是用于 vim 映射?

什么是用于 vim 映射?

从 :help 命令中的键映射部分:

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

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

为了提供一个具体的例子来说明我的观点,下面是一个使用 F9 运行 Python 脚本的映射,这是我在 Stack Overflow 上找到的。我怀疑它的用途<buffer>,因为即使没有它,映射似乎也能正常工作:

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

答案1

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

为什么这很有用的一个例子是仅对特定文件类型有用的映射(在此示例中为 Python 文件)。

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

相关内容