Под «в терминале» я предполагаю, что вы имеете в виду, что используете встроенный эмулятор терминала Emacs. Обычно эмулятор терминала передает большинство ключей точно в том виде, в котором они введены в процесс оболочки. Введите C-c C-j в буфер терминала, чтобы перевести его в состояние, в котором доступны обычные привязки клавиш Emacs. Вы увидите изменение строки режима с (Term: char run)
на (Term: line run)
.
Дополнение:
Дергать текст, не выходя из символьного режима, немного сложно; однако соответствующая функция - term-paste
(не yank
, которая просто вставляет текст в буфер терминала, не отправляя его подчиненному процессу). term-paste
немедленно отправит самое последнее уничтожение подчиненному процессу, но не обеспечивает причудливой функции восстановления, к которой вы, вероятно, привыкли (например, M-y для циклического просмотра предыдущих убийств). Вы можете запустить term-paste
как расширенную команду: C-c M-x term-paste RET.
Вероятно, самое простое решение - просто временно перейти в линейный режим (C-c C-j), когда вам есть что вставить, а затем немедленно вернуться в режим char (C-c C-k). Или, что еще проще, просто оставайтесь в режиме онлайн все время. Я часто делаю это, когда терминал подключен к сеансу Oracle SQL * Plus. Я редко замечаю разницу, но получаю всевозможные удобные функции Emacs, например, возможность набирать M-p для циклического просмотра длинного, ранее набранного оператора SQL.
Я бы предположил, что вы всегда можете начать в линейном режиме следующим образом:
(add-hook 'term-mode-hook 'term-line-mode)
... но у меня это не работает. Не знаю почему.
person
Sean
schedule
05.06.2010