2013-02-21 1 views
4

Я использую ansi-term на Emacs и вам нужно вставить туда несколько слов. «Вставить» работает только с серединой мыши. Я знаю, что с C-x C-j и C-c C-k мы можем переключаться между char run и line run, но это неудобно. Я предпочитаю использовать C-y или C-c y, чтобы выполнить эту работу. Искали онлайн, но решения не работали с моим emacs23.Вставить слово в ansi-term на Emacs

+0

Мои комментарии в следующих один. – snowgoose

+0

Я нашел это решение для меня: [ссылка: вставить в многорежимный] (http://stackoverflow.com/questions/8729462/in-emacs-how-can-i-paste-into-multi-term) – snowgoose

ответ

2

Здесь есть два варианта: использовать нижний процесс или 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, используйте term-paste.

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

Лично мне нравится рассматривать term-mode буферы, такие как регулярные терминалы, так что я обычно использую мышь, чтобы скопировать/вставить и 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))) 
+0

Есть две проблемы с этим: 'term-mode-map' должен быть' term-raw-map', а 'term-send-raw' должен быть' term-paste'. Тогда привязка 'C-y' (и' s-v', если вы находитесь на OS X) будет работать так, как ожидалось. – Andy

+0

Не погружаясь в него, вы, кажется, прав насчет карты. Что касается привязки, я думаю, это зависит от того, что вы хотите. Я обновлю ответ. – jpkotta