Vim中的缓冲区本地Map:< buffer>与< localleader>

i1icjdpr  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(206)

有一件事让我很感兴趣,如果想要Map特定于某个缓冲区的Map,可以选择任何一种方法
a)使用

nnoremap <buffer> d dd

B)或与

nnoremap <localleader>d dd

这将有效地使Map也特定于该缓冲器。
在某种程度上,这看起来像是做同一件事的两种重叠的方法。使用一种方法而不是另一种方法有什么原因吗?可能是因为某种原因,一种方法比另一种方法更受欢迎吗?

q8l4jmvw

q8l4jmvw1#

据我所知,maplocalleader是在缓冲区之间共享的,这意味着你的第二个Map不是特定于缓冲区的。
实际上,如果你定义的是一个特定于缓冲区的Map(例如,Map只与特定的文件类型相关),我认为惯例是使用<buffer><localleader>。如果你定义的不是特定于缓冲区的Map,你应该只使用<leader>

raogr8fs

raogr8fs2#

1个月

这对于防止特定文件类型的Map在仅打开过一次该文件类型的情况下变为全局Map非常重要。

两个<LocalLeader>

这适用于全局。作为described by R2A2,您可以将<LocalLeader>Map为<Leader>的方便替代。在您的vimrc中的某个地方:

let maplocalleader = '_'
nnoremap <localleader>h :echo 'you just hit _h'<cr>

你可以使用<localleader><buffer>,就像Vim内部帮助中推荐的那样,对于你的ftplugin,那么_h只能在那种文件类型下工作。

相关问题