Emacs按键绑定名人堂/耻辱榜

3

在开发软件中,哪些是最好的和最糟糕的emacs键绑定?自从我学会以来,我发现自己试图使用C-p和C-n在所有具有文本框的东西中上下移动。

我总是被一些明显由从未使用过emacs的人组合或以低劣方式完成的emacs模式所困扰。因此,在这个帖子中让我们认识到胜者和失败者。

6个回答

9

勇敢的尝试

在编辑时,Eclipse的Emacs绑定还不错。但是,在某些对话框中,它们会神秘地崩溃,复制变成了C-c,粘贴变成了C-v。这很烦人。

一个很好的 Mac OS 附加功能

在 Mac OS 上,所有Cocoa应用程序都支持基本的emacs键绑定。这非常有用,因为本机Mac应用程序不使用控制键,所以没有冲突的机会。这也意味着您几乎可以拿起Mac上的任何文本编辑器(或字处理软件)并具备至少基本的Emacs键。

一个意想不到的好处

甚至这意味着使用 Swing GUI 工具包的 XML 编辑器 Oxygen,只有在 Mac 上才支持Emacs键绑定。我认为这是因为Apple实际上使用了重量级(Cocoa)文本小部件来实现他们在LAF中的Swing文本小部件。

在其他平台上,我经常使用 Oxygen 的 Eclipse 插件版本,只是为了恢复我的键绑定。

难看

G^%$&^% F^%$ StackOverflow,用一些 Javascript 糟糕的东西覆盖了 Mac 上的一些 Cocoa Emacs 绑定。非常烦人。

C-k (kill-line)     is bound to (insert-this-crap `print("code sample");`)
C-b (backward-char) is bound to (insert-this-crap **strong text**)
C-e, C-a, C-p, C-f, C-n work as expected.

这些SO快捷键既没有文档说明,也似乎不可自定义。它们也不是特别有用。
在这里报告了一个错误:http://stackoverflow.uservoice.com/pages/general/suggestions/72686

很高兴了解到有Cocoa支持!+1 - jkp
所描述的stackoverflow问题发生在Lion中,尽管它也会在Snow Leopard中出现。:((在两个系统上使用Google Chrome测试) - Arafangion

6

[这是一个来自编辑器的糟糕 EMACS 绑定的例子,甚至不试图像 EMACS 那样。]

我曾经发现自己在 Solaris 上的 EMACS 和 PRIMOS 上的 SOL 之间来回移动。

在 EMACS 上,C-p 意味着向上移动一行。

在 SOL 上,C-p 显然是一个未记录的命令,意味着退出编辑器而不提示或保存!

那段时间我丢失了很多工作,让我告诉你。


祝你好运,在不试图像emacs一样的编辑器中使用它。 - Arafangion

3

Bash支持一些Emacs快捷键(C-p,C-n,C-f,C-b,C-Space,C-w,C-y,C-a),但当我在使用screen时,发现它相当令人困惑,因为我需要输入C-a a C-k来删除该行。所以将screen前缀键更改为其他内容可能是个好主意。


你可以自定义快捷键,C-a 只是默认设置。 - Arafangion
我将屏幕前缀键设置为 C-o,这在Bash、Emacs或其他任何地方我都很少使用。 - Michael Hoffman

3

优点

  • 嗯... Emacs?除了Emacs之外,还没有找到其他软件能够像Emacs一样良好地模拟Emacs环境。

缺点

  • Oracle的SQL Developer - 真的必须让C-p做除打印以外的其他事情吗?

一般

  • Visual Studio - 总体而言,Emacs模式是可以接受的,但在某些地方很明显你正在使用微软IDE而不是老旧的Emacs。

3

Firemacs可以防止我在Firefox中搜索时每次都弹出“保存页面”对话框。它有点不稳定,但我发现它比Conkeror更易于使用,尽管后者看起来拥有更忠实的Emacs绑定。

关于原帖中关于“C-p打印”的评论,我想我在过去十年中可能只想要保存一两个网页,所以我有点困惑为什么Firefox会将其放在如此常见的按键组合C-s上。


2

[这是一个糟糕的 EMACS 绑定示例,来自一个甚至没有试图成为 EMACS 类似编辑器的程序。]

我曾经在 Solaris 上使用 EMACS 和 PRIMOS 上的 SOL 来回切换。

在 EMACS 中,C-p 表示向上移动一行。

但在 SOL 中,C-p 显然是一个未记录的命令,意味着退出编辑器而不提示或保存!

在 PRIMOS 中,C-p 在任何地方都表示“中断”(类似于 Unix 中的 C-c)。我相信在 Emacs 移植到 PRIMOS 之前,它就已经存在了,因此更改一个程序比更改成千上万个用户和客户要容易得多。我最初学习 Emacs 是在 PRIMOS 上,后来花了几年时间才逐渐习惯了 C-p :-)。


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