Я использую Emacs 23.3.1 в Windows 7. Я знаю, что могу запустить оболочку из Emacs, используя Mx. Я хотел бы иметь несколько окон оболочки одновременно, но ввод Mx shell во второй раз просто открывает мне то же самое окно оболочки.
Есть ли способ иметь разные окна оболочки?
C-u
запускает командуuniversal-argument
. Это способ ввода аргумента в следующую команду. Вы можете прочитать больше об этом сC-h k C-u
(C-h k
работаетdescribe-key
, очень удобно!)C-h f eshell
(C-h f
выполняетсяdescribe-function
) показывает, что функцияeshell
принимает необязательный аргумент. Цитата: числовой префикс arg (как вC-u 42 M-x eshell RET
) переключается на сеанс с этим номером, создавая его при необходимости. Нечисловой префикс arg означает создание нового сеанса.Вы можете переименовать буфер вашей оболочки с помощью M-x rename-buffer. Тогда вы сможете запустить вторую оболочку.
источник
Посмотрите на MultiTerm , он делает управление несколькими терминалами в Emacs намного проще.
источник
Также может быть полезно использовать экранный интерфейс для ваших оболочек. Я написал свой, но есть и другие, такие как EmacsScreen .
источник
По прошествии более четырех лет я вижу, что некоторые люди по-прежнему рассматривают эту проблему иногда, поэтому я опубликую быструю написанную мной функцию для загрузки оболочки и запроса ее имени. Таким образом, вы можете назвать оболочку «sort-files», если она предназначена для сортировки файлов, и другую «hive», если она предназначена для выполнения запросов к кустам. Я использую это каждый день (на emacs 24):
источник
Это автоматически сгенерирует новый экземпляр оболочки в любом буфере, который вы используете; свяжите это с MS или чем-то подобным и мгновенной радостью:
Большое спасибо phils за рекомендацию переписать с использованием let, хотя в результате получаются еще более ужасные скобки ...: \
источник
let
связать переменные, если они предназначены для локального использования. Как сейчас, у вас есть глобальные значения дляcurrentbuf
иnewbuf
.Это будет открывать новую оболочку каждый раз, когда вы вызываете функцию и автоматически переименовываете ее, если это необходимо. Плюс в том, что если вы редактируете файлы удаленно (dired / tramp ...), это откроет оболочку на удаленном хосте и автоматически переименует ее с удаленным именем хоста:
источник