Когда я пытаюсь использовать табуляцию в bash для шаблона глобуса файла, начинающегося с ?
или *
, я получаю список параметров завершения, как и предполагалось, но затем моя командная строка изменяется, чтобы избежать специального символа глобуса.
Например:
$ ls *.txt # tab-complete instead of enter
bar.txt fib.txt foo.txt
$ ls \*.txt # now my '*' is escaped
А также:
$ ls ???.txt # tab-complete
bar.txt fib.txt foo.txt
$ ls \?\?\?.txt # please stop
Как заставить его прекратить экранирование специальных символов при запуске табуляции?
Этого не происходит, если специальный символ *
или ?
не находится в начале шаблона для завершения:
$ ls f*.txt # tab-complete
fib.txt foo.txt
$ ls f*.txt # my prompt doesn't change. This is what I want.
Эта проблема кажется очень похожей на:
- вкладка bash для экранирования автозаполнения $
- https://askubuntu.com/questions/70750/how-to-get-bash-to-stop-escaping-during-tab-completion
Однако ни одно из решений не решает мою проблему.
Немного информации о моей настройке:
- Мой
~/.inputrc
содержит (почти исключительно)set editing-mode vi
иset show-all-if-unmodified on
. - Я использую
bash
версию 5.0.17(1)-выпуск (x86_64-pc-linux-gnu). - Я удалил
bash-completion
, потому что это вызывало у меня еще одну проблему с завершением табуляции. (Завершение табуляции изменило мое приглашение использовать первое совпадение, а не показывать мне параметры. Мне пришла в голову идея удалить его из https://unix.stackexchange.com/a/278449/439902 .)
show-all-if-unmodified
. Вероятно, я включил его, когда у меня все еще был установленbash-completion
. Безbash-completion
я не хочу ниshow-all-if-unmodified
, ниshow-all-if-ambiguous
. - person Arnold Kao   schedule 03.11.2020