我已经将emacs配置为在ansi-term中运行zsh shell。但是,复制/粘贴不再起作用,即没有任何内容从kill-ring粘贴到终端。将术语更改为vt100或eterm并不能解决问题。
将感谢任何想法或解决方案。
为了提供上下文,我对ansi-term进行了如下配置:
(global-set-key "\C-x\C-a" '(lambda ()(interactive)(ansi-term "/bin/zsh")))
(global-set-key "\C-x\ a" '(lambda ()(interactive)(ansi-term "/bin/zsh")))发布于 2016-04-01 05:49:44
正如在this lovely blog snippet中所描述的,在term.el中有一个函数term-paste,它可以执行您想要的操作。默认情况下,它只绑定到S-insert,但博客推荐的C-c C-y似乎是一个很好的建议。
发布于 2010-05-22 09:12:52
char-mode中的ansi-term接受终端仿真的普通绑定。您需要一个新的绑定,以及一种正确输出到ansi-term的方法。我使用的是:
(defun ash-term-hooks ()
;; dabbrev-expand in term
(define-key term-raw-escape-map "/"
(lambda ()
(interactive)
(let ((beg (point)))
(dabbrev-expand nil)
(kill-region beg (point)))
(term-send-raw-string (substring-no-properties (current-kill 0)))))
;; yank in term (bound to C-c C-y)
(define-key term-raw-escape-map "\C-y"
(lambda ()
(interactive)
(term-send-raw-string (current-kill 0)))))
(add-hook 'term-mode-hook 'ash-term-hooks)当你这样做的时候,C- C -y将会拉。它只做了一次,但是,你不能循环通过你的杀死缓冲区。这是可以做到的,但我还没有实现它。
发布于 2016-10-14 11:17:25
上面的解决方案可以很好地将文本从一些缓冲区复制到ansi-term,但它们不能将文本从ansi-term复制到另一个缓冲区(例如,将您刚刚运行的命令复制到您正在编辑的shell脚本)。将此代码添加到我的.emacs文件中为我解决了这个问题(在Emacs24.4中):
(defun my-term-mode-hook ()
(define-key term-raw-map (kbd "C-y") 'term-paste)
(define-key term-raw-map (kbd "C-k")
(lambda ()
(interactive)
(term-send-raw-string "\C-k")
(kill-line))))
(add-hook 'term-mode-hook 'my-term-mode-hook)请注意,如果您希望将kill/yank绑定到以ansi术语转义字符(默认情况下为C-c和C-x)开头的击键,并希望在这些字符发生变化的情况下正常工作,则可以将击键(没有前导转义)定义为term-raw-escape-map,就像user347585的答案中所做的那样。
https://stackoverflow.com/questions/2886184
复制相似问题