В Emacs, как я могу вставить в многолетний - PullRequest
9 голосов
/ 04 января 2012

При использовании многопользовательского режима для запуска терминала в emacs, я хотел бы иметь возможность вставить команду в многопользовательское окно, а затем запустить ее. В настоящее время, когда я это делаю, вставленный элемент появляется в окне многократного ввода, однако, если я нажимаю клавишу ввода, команда игнорируется. Это также не отображается в истории терминала. Например, я вставляю

эхо "привет"

Похоже, это сработало - я вижу текст после подсказки. Но когда я нажимаю ввод, он не выполняется. Я использую многозначный: http://www.emacswiki.org/emacs/MultiTerm

Ответы [ 2 ]

11 голосов
/ 04 января 2012

Функция по умолчанию yank не работает с multi-term или, точнее, с term-mode, потому что рывок не «вставлен».Чтобы вставить, вы должны использовать функцию term-paste, которая по умолчанию привязана к S-insert .Конечно, вы можете связать Cy , чтобы использовать его в term-mode

(add-hook 'term-mode-hook (lambda ()
                            (define-key term-raw-map (kbd "C-y") 'term-paste)))
6 голосов
/ 04 января 2012

В режиме term (который используется в нескольких терминах) есть два режима ввода:

  • линейный режим
  • режим Char

Вы можете переключиться в режим линии с помощью C-c C-j затем дерните текст, переключитесь обратно в режим char C-c C-k и запустить команду. Я думаю о char-mode как о режиме ввода, который работает Как и следовало ожидать, терминал ввода будет работать. Например, если вы введете что-то в командной строке и вырезать это с помощью C-x , затем C-y вставит то, что вы вырезали из командной строки. Я думаю линейного режима в качестве режима ввода, который вы ожидаете от текста буфер в emacs.

Для получения подробной информации о двух режимах ввода проверьте эта страница

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...