我正在尝试映射<S-j>
来滚动以前的冒号命令。因此,<S-j>
代替了:
和<Up>
。
nnoremap <S-j> :<Up>
此绑定的问题是,滚动倒数第二个冒号命令实际上是:<Up><Up>
,但是如果您按两次<S-j>
,则会得到:<Up>:<Up>
。
如何正确映射它,以便在命令栏中没有:<Up>
时输出<Up>
,如果命令栏中已经有文本,则输出{{1}}
答案 0 :(得分:2)
我看不到你的行为。如果我按两次<S-j>
(顺便说一句J
,这是一种令人费解的方式),则会得到前一个命令行加上文字字母J
。您的命令是为正常模式定义的;由于右侧的:
会以命令行模式结尾。 J
= <S-j>
在那里不映射(至少不是:nnoremap
映射)。
为了能够重复J
,您必须为命令行模式定义其他映射:
:cnoremap <S-j> <Up>
由于您已经在命令行中,因此可以省去:
。
但是,我不建议您这样做,因为它将使您无法直接输入大写字母J(您仍然可以通过<C-v>J
或您想说的<C-v><S-j>
来输入大写字母J)。最好切换到使用不可打印字符(例如<C-j>
)的映射。