Я использую ansi-term на Emacs и вам нужно вставить туда несколько слов. «Вставить» работает только с серединой мыши. Я знаю, что с C-x C-j
и C-c C-k
мы можем переключаться между char run
и line run
, но это неудобно. Я предпочитаю использовать C-y
или C-c y
, чтобы выполнить эту работу. Искали онлайн, но решения не работали с моим emacs23.Вставить слово в ansi-term на Emacs
ответ
Здесь есть два варианта: использовать нижний процесс или 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)))
Есть две проблемы с этим: 'term-mode-map' должен быть' term-raw-map', а 'term-send-raw' должен быть' term-paste'. Тогда привязка 'C-y' (и' s-v', если вы находитесь на OS X) будет работать так, как ожидалось. – Andy
Не погружаясь в него, вы, кажется, прав насчет карты. Что касается привязки, я думаю, это зависит от того, что вы хотите. Я обновлю ответ. – jpkotta
Мои комментарии в следующих один. – snowgoose
Я нашел это решение для меня: [ссылка: вставить в многорежимный] (http://stackoverflow.com/questions/8729462/in-emacs-how-can-i-paste-into-multi-term) – snowgoose