Я рекомендовал бы, тем более, что Вы не опытный пользователь, отдельный / домой, как выше, и периодическое резервное копирование на оптические среды: дешевый, легкий и несколько надежный. Если бы у Вас действительно есть важные данные, я думал бы о чем-то еще, все же.
Установите SET -O
, чтобы увидеть, включен, включен, может быть включен POSIX
. Если это так, отключить с помощью SET + O POSIX
в режиме «POSIX», вкладка Bash - это по какой-то причине отключено в «VI-MODE». Я не видел никакого объяснения, почему это поведение так, ни почему это специфично для VI-режима, поэтому я не решил объяснять.
PS: Этот ответ более подходит для того, кто ставится на вопрос через поисковую систему ... не для вашей конкретной настройки.
Обновление :
Chet Ramey говорит :
в режиме POSIX режим редактирования VI не должен отображать вкладку для завершения. Это потому, что POSIX.2 полностью определяет поведение VI Режим редактирования, и стандартная вкладка должна быть сопоставлена на себя Вставить по умолчанию.
Sudo
не дает вам систему входа в систему, если вы не запрашиваете его с -I
. Поэтому вы обнаружите, что без него вам нужно будет загрузить завершению системы:
. /etc/bash_completion
Если вы работаете с -I
, то $ Home
будет qoot
, и поэтому что-нибудь написано для пользователя ~ / .bashrc
, не будет читать. Если вы можете отделить материал завершения от остальной части вашего ~ / .bashrc
, источник, который с .
И это должно работать.
Быстрый ответ:
bash-completion
bash_completion
на Bash
startup Bash
startup sudo
compspec с помощью complete -cf sudo
Я полагаю, что вы используете MacOSX
с brew
.
Попробуйте:
brew update
brew install bash-completion
brew info bash-completion
# bash-completion: stable 1.3
. $(brew --prefix)/etc/bash_completion
complete -p sudo
Вы должны увидеть что-то вроде этого:
complete -F _root_command sudo
Тест:
function _comp_foo() { COMPREPLY=($(compgen -W 'a b c' -- "$2")); }
complete -F _comp_foo foo
Введите foo
Пробел Вкладка Вкладка
Вы должны увидеть abc
Введите sudo foo
Пробел Вкладка Вкладка
Вы должны увидеть abc
Затем удалите complete -fc sudo
из файлов инициализации. ( ~ / .bash_profile
, ~ / .bashrc
и т. Д.)
Добавьте следующие строки в файлы инициализации:
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
# Your compspec here
complete -o default -o nospace -W "$(sudo ls -1 /var/cache/salt/master/minions)" salt
Повторно откройте терминал.
Введите complete -p sudo
.
Вы должны увидеть complete -F _root_command sudo
.
Тип полная -p соль
.
Вы должны увидеть что-то вроде этого:
complete -o default -o nospace -W 'a
b
c' salt
bash-completion2. * Note :
Вы можете установить bash-completion2
: https://github.com/Homebrew/homebrew/issues/19258
Но:
2. *
работает с Bash 4. *
2. *
использует параметр -D
для отложенной загрузки compspecs. Итак, complete -p sudo
выводит complete: sudo: no complete спецификация
, пока вы не наберете sudo
Space Tab