我是一名经验丰富的 vim 用户,现在开始使用 GNU emacs。大约在我了解到Ctrl-p和Ctrl-n是 emacs 中向上和向下的默认值的同时,我还了解到它们是 vim 中正常模式下 k 和 j 的变体。
有谁知道这些快捷方式的起源吗?我认为逻辑上它们来自 p(revious) 和 n(ext),或者可能是 (u)p 和 (dow)n,但我问的是它们属于什么计划、系统或标准。几个随机的 emacs 快捷方式似乎不太可能被借用到 vim 中,因此它们包含在两者中让我认为它们可能早于 emacs 和 vim。*
使用谷歌很难找到击键问题的答案,但有趣的是,在看似全面的指南中,它们并没有被称为“箭头键”维基百科文章。
*感谢 Thomas Dickey 和 Mark Plotnick 在评论中指出,相关快捷方式记录在 1984 vi(原文如此)中,并且1978 年 emacs 参考有效,但我认为共同起源的问题仍然存在。
答案1
我无法提供任何类型的证明,但Ctrl-P和Ctrl-N属于emacs
键绑定,与vi
绑定(bindkey -e
vs. bindkey -v
)相反。在这个前提下,你应该寻找一个解释本身emacs
。
emacs
' 教程告诉
有多种方法可以做到这一点。您可以使用箭头键,但将手保持在标准位置并使用命令 Cp、Cb、Cf 和 Cn 会更有效。这些字符相当于四个箭头键,如下所示:
- 上一行,Cp
- 向后,Cb
- 前锋,比照
- 下一行,CN
对于普通vi
用户来说似乎不方便,但绝对有意义。
答案2
Control+P和Control+N是 1976 年 TECO EMACS 的一部分。Guy Steele 被认为是 EMACS 命令集的鼻祖,综合了当时使用的许多基于 TECO 的文本编辑器。其他编辑器具有类似的光标移动命令,但并不完全相同。