【问题标题】:How to bind Emacs key for delete whole word backword as the same in a shell?如何绑定 Emacs 键以在 shell 中删除整个单词 backword?
【发布时间】:2012-04-06 16:33:52
【问题描述】:

我刚刚开始学习 Linux 和 Emacs。对于最常用的光标移动,在 Emacs 和 shell (bash/tcsh) 中使用相同的键绑定是令人愉快的,这样我就不必有意识地考虑必须使用哪一个。更糟糕的是,使用错误的命令并撤消错误。不过有两个例外。

一个常用的命令相当于退格,向后删除一个字符。在 shell 中,它是C-h。我在 Emacs 中得到了相同的行为,这要归功于 Janos 的这个提示,他可能也有同样的感觉。 http://www.math.rutgers.edu/~komlos/emacs.htm

现在我在 Emacs 中经常犯的错误是尝试使用命令 M-C-h 向后删除单词,就像在 shell 中一样。

有人可以提供一个绑定,让 Emacs 用 'M-C-h' 向后删除单词吗?目前,此命令选择缓冲区中的整个文本,这是一个非常有用的东西(Windows 中的C-a),但不像向后删除单词那么常用。

此外,任何替换M-h(来自上面的链接)的当前绑定的绑定将不胜感激。

谢谢,

伊兰。

【问题讨论】:

  • 退格键有什么问题?
  • 没什么,如果你习惯了,我猜。跳出主键排后,我仍然很难在 F 和 J 上找到熟悉的山脊。使用 C-h 或 C-M-h,在小指和拇指的帮助下,我无需查看键盘。
  • 此外,“向后移动”“向后删除”动作可以与最小的动作交错,只需右食指的动作即可。
  • @Elan 我在阅读您的问题时迷失了方向。你能指出,哪个命令,哪个操作。默认情况下 C-M-h 删除后向词。
  • 很抱歉描述的冗长。外壳中的 C-M-h 向后删除一个单词。 Emacs 中的 C-M-h,选择缓冲区中的整个文本(次要模式 ido 已打开,未启用其他模式。)我正在寻找绑定 Emacs 中的 C-M-h 以向后删除一个单词的脚本。

标签: emacs elisp


【解决方案1】:

Below 将 C-M h 绑定到 back-kill-word。你可以把它放在你的 .emacs 文件中。

(global-set-key (kbd "C-M-h") 'backward-kill-word)

【讨论】:

    【解决方案2】:

    您可以在终端和emacs中使用M-<backspace>向后删除单词。

    【讨论】:

      【解决方案3】:

      最好使用键转换,这样 C-M-h 的工作方式与 M-backspace 在任何次要模式下的工作方式完全相同(无论 M-backspace 是否绑定到 @987654321 @ 与否)。

      ;; bind C-h to <backspace>
      (define-key key-translation-map [?\C-h] [?\C-?])
      ;; bind C-M-h to M-<backspace>
      (define-key key-translation-map [?\C-\M-h] [?\C-\M-?])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-31
        相关资源
        最近更新 更多