当我的 esc 键不起作用时如何向 vim 发送 ESC 信号?

San*_*oss 31 vim

Esc当我想从插入模式返回交互模式时,我遇到了键问题。是否存在另一个用于释放插入模式的键。

Dop*_*oti 58

Ctrl-[向终端发送与物理Esc键相同的字符。一般来说,后者只是前者的捷径。

  • 我曾经有一个真正的 vt220 终端,它的键盘没有“Escape”键。按 `Ctrl+[` 是生成 `Escape` 的唯一方法。 (4认同)

gro*_*mal 14

如果您希望能够使用单个键,作为纯 *nix 解决方案(没有 Vim 映射),您可以将另一个键定义为Esc. 就像 Emacs 用户重新映射CapsLockCtrl某些 Vim 用户(包括我在内)重新映射CapsLockEsc. 这适用于任何使用 X11 的 *nix。

使用xev -event keyboard(然后按CapsLock)获取键的CapsLock键码(对我来说是键码 66)。然后您可以使用xmodmap重新映射密钥:

xmodmap -e 'remove Lock = Caps_Lock' -e 'keycode 66 = Escape'
Run Code Online (Sandbox Code Playgroud)

要在登录时获得此信息,您可以添加如下xmodmap表达式~/.Xmodmap

remove Lock = Caps_Lock
keycode 66 = Escape
Run Code Online (Sandbox Code Playgroud)

尽管对于第二部分 YMMV,由于并非所有显示管理器都运行~/.Xmodmap. 您可能需要添加xmodmap .Xmodmap.xinitrc其中一些。


vat*_*sug 8

你可以试试 Ctrl-C,这对我有用,在我看来比 ESC 更容易。但是我不确定它是否默认启用。

  • @cat:你确实可以免费获得它,因为 vim 有那个处理程序。你不必自己做任何事情。这个答案开箱即用;我刚试过。它_一般_适用于任何应用程序吗?不,但这不是我们所要求的。 (2认同)
  • @猫:真的吗?标题是_"当我的esc键不起作用时如何向vim发送ESC信号?"_,唯一的标签是[tag:vim],问题中描述的问题是关于逃避Vim的插入模式。这是问题的总结部分:_“是否存在另一个用于释放插入模式的键。”_ 如果这不是 Vim 及其插入模式特有的,那么我不知道是什么! (2认同)
  • @LightnessRacesinOrbit 好吧,当我最初看到标题时,它是“用于 Esc 的另一个键”,而且这个问题根本不是针对 `vim` 的。对不起!¯\_(ツ)_/¯ (2认同)

Kon*_*lph 8

尽管有现有的解决方案,但Vim 中的传统解决方案是在您的.vimrc配置中重新映射键。事实上,许多 Vim 用户都有一个更容易访问的键重新映射到Esc. 流行的选择是Ctrl+ Enter、 或jj等。

要启用此功能,只需将以下内容放入您的.vimrc并重新加载/重新启动 Vim:

" Shift-Enter
inoremap <S-CR> <Esc>
" Double-j
inoremap jj <Esc>
Run Code Online (Sandbox Code Playgroud)

更多信息和替代方案