1

这个问题让我非常抓狂。我过去在 Windows 7 下使用过 Gvim 和 Autohotkey。由于各种原因,我将 CTRL+D 映射为类似于 Enter 的行为。到目前为止,这运作良好。在 Gvim 中,我将 Enter/Return 映射为向下翻页键:

nnoremap <cr> <PageDown> 

这工作得很好。上周我决定再试一次 Ubuntu。

使用 Autokey,我将 CTRL+D 重新映射为类似于 Enter 的行为。

keyboard.send_key("<enter>")

这适用于 Ubuntu/Xubuntu、浏览器/Chrome、文本编辑器等所有内容。我正在使用 Gnome 终端。在那里,CTRL+D 的行为类似于 Enter。

当我在 Vim 中处于插入模式时,CTRL+D 的作用与 Enter 相同。在正常模式下,我没有得到 nnoremap 的预期行为。

我觉得这很奇怪,因为 CTRL+D 在终端和 Vim 的插入模式下运行良好。当我按“真实”回车时。我得到了行为(Vim 中的 Page down),但在正常模式下映射的 CTRL+D 没有得到相同的行为。在插入模式下,它的行为类似于 Enter。我试图更改地图,以检测问题,例如:

nnoremap <return> <PageDown>

nnoremap <Enter> <PageDown>

nnoremap <cr> ij

nnoremap <CR> ij

到目前为止,它们都没有在正常模式下使用 CTRL+D 工作。我觉得奇怪的是它在插入模式和终端中运行良好。我查看了 Vim 的手册以了解这里的内容。至今没有结果。

我使用 Vim 作为我的日常编辑器,所以对此我感到非常生气,因为我不明白为什么在正常模式下会出现此问题。有谁知道那里发生了什么?我真的很感谢你的帮助,因为这让我真的很疯狂。

4

1 回答 1

1

我没有修好。所以我决定用另一种方式破解它。

这是我的自动键脚本

winTitle = window.get_active_title()
if 'VIM' in winTitle:
    output = "<f8>"
    keyboard.send_key(output)

else:
    output = "<PageDown>"
    keyboard.send_key(output)

你看,如果我有 VIM 窗口,CTRL+D 会将 F8 发送到 Vim。

我在 Vim 中映射 F8 是这样的:

map <f8> <CR>
nnoremap <CR> <PageDown>

它起作用了,但不是按照它的本意。但我似乎别无选择。感谢 Zyx 和 romainl 的帮助,非常感谢!

于 2014-05-24T19:00:05.937 回答