Вставьте слово в ANSI-термин на Emacs

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

1 ответ

Здесь есть два варианта: использовать подчиненный процесс или Emacs.

Чтобы использовать низший процесс (вероятно, тот, который использует readline), просто отправьте raw 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 получать их напрямую в терминал, где они функционируют так же, как и в любом другом терминале (например, kill to end of line и yank соответственно). Поскольку подчиненный процесс получает и интерпретирует нажатия клавиш, Emacs не будет иметь ничего общего с убийствами и ударами.

Чтобы использовать Emacs's kill ring, используйте term-paste,

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

Лично я люблю лечить term-mode буферы, как обычные терминалы, поэтому я обычно использую мышь для копирования / вставки и C-k/C-y когда я редактирую командную строку.

FWIW, я использую мультитерм, и я делаю

(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)))
Другие вопросы по тегам