Заставьте завершение вкладки 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 где я впервые пошел, чтобы проверить это.
Шаги, чтобы попробовать это:
- Запустите emacs, используя команду 'emacs -q' - никаких других аргументов.
- Перейдите в буфер *scratch*
- Вставьте или введите один из приведенных выше фрагментов кода.
- Поместите курсор в конец фрагмента и нажмите "Ce", чтобы выполнить код.
- Начать eshell
- тестовое задание
- если ни один из них не работает, сообщите здесь свою информацию о версии и любые другие соответствующие данные
Вам нужно только иметь следующую строку:
(setq eshell-cmpl-cycle-completions nil)
eshell-mode
автоматически устанавливается pcomplete-cycle-completions
к стоимости eshell-cmpl-cycle-completions
на местном уровне.