Завершение вкладки, игнорирование некоторых файлов в Bash / Debian - PullRequest
1 голос
/ 28 января 2020

Я использую завершение табуляции в стандартной установке Debian с Bash, и некоторые файлы игнорируются. Например, если у меня есть файлы:

index.php
index.php.a

Если я наберу vim i, то tab сразу же выберет «index. php» (см. Пробел после имени файла). Обычно он просто завершается до «index. php» и дает мне возможность набрать что-то еще после.

Почему он ведет себя по-разному в этой ситуации?

Обновление

Некоторые команды, такие как "cp", похоже, отлично справляются с завершением табуляции, так, может быть, это vim ищет конкретные c расширения файлов?

1 Ответ

2 голосов
/ 28 января 2020

Пакет bash -completion использует функцию _filedir_xspec для завершения vim. Эта функция обычно завершает имена файлов, но исключает определенные шаблоны в зависимости от того, какую команду она выполняет.

Для vim шаблон исключения начинается следующим образом:

_install_xspec '*.@([ao]|so|so.!(conf|*/*) ...

Т.е., помимо прочего, файлы, оканчивающиеся на .a, должны игнорироваться. Смысл этого заключается, вероятно, в том, что они часто создаются как резервные копии, и вы, вероятно, не хотите их редактировать.

Если вы хотите изменить это поведение, вы можете добавить свои собственные пополнения в ~/.bash_completion; например, чтобы заставить vim завершить работу со всеми именами файлов, используйте это:

complete -f vim

, что сделает vim завершение табуляции по умолчанию встроенным завершением файла bevahiour.

...