2014-02-13 3 views
0

Можно ли задать термин emacs для отправки всего (может быть, исключения M-x) в качестве исходных команд. Это позволит, например, запустить emacs -nw внутри терминала, и каждая команда будет работать для emacs внутри терминала, которая теперь находится снаружи.Как отправить каждую команду на Emacs Term?

Я хочу что-то вроде этого, потому что иногда я запускаю nano с терминала или экрана, я также использую ssh, и это заставит меня запускать emacs на сервере. Прямо сейчас, когда я запускаю nano, мне нужно вызвать C-c x, которые отправляют C-x.

+0

Вы спрашиваете о 'term-mode'? – jpkotta

+0

@jpkotta Да термин-режим. – jcubic

ответ

2

Я бы предложил использовать tramp для редактирования удаленных файлов. Я предпочитаю его открывать редактор на удаленной машине. Если вы попытаетесь запустить emacs внутри буфера term-mode, вы будете бороться с ним все время.

Если вы хотите запустить emacs внутри буфера term-mode, вы можете использовать term-send-raw и term-send-raw-string. Например:

(defun term-send-backward-word() 
    "Move backward word in term mode." 
    (interactive) 
    (term-send-raw-string "\eb")) 

<Escape> b является то, что терминал (который eterm-color) ожидает, что при нажатии C-<left>. Это не обязательно совпадает с привязкой C-<left> к term-send-raw. Лучше всего, наверное, попробовать связать любой ключ с term-send-raw, и если это не сработает, выполните функцию с term-send-raw-string и свяжите это. Вы можете выяснить, какая строка должна быть, если у вас есть оболочка в буфере term-mode, отправьте цитату и введите ключ. Вы можете отправить цитату с

(defun term-send-quote() 
    "Quote the next character in term-mode. 
Similar to how `quoted-insert' works in a regular buffer." 
    (interactive) 
    (term-send-raw-string "\C-v")) 

Это просто, как печатать C-v в обычном терминале.

Наконец, я упомянул multi-term. Он доступен в melpa. Он предоставляет перечисленные выше функции и имеет лучшие значения по умолчанию, чем term-mode IMO. Но это, вероятно, дальше от того, чего вы хотите, потому что он пытается интегрировать term-mode с остальными emacs вместо того, чтобы просто передавать вещи.

Смежные вопросы