复制/粘贴emacs ansi-term shell

San*_*eep 51 emacs shell

我已经配置了emacs以在ansi-term中运行zsh shell.但是,复制/粘贴不再有效,即没有任何东西从kill-ring粘贴到终端.将TERM更改为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")))
Run Code Online (Sandbox Code Playgroud)

Kir*_*sey 82

您可能只想在使用终端时在字符模式和线路模式之间切换.Cx Cj将激活term-line-mode,它将终端缓冲区视为一个普通的文本缓冲区,您可以在其中移动光标和移动文本.您可以使用Cc Ck切换回字符模式.

  • 在Emacs 24中,看起来在终端中你需要按'Cc Cj'进入线路模式,然后再回来,它是'Cc Ck',如上所述. (23认同)

Gly*_*yph 10

正如在描述这个可爱的博客片断,有一个功能,term-pasteterm.el,你想要什么,做完全一样.默认情况下,它仅限于S-insert博客的推荐C-c C-y似乎是一个很好的建议.


小智 5

ansi-term,in char-mode,采用终端仿真的普通绑定.您需要一个新的绑定,以及一种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)
Run Code Online (Sandbox Code Playgroud)

当你这样做时,Cc Cy会猛拉.但是,只有一个猛拉,你不能循环通过你的杀戮缓冲区.可以这样做,但我还没有实现它.