Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么该键重新映射在Vim中不起作用?_Vim_Key Bindings_Gnome Terminal_Autokey - Fatal编程技术网

为什么该键重新映射在Vim中不起作用?

为什么该键重新映射在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>") 键盘

这个问题真让我抓狂。过去,我在Windows7下使用了Gvim和自动热键。出于各种原因,我将CTRL+D映射为类似Enter的行为。到目前为止,这项工作进展顺利。 在Gvim中,我映射了Enter/Return以充当翻页键:

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将把您的文本解释为