Ответ 1
Под "в терминале" я предполагаю, что вы имеете в виду, что вы используете Emacs встроенный эмулятор терминала. Обычно эмулятор терминала передает большинство ключей точно так же, как набирается для процесса оболочки. Введите C-c C-j в буфер терминала, чтобы перевести его в состояние, в котором доступны обычные привязки ключей Emacs. Вы увидите изменение линии режима от (Term: char run)
до (Term: line run)
.
Приложение:
Yanking текст, не выходя из режима char, немного сложнее; однако соответствующая функция term-paste
(не yank
, которая просто вставляет текст в буфер терминала, не отправляя его в нижний процесс). term-paste
немедленно отправит самое последнее убийство в нижестоящий процесс, но не предоставляет возможности фантазии yank, к которой вы, вероятно, привыкли (например, 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)
... но это не работает для меня. Не знаю, почему.