首页 文章

终端元箭头键绑定中的emacs

提问于
浏览
8

我刚刚使用iterm2作为终端模拟器,在终端模式下使用Emacs.app切换到emacs服务器和emacsclient . 我在使用一些键绑定时遇到了一些麻烦 . 特别是M左箭头打印字符D,M-右箭头打印C,M-向上箭头打印A和M向下箭头打印B.M-ret似乎工作,至少对于组织模式 . 我在iterm2中使用xterm默认值,并将左右选项键绑定到Esc . 我可以在org-mode中使用Esc-left或Esc-right获得M-left功能 . 这在org-mode中特别烦人 . 我是否只需重新绑定我的.emacs中的密钥?我该怎么做呢?

我看过这个http://orgmode.org/manual/TTY-keys.html#TTY-keys,但我不明白为什么终端里的箭头键不可用 .

编辑:

Cat meta-up: ^[[1;9A Cat meta-down: ^[[1;9B Cat meta-right: ^[[1;9C Cat meta-left: ^[[1;9D

主要问题解决了,但我现在遇到了问题 shift-up . "<select> undefined" . 我尝试使用 cat^[[1;2A 获得的转义序列进行类似的映射 . 不愿为类似问题创建另一个问题 .

2 回答

  • 2

    Solution 1

    根据您提供的信息,您可以尝试一件事 . 您告诉emacs将这些转义序列映射到正确的键序列:

    (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;9D" [M-left])))
    

    Solution 2

    我还发现了另一种可能的解决方案,只需谷歌搜索:重新定义iTerm绑定,以匹配emacs正在寻找的内容 .

    http://offbytwo.com/2012/01/15/emacs-plus-paredit-under-terminal.html

    从上面的引用:

    返回iTerm2下的配置文件键绑定,并为以下内容添加绑定:

    M-up      : Esc-[1;4A
    M-down    : Esc-[1;4B
    M-right   : Esc-[1;4C
    M-left    : Esc-[1;4D
    
  • 11

    我正在回答您的'主要问题已解决,但新问题'编辑 .

    我在这个问题上找到了这个人的博文: - http://webframp.com/emacs/2013/02/22/fixing-emacs-bindings-on-the-in-iterm2/

    基本上,您可以使用“运行猫”和按钮技巧来查看系统/终端发送的转义码,然后添加“define-key”行来定义M- {上,下,右,左}和也是MS- {上,下,右,左} .

相关问题