Заставьте завершение вкладки eshell вести себя как Bash

Как я могу заставить автозаполнение eshell вести себя как Bash и Emacs в целом, то есть он предлагает список вариантов, а не произвольный выбор для вас?

Например, если у меня есть две директории "Скачать" и "Загрузки", когда я набираю "Вниз" и нажимаю TAB, я ожидаю, что появится другой буфер и покажет мне варианты. Но eshell только завершает это для меня, то есть, если я нажимаю TAB, он завершается до "Скачать"; снова нажмите TAB, он изменится на "Загрузки".

3 ответа

Решение

Использовать этот:

(add-hook
 'eshell-mode-hook
 (lambda ()
   (setq pcomplete-cycle-completions nil)))
(add-hook
 'eshell-mode-hook
 (lambda ()
   (setq pcomplete-cycle-completions nil)))

а также

(setq eshell-cmpl-cycle-completions nil)

Оба делают так, как вы просите, и показывают буфер с перечнем завершений, когда я запускаю свой emacs как 'emacs -q', чтобы избежать моих собственных настроек. Это с emacs 23.3, у вас намного более старая версия?

Также см. http://www.emacswiki.org/emacs/EshellCompletion где я впервые пошел, чтобы проверить это.

Шаги, чтобы попробовать это:

  1. Запустите emacs, используя команду 'emacs -q' - никаких других аргументов.
  2. Перейдите в буфер *scratch*
  3. Вставьте или введите один из приведенных выше фрагментов кода.
  4. Поместите курсор в конец фрагмента и нажмите "Ce", чтобы выполнить код.
  5. Начать eshell
  6. тестовое задание
  7. если ни один из них не работает, сообщите здесь свою информацию о версии и любые другие соответствующие данные

Вам нужно только иметь следующую строку:

(setq eshell-cmpl-cycle-completions nil)

eshell-mode автоматически устанавливается pcomplete-cycle-completions к стоимости eshell-cmpl-cycle-completions на местном уровне.

Другие вопросы по тегам