Завершение вкладки Bash изменило поведение - PullRequest
4 голосов
/ 23 сентября 2011

В течение долгого времени я привык набирать что-то вроде:

$ opt / foo / m

и т. Д. Для навигации по моему проекту в разных средах. Это действительно полезно: просто установите $ opt (скажем, / home / $ USER / projects / opt - и перейдите от своего пользователя dev к qa, чтобы жить, и $ opt равно $ opt.

Начиная с выпуска bash4.2, это поведение изменилось. Теперь завершение табуляции приводит к экранированному знаку $.

$ opt / foo => \ $ opt / foo <= совсем не то, что я имел в виду! </p>

Пока сопровождающие обсуждают, как это должно работать, я хотел бы найти новый набор привычек, которые я мог бы использовать, чтобы вернуться в свою зону комфорта. Что было бы хорошим трюком? Что-то, что мои пальцы могли бы выучить, чтобы настроить какой-то рут и идти оттуда, не беспокоясь о том, где я нахожусь.

Ответы [ 4 ]

1 голос
/ 23 сентября 2011

Это не идеально, но обходной путь - использовать ESC ctrl-e, чтобы принудительно развернуть переменную перед нажатием на вкладку (по крайней мере, в режиме emacs ... не уверен насчет режима vi)

0 голосов
/ 03 ноября 2013

zsh - это все, что у меня получилось.Это было тривиальное преобразование моего .bashrc => .zshrc, и у меня есть некоторые сложные функции оболочки / псевдонимы.

Я согласен, как в мире разработчик bash сломал эту самую базовую функциональность завершения вкладок.

Другое решение, которое я не пробовал, - это использование bash из другого дистрибутива.Я видел это только в выпуске Mint 13.Ubuntu / Fedora Bash работает отлично.

0 голосов
/ 06 января 2012

Обходные пути, предложенные здесь и в других местах, либо вообще не помогли мне, либо были слишком громоздкими для ввода.

В конце концов, друг рекомендовал использовать zshell (zsh).Оно работает!Я не делал никаких настроек, оставляя свой .zshrc пустым.

Теперь я вернул заполнение вкладки в порядок.Это работает немного иначе, чем я привык: смесь старого стиля bash и vi.Нажатие вкладки отображает список возможных вариантов, затем вкладка снова начинает выбирать из этого списка и чередуется, как vi.

Я очень счастлив.

0 голосов
/ 01 ноября 2011

Опираясь на ответ Фрэнка: попробуйте добавить в ~/.inputrc следующее:

"TAB": "\M-\C-e\M-\C-t"
"\M-\C-t": complete

затем запустите новую оболочку. Что это делает:

  • Изменяет клавишу TAB для вставки двух символов: ESC-Ctrl-e ESC-Ctrl-t.
  • Сопоставляет ESC-Ctrl-t с функцией complete, которая обычно вызывается при нажатии клавиши TAB. (Вы можете использовать любую другую комбинацию клавиш вместо ESC-Ctrl-t, но она обычно не используется.)

Поскольку ESC-Ctrl-e уже сопоставлен с функцией shell-expand-line, теперь, когда вы нажимаете TAB, bash сначала расширяет вашу переменную ($opt), а затем автоматически завершается, как обычно.

...