Каковы все способы запуска оболочки из Emacs и каковы их различные свойства?

25

Я знаю как минимум четыре варианта:

  • eshell
  • срок
  • ANSI срок
  • ракушка

Какой полный список инструментов, встроенных в emacs для запуска оболочки, и какие преимущества и недостатки они предлагают?

Trevoke
источник
1
Это интересный пример вопроса большого списка . Кажется, что некоторым людям на сайте (включая нас двоих) нравится такой вопрос, а другим - нет. Результаты могут быть действительно переменными в зависимости от ответа модератора. Я начал обсуждение мета-информации об этом, ссылаясь на этот вопрос в качестве примера meta.emacs.stackexchange.com/questions/305/…
Джо Корнели,

Ответы:

31

M-x shellстандартный интерфейс оболочки ОС. В Linux он вызывает bash (или любой другой по умолчанию), в Windows - cmd.exe. M-x shellявляется наиболее часто используемым.

M-x eshellэто оболочка, полностью написанная на emacs lisp Он имеет синтаксис, похожий на bash, но хорошо интегрируется с elisp. Например, вы можете оценить код elisp прямо здесь. Eshell особенно полезен в Windows, когда у вас не установлен Cygwin и т. Д.

M-x termи M-x ansi-termявляются терминальными эмуляторами, очень похожими на gnome-terminal, xterm и т. д. Основное отличие M-x shellсостоит в том, что ключи in eshellили shellявляются по-прежнему ключами emacs, но в termключах emacs не работает. Но преимущество заключается в том, что вы можете запускать ssh, vim или любую команду на основе текстового интерфейса, которая не будет работать в M-x eshellили M-x shell.

termи ansi-termраньше это были разные пакеты, но теперь это две разные команды в одном файле term.el. Я не использовал их много. Вы можете найти более подробный ответ по этому поводу в emacs wiki .

В моем блоге есть еще немного информации .

Ха Ли
источник
1
msgstr "теперь две разные команды в одном файле". Там может быть пропущенное слово или два там.
Фахим Митха
2
Хороший ответ. Ссылка на упомянутую вики-страницу тоже подойдет.
Малабарба
3
«Mx shell является наиболее часто используемым» - я хотел бы, чтобы цитата или некоторые данные поддерживали это, поскольку я совсем не уверен, что это правда. Кроме того, он не добавляет ничего существенного к ответу. Хороший ответ иначе.
Шости
2
Шости, у меня нет жесткой статистики. в соответствии с заголовком файла, shell - 1988. eshell - 1999. term.el - также 1988. eshell в основном используется хакерами elisp, так что это гораздо меньше, чем пользователям emacs. Это оставляет оболочку против срока. Я думаю, что мы можем сравнить их упоминания в книгах по emacs, например, 3 или около того старых из О'Рейли. Или сравнение Google ... но просто из опыта работы в сообществе emacs, я думаю, что термин / ansi-term используется гораздо реже.
Ха Ли