为什么该键重新映射在Vim中不起作用?
这个问题真让我抓狂。过去,我在Windows7下使用了Gvim和自动热键。出于各种原因,我将CTRL+D映射为类似Enter的行为。到目前为止,这项工作进展顺利。 在Gvim中,我映射了Enter/Return以充当翻页键:为什么该键重新映射在Vim中不起作用?,vim,key-bindings,gnome-terminal,autokey,Vim,Key Bindings,Gnome Terminal,Autokey,这个问题真让我抓狂。过去,我在Windows7下使用了Gvim和自动热键。出于各种原因,我将CTRL+D映射为类似Enter的行为。到目前为止,这项工作进展顺利。 在Gvim中,我映射了Enter/Return以充当翻页键: nnoremap <cr> <PageDown> nnoremap 这很有效。上周我决定再试一次Ubuntu 使用Autokey,我将CTRL+D重新映射为Enter keyboard.send_key("<enter>") 键盘
nnoremap <cr> <PageDown>
nnoremap
这很有效。上周我决定再试一次Ubuntu
使用Autokey,我将CTRL+D重新映射为Enter
keyboard.send_key("<enter>")
键盘。发送_键(“”)
这在Ubuntu/Xubuntu、browser/Chrome、文本编辑器等所有应用程序中都很好。我正在使用Gnome终端。在这里,CTRL+D的行为类似于Enter
当我在插入模式下的Vim中时,CTRL+D执行与Enter相同的操作。在正常模式下,我无法使用nnoremap获得预期的行为
我发现这很奇怪,因为CTRL+D在终端和Vim的插入模式下都工作得很好。当我按下“真实”回车键时。我得到了行为(在Vim中向下翻页),但在正常模式下映射CTRL+D时没有得到相同的行为。在插入模式下,其行为类似于Enter。我试图更改地图,以便检测问题,如:
nnoremap <return> <PageDown>
nnoremap <Enter> <PageDown>
nnoremap <cr> ij
nnoremap <CR> ij
nnoremap
nnoremap
nnoremap ij
nnoremap ij
到目前为止,在正常模式下使用CTRL+D时,它们都不起作用。我发现奇怪的是,它在插入模式和终端中工作得很好。我查阅了维姆的手册,想知道这里发生了什么。目前还没有结果
我使用Vim作为我的每日编辑,所以我对此感到非常愤怒,因为我不明白为什么这个问题会在正常模式下发生。有人知道那里发生了什么吗?我真的很感激你的帮助,因为这让我非常疯狂。我没有得到修复。所以我决定用另一种方式破解它 这是我的自动键脚本
winTitle = window.get_active_title()
if 'VIM' in winTitle:
output = "<f8>"
keyboard.send_key(output)
else:
output = "<PageDown>"
keyboard.send_key(output)
winTitle=window.get\u active\u title()
如果winTitle中的“VIM”:
output=“”
键盘。发送_键(输出)
其他:
output=“”
键盘。发送_键(输出)
你看,如果我有VIM窗口,CTRL+D将发送F8到VIM
我在Vim中映射了F8,如下所示:
map <f8> <CR>
nnoremap <CR> <PageDown>
map
nnoremap
它起作用了,但不是按照它的本意。但我似乎别无选择。感谢Zyx和romainl的帮助,非常感谢 Vim在正常模式下接收到什么?按
:
,将显示什么?如果它是默认的^M
(或任何其他可映射的),您可以使用:nnoremap
解决问题。谢谢您的回复。我在Vim的命令行中键入以下命令:然后我收到一个错误:E488:尾随字符。但我的命令中没有空格。为什么我会收到这个消息?@JuliusMartin尝试使用,而nr2char(getchar(1))!=“\”| echomsg字符串(getchar(1))字符串(nr2char(getchar()))| endwhile
:它应该以代码“字符”的形式回显接收到的字符。
。虽然当你在windows上时,我也会检查:
,因为你可能在某个地方有behave mswin
,这会重新映射
@JuliusMartin,或者,你误解了@IngoKarkat的意思。您不能按字面意思键入:
。您必须将
替换为CTRL-v,将
替换为重新映射到
的
。顺便说一下,尾随字符是尾随字符,而不是尾随空格。如果您按字面输入,Vim将把您的文本解释为: