图形和控制台Emacs之间的不同选择行为(23)

时间:2012-07-05 08:54:55

标签: emacs console selection shift

Emacs n00b在这里,我已经在图形模式下摆弄了一下,到目前为止我发现它很棒。我想试试终端版本,发现有一些令人讨厌的行为差异,尤其是移位选择。

在图形模式下,我可以将移位选择(即保持移位设置标记)与箭头键,控制键(选择整个单词)或原点或结束键(选择整个/大部分一行)。

在终端模式下,键可以自行工作(我可以选择区域,同时按住shift并使用箭头键移动*,C-左/右允许我跳出整个单词,原点和结尾带我到我想要的位置go)但是我无法将它们组合起来(不能通过按住shift和C-arrow来选择整个单词,或者选择具有shift-end或shift-origin的行的剩余部分)。

我还发现,在窗口模式下,C-backspace在控制台中不起作用(即没有删除整个单词),但在寻找解决方案之后我读到了M-backspace。

我尽可能彻底地搜索但是找不到如何使终端版本像图形版本那样行事......很多人似乎都在询问有关Emacs的班次选择的问题,但是他们都没有完全相同的问题。 ..有人可以解释这些行为差异的来源吗?

提前致谢。

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

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

  • 习惯默认的Emacs快捷方式
  • 用global-set-key填充我的.emacs。虽然我试过了
    (fset 'select-to-end
    [(kbd "C-<spc> <end>")])
    (global-set-key (kbd "S-<end>") 'select-to-end)
    
    但它不起作用,因为我打算去-_-

1 个答案:

答案 0 :(得分:1)

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

你问题的答案越长,“链中的某个人就会忽略你的控制角色,所以你需要找出它是谁,修复它,然后重复”。对于你在这里谈论的键绑定 - C-S-<arrows> - 你绝对可以让它发挥作用;如果你想要像\C-~这样的东西,你将会有更多 更难的时间。 (问题是一些绑定在传统终端中没有意义,所以你基本上必须使用一组非标准的控制代码来传输密钥组合,然后教会每个程序识别它。这通常是一个termcap来的地方in,因为它是教授关键事件程序的通用语言。)

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

  • 从您的终端开始。您可以使用\C-v,然后点击一个键来插入文字击键(至少在bash中) - 从C-left,S-left和C-S-left开始。确认您获得了三种不同的控制代码。
  • 如果您不是,则需要调查(1)您的readline设置,(2)终端程序设置或(3)termcap设置。由于TERMxterm,因此termcap 应该。我不知道你正在使用什么终端程序,但它可能有自己的密钥配置。 (例如,我使用mac并使用iTerm2,这通常是我的第一站。)如果你打算在终端上花时间,你一定要花时间阅读readline manual并玩和你的.inputrc一起。
  • 这个链很短:接下来是emacs。您可以在emacs中使用\C-q来执行bash中\C-v所做的相同操作,或使用\C-h k找出默认绑定的内容。再次,首先确保emacs看到您感兴趣的组合的不同关键事件。如果没有,您可能希望首先查看term/xterm.el目录中的site-lisp并将其修改为你的喜好。

如果您正在使用tmuxscreen,他们也可以参与其中,通常可以驯服。找到这些问题的过程与bash相同 - 使用\C-vman tmux来确定如何获取额外的键绑定。