【问题标题】:shift up-arrow doesn't highlight text emacs iterm2上移箭头不突出显示文本 emacs iterm2
【发布时间】:2012-06-03 15:52:44
【问题描述】:

我最近在此处获得了修复 M-left 等方面的帮助:emacs in terminal meta arrow keybindings,但我无法使用类似的解决方案修复 Shift-up。当我尝试shift-up 时,我收到错误<select> is undefined。我尝试使用以下方法重新映射它:

(add-hook 'term-setup-hook                                                                                                                                                                         
'(lambda ()                                                                                                                                                                                      
 (define-key function-key-map "\e[1;9A" [M-up])                                                                                                                                                
 (define-key function-key-map "\e[1;9B" [M-down])                                                                                                                                              
 (define-key function-key-map "\e[1;9C" [M-right])                                                                                                                                             
 (define-key function-key-map "\e[1;2A" [S-up])                                                                                                                                                
 (define-key function-key-map "\e[1;9D" [M-left])))  

但 shift 仍未定义。我还尝试使用从cat(即^[[1;2A)返回的转义序列设置它来重新绑定密钥。奇怪的是,降档确实有效。 shift-select-mode 也被标记为 t

【问题讨论】:

  • 您有关于这个问题的更多信息吗?或者你在过去的一年里解决了吗?

标签: emacs terminal


【解决方案1】:

这听起来像是我通过 Putty 访问 Ubuntu 12.04 机器时遇到的问题,当时 END 导致 Emacs 23.3.1 说 <select> is undefined。这被证明是 terminfo 的一个问题,它允许程序以独立于设备的方式使用终端。

基于2008 bug report discussion,我通过将以下内容添加到我的 ~/.bashrc 顶部解决了我的问题:

#so the END key will work correctly in Emacs over PuTTY
TERM=xterm-vt220

注意,对于 xterm-vt220 或默认 xterm,当我按 END 时,emacs -Q -nw 将得到 ESC [ 4 ~,对于 Up,ESC O A,对于 Shift-Up,ESC [ A。 (要查看 Emacs 获取的键码,请按一些按钮,然后按 C-h,l。)对于相同顺序的相同键,cat 表示 [4~[A[OA...所以向上和Shift-Up 奇怪地颠倒了。


如果您不想更改您的 terminfo,请参阅此讨论以获取解决方法 http://lists.gnu.org/archive/html/help-gnu-emacs/2011-05/msg00211.html

您应该能够通过以下方式解决该问题:

(define-key input-decode-map "\e[1;2A" [S-up])

为了在正确的时间生效,你必须在你的 .emacs 中使用类似的东西:

(if (equal "xterm" (tty-type)) (define-key input-decode-map "\e[1;2A" [S-up]))

【讨论】:

    【解决方案2】:

    只是添加有关解决方案的更多信息: https://github.com/arthurnn/dotfiles/blob/8d56f2419da9a4cb654d8941f379d6d5783bdb90/.emacs.d/init.d/setup-bindings.el#L3-L10 这应该可以解决包括 emacsclient 在内的所有情况。 最后一行负责修复使用 emacsclient 时的 Shift-up。

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 2012-06-27
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多