为什么在vim中要使用Esc键?

20

Vi编辑器最初是在ADM-3A终端上编写的,该终端的Escape键代替了现代大多数键盘上的Tab键。许多触觉打字员欣赏他们可以将双手放在键盘主位而使用Vim,但使用Esc键则强制要求将手离开键盘主位去按Esc键。我正在学习vim。应该将Esc键重新映射到其他位置吗?这种情况下最常见的重新映射是什么?还是应该放弃重新映射Esc键并继续使用它?vim专业用户怎么做?


khachik: 但是人机工程学可以是客观的。为了一些非常普遍的操作而离开主键位意味着不良的人机工程学。 - mike3996
23
你为什么要复制部分文本(http://vim.wikia.com/wiki/Avoid_the_escape_key),其中已经给出了答案? - DaVinci
11个回答

23

ESC键的替代品是CTRL+[组合键。
(这是VIM的标准设置,无需重新映射任何内容。)

我经常使用这个快捷键代替ESC

此外,我将Caps Lock键重新映射为Ctrl键,这样打字更容易了。


15
这句话的意思是,“在终端中使用Ctrl+[键]通常被映射为ASCII码27,也就是ESC键。这种做法比它在VIM中的用法更普遍。传统上,按下Ctrl-A会产生ASCII码1,Ctrl-B会产生2,以此类推,Ctrl-Z会产生26。” - Pascal Cuoq
1
那么不要一直开启大写锁定来分散你的注意力,对吧? - user537488
@Pascal 实际上在vim中进行了映射,因此在gVim中也可以使用。请参阅:help ^[ - Swiss
2
为什么没有人告诉我Ctrl-[和Esc是一样的,我觉得我的手指一直往那个Esc键走是毫无意义的。顺带一提,我也像你一样使用大写锁定键,这个习惯也是从Emacs中学来的,但考虑到我经常按Ctrl-c,所以... - cdated
@user537488:通常不会闪烁——这取决于你如何映射它。我的 Gentoo Linux 不识别大写锁定键(因此根本不会闪烁),Windows XP 也是如此。另一方面,奇怪的是 Debian 会闪烁。LED 由操作系统控制,因此如果它看到 Ctrl 或 Esc 而不是大写锁定键,则不需要知道其他任何内容。 - mike3996

21

我将Escape键映射到了未被使用的Caps Lock键上。这是简化vim使用的常见方法。这篇文章提供了一些其他解决方案。如果你愿意,同样的文章也提供了使Escape-Capslock切换系统范围内生效的调整。


4
这类似于等效的Emacs界面:使用大写锁定键作为Ctrl键。其他任何按键都会让你疯狂。 - gimpf
2
将Caps Lock键重新映射为CTRL键,并使用CTRL+[代替ESC键是我认为更好的方法。在VIM中几乎一样好,在其他程序中甚至更好。 - sjas
@sjas,另一方面,支持C-[作为Esc的程序较少。(当然是指X应用程序。)当然,这样做可能更好。 - mike3996
这是针对vim而不是其他程序提出的特定要求。 :) - sjas
@sjas,嘿——你提到了“其他程序” ;) - mike3996
1
哈哈,是真的但不是故意的。我在想是否可以有一个更好用的CTRL键,你也可以在其他应用程序中使用它。因为在我看来,你需要CTRL键的频率比ESC键高得多。:D - sjas

8
我将按下键序列jk来实现Esc的功能。
你可能会问,当你遇到带有jk的单词时会发生什么。没问题。先打j,等待半秒钟,然后再打k。是的,这不是理想的方法,但是不用把手移动离开主键区的好处更为重要。
我强烈推荐使用jk序列作为`Esc`。
同样思路的其他变化包括jj - 在我个人看来并不适合我。我使用j向下移动 - 和其他人一样。

1
但是jj只能映射到插入模式。然而,如果一个人在可视化或命令行模式下花费了很多时间,那么像jk这样的映射就更有意义了!我之前没有想到过这一点。 - mike3996
2
@progo,你说得对。jj imap'd 可以正常工作。但我仍然倾向于 jk,这次我的论点是 jk 无论如何都是一个 NOOP(向下移动-向上移动)...就像 Esc一样。 - Jeffrey Jose

6
我将Esc键映射到了全局的Caps键。

在Linux中:

在你的主目录下创建一个名为“.Xmodmap”的文件,文件内容如下:

clear Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape

在Mac中:

下载一个名为“KeyRemap4MacBook”的程序,将Tab键映射为Esc键。

但是,在其他人的电脑上使用就会变得很麻烦。我是一个环境调整者,即使在标准设置下也像我的奶奶一样 :/


3

CtrlC 也可以用来直接退出。我将我的大写锁定键映射为 Ctrl,因为在许多情况下这对我更有用。


应谨慎使用Ctrl-C,因为大多数插件在接收到该命令时会出现不良反应...有时甚至会导致插件崩溃和难以复制的奇怪行为。 - akdom

2
我个人将<ESC>重新映射为ii
使用i进入插入模式,使用ii退出插入模式容易记忆。

2

我把我的映射为;;,现在我的右小指疼痛了,这是一个月编码后的结果。我认为选择jjjk是一个好决定。


1

0
imap jj <ESC>

其他人喜欢将“jk”或“leader-j”映射。我并没有像应该那样经常使用hjkl。


0

我将大写锁定键重新绑定为控制键,右控制键绑定为 Esc 键,现在按下 Esc 键非常方便。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接