Vim:Leader键无效

10
尝试使用 vim-latexsuite 的映射时,使用 Leader 的映射无法正常工作:
:nmap
----------------------------------------
n  <Leader>rf   @<Plug>Tex_RefreshFolds
n  <Leader>ls   @<Plug>Tex_ForwardSearch
n  <Leader>lv   @<Plug>Tex_View
n  <Leader>ll   @<Plug>Tex_Compile

这个插件的所有其他映射都有效,所以插件已经正确加载。如果没有设置mapleader,则Leader应该默认为\(反斜杠)。

在命令模式下键入\ll时,光标会向右移动2个字符,就像只键入ll一样。所以反斜杠好像被忽略了。Vim不会哔哔作响或显示任何错误,并且ll比1000ms早出现,这是我的timeoutlen

我还尝试了在.vimrc/etc/vimrc中进行以下设置(虽然我认为只需要设置mapleader):

let mapleader = ","
let maplocalleader = ","

此后,Vim 的行为方式将保持不变:无蜂鸣声,无错误,并且在输入,ll后,光标向右移动2个字符。

有什么想法可以解决这个问题吗?


1
当您键入 :echo mapleader 时,会得到什么结果?:verbose nmap \? - romainl
这里,:nmap:nmap <leader> 不会返回 n <Leader>b SomeCommand 而是 n ,b SomeCommand。请注意,<leader> 会被扩展为其值。在我这个外行人的眼中,似乎 mapleader 的值被设置为字符串 <Leader>,这看起来相当奇怪。 - romainl
1
这里可能不是这种情况,但这仍然是一个有用的小贴士。如果在加载插件后更改mapleader,则新的mapleader将不会成为该插件映射的一部分。mapleader还有另一个怪癖。 - Randy Morris
手动重新安装插件没有改变任何东西。还有更多的想法吗? - J0hn D0e
你是不是想要这样做::nnoremap <Leader>d dd 我把它添加到了我的 .vimrc 文件中,:nmap 返回 n <Leader>d * dd。当我输入 ",d" 时,在右下角只显示一个 "d"。所以它也不起作用。正如我在问题中所说,插件的其他映射是有效的。 - J0hn D0e
显示剩余4条评论
4个回答

11
如果你缩短了timeoutlen,你将无法快速输入。如果查看:help 'ttimeoutlen',会建议如下:
:set timeout timeoutlen=3000 ttimeoutlen=100

4

尝试清空~/.viminfo文件的内容,如果您正在使用会话插件,请清除生成文件中的会话数据。然后重新启动Vim。当我尝试不同的设置、映射等时,这有时会对我有所帮助。


1
这对我有用。我遇到了与原帖相同的问题,当我删除了 .viminfo 并重新加载后,重新映射的 leader 键按预期工作了。 - leonormes

1

卸载 Vim、删除所有插件和配置文件并重新安装后,Leader 功能正常。不幸的是,我不知道到底是什么原因导致 Vim 忽略了 Leader。


在我的情况下,我有一些冲突的“let mapleader”领导者更改,在一些错误的顺序中执行了几个~/.vim/ftplugin/tex_*.vim。按正确的顺序执行它们对我解决了问题,而无需重新安装。 - rfabbri

0
如果您在您的.vimrc中有这样的映射,
nmap <Leader>rf @<Plug>Tex_RefreshFolds

然后,运行nmap(不带参数)的输出应该是这样的:

n  \rf   @<Plug>Tex_RefreshFolds

换句话说,“<Leader>”应该扩展为“\”。如果您的映射不是这种情况,那么可能是出现了问题。这可能是由于在cpoptions中有“<”引起的。尝试使用set cpoptions?进行检查。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接