如果我按住引导键并进行多次组合,则引导键将被忽略

问题描述 投票:0回答:2

当我执行

<c-o><c-o><c-o>
并按住控制键时,它会在跳转列表中向后跳转 3 次,但如果我执行
noremap <leader>o <c-o>
然后
<leader>o<leader>o<leader>o
,并像我使用 control 一样按住前导键,它会第一次向后移动然后进入编辑模式并添加一个o。如果我们按住引导键,它就会被忽略。

有解决办法吗?

vim
2个回答
12
投票
当您键入其他键时,

修饰键(如CtrlAltShift)可以保持按下状态;所有键都将接收修饰符。这是键盘输入的一个功能,Vim 没有什么特别的。

对于 Leader 键,您不能指定修饰符。 它必须是“真实”键(可能带有修饰符)。由于领导者键只是开始映射序列,因此您不能按住它。您能实现的最接近的是它的重复映射:

:nnoremap <Leader><Leader> :echo "pressed twice"<CR>

如果你想定义一个可以通过单次按键重复的映射,你必须使用带有(例如

<C-g>
<A-g>
)或不带(Vim 中没有多少剩余,也许
,)的单个键
)。


0
投票

您可以使用递归映射并将

<leader>
键附加到映射中。

这是我的

.vimrc
例如:

let mapleader=" "
nnoremap <leader>t :tab sbuffer<cr>
nnoremap <leader>x :tabclose<cr>
nmap <leader>j :tabprev<cr><space>
nmap <leader>k :tabnext<cr><space>

注意:我使用

<space>
作为我的 Leader 键;编辑映射以适合您的领导者键。

© www.soinside.com 2019 - 2024. All rights reserved.