0

Emacs n00b 在这里,我在图形模式下对它进行了一些修改,到目前为止我发现它很棒。我想尝试一下终端版本,发现存在一些令人讨厌的行为差异,尤其是在换档选择方面。

在图形模式下,我可以将移位选择(即按住 shift 设置标记)与箭头键、控制键(选择整个单词)或原点或结束键(选择整行/大部分行)结合起来.

但我不能将它们组合起来(不能通过按住 shift 和 C 箭头来选择整个单词,或者用 shift-end 或 shift-origin 选择一行的剩余部分)。

我还发现 C-backspace 在控制台中不起作用(即没有擦除整个单词),而它在窗口模式下起作用,尽管我在寻找解决方案后阅读了有关 M-backspace 的信息。

我尽可能彻底地搜索,但找不到如何让终端版本表现得像图形版本......很多人似乎都在问关于 Emacs 的班次选择的问题,但他们都没有完全相同的问题......可以有人解释这些行为差异来自哪里?

提前致谢。

*虽然,按住 shift 键,如果我向下(使用箭头键)选择整行,我不能再次向上取消选择它们(“未定义”)。

[edit /] 好的,很明显这是因为我的终端没有与图形 Emacs 相同的快捷方式。很公平。我在这里看到了几个解决方案:

  • 习惯默认的 Emacs 快捷方式
  • 用全局设置键填充我的 .emacs。虽然我试过 了,但它并没有像我想要的那样工作-_-
    (fset 'select-to-end
    [(kbd "C-<spc> <end>")])
    (global-set-key (kbd "S-<end>") 'select-to-end)
    
4

1 回答 1

1

简短的回答是“如果您喜欢使用不同的击键,那可能会更容易”。就个人而言,我对我的键绑定和配置有点神经质,所以我很少使用这个;特别是,当 emacs 模式覆盖您的绑定时,这是令人沮丧的。(我不知道你是否发现这global-set-key真的意味着“让宇宙中的任何人在我的键绑定上盖章”。)

您问题的较长答案是“链条上的某个人正在忽略您的控制字符,因此您需要弄清楚它是谁,修复它,然后重复”。对于你在这里谈论的键绑定C-S-<arrows>——你绝对可以让它工作;如果你想要类似的东西\C-~,你将会有一个更难的时间。(问题是一些绑定在遗留终端中没有意义,所以你基本上必须使用一组非标准的控制代码来传输组合键,然后教每个程序识别它。这通常是 termcap 的来源,因为它是用于教授关键事件的程序的通用语言。)

以下是我通常采取的步骤:

  • 从您的终端开始。您可以使用\C-v然后按一个键来插入文字击键(至少在 bash 中)——首先使用 C-left、S-left 和 CS-left 执行此操作。确认您收到三个不同的控制代码。
  • 如果不是,则需要调查 (1) 您的 readline 设置,(2) 您的终端程序设置或 (3) 您的 termcap 设置。因为TERMis xterm,termcap应该没问题。我不知道您使用的是什么终端程序,但它可能有自己的密钥配置。(例如,我使用 mac 并使用 iTerm2,这通常是我的第一站。)如果您无论如何都要在终端上花费时间,那么您绝对应该花时间阅读readline 手册并使用您.inputrc的 a少量。
  • 这条链很短:接下来是 emacs。您可以在 emacs 中使用在 bash 中\C-q执行相同的操作,或者使用来找出默认绑定是什么。同样,首先确保 emacs 看到您感兴趣的组合的不同关键事件。如果没有,您可能希望首先查看您的目录并根据自己的喜好对其进行修改。\C-v\C-h kterm/xterm.elsite-lisp

如果您使用tmuxor screen,它们也会参与其中,并且通常可以被驯服。查找这些问题的过程与 bash 相同——使用\C-vman tmux找出如何获得额外的键绑定。

于 2012-07-05T17:40:58.143 回答