在ansma-term上粘贴一个单词在Emacs上

我在Emacs上使用ansi-term,需要在那里粘贴一些单词. “粘贴”仅适用于鼠标中键.我知道使用C-x C-j和C-c C-k,我们可以在char run和line run之间切换,但是不方便.我更喜欢用C-y或C-c来完成这项工作.在线搜索,但解决方案不适用于我的emacs23. 最佳答案 这里有两个选择:使用劣质流程或Emacs.

要使用劣质过程(可能是使用readline的东西),只需发送原始C-y字符.

(define-key term-raw-map (kbd "C-k") 'term-send-raw)
(define-key term-raw-map (kbd "C-y") 'term-send-raw)

然后C-k和C-y被直接发送到终端,在那里它们的功能就像它们在任何其他终端中一样(例如,分别杀死到行尾和抽搐).由于下级过程正在接收和解释按键,因此Emacs将与杀戮和猛击无关.

要使用Emacs的kill ring,请使用term-paste.

(define-key term-raw-map (kbd "C-c C-y") 'term-paste)

就个人而言,我喜欢像常规终端一样处理术语模式缓冲区,因此我在编辑命令行时通常使用鼠标来复制/粘贴和C-k / C-y.

FWIW,我使用multiterm,而我这样做

(with-eval-after-load "multi-term"
  (dolist
    (bind '(("C-k"           . term-send-raw)
            ("C-y"           . term-send-raw)
            ("C-c C-y"       . term-paste)
            ))
  (add-to-list 'term-bind-key-alist bind)))
点赞