Терминал автозаполнения не работает должным образом

56

Если я начну вводить команду, например, apt-gпосле нажатия tab, оболочка завершит выполнение команды apt-get, но для второй части команды, например install, если я введу некоторые символы, например insta, нажатие tab, не завершит ее install.

Другой пример: после того, как я вхожу, sudoудар tabне завершает ничего. например: sudo apt-ge[ tab] и ничего.

Я установил Ubuntu с помощью mini iso (сетевой установщик 40 МБ), так что, возможно, есть конфигурация, которую я пропустил!

Я добавил этот код в мой, .bashrcно все равно он не работает:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Я также проверил разрешение .bashrcи это -rw-r--r--.

Я также использую источник .bashrcизменений после изменения, source .bashrcчтобы применить изменения к новой среде, но по-прежнему никаких эффектов.

Я использую, xfce4-terminalпоэтому я подумал, что это может быть терминал, а не bash.

Но редактирование:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

И меняется:

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

чтобы:

<property name="&lt;Super&gt;Tab" type="string" value="empty"/>

Не имеет никакого значения тоже.

Ravexina
источник

Ответы:

84

bash-completion это набор сценариев bash, который позволяет настраивать завершение для определенных команд.

Это не только для файлов и каталогов, но также, например, для команд. Таким образом, вы вводите частичные команды и, нажав, Tabмы получаем автоматическое завершение команд.

Монтаж

Шаг 1: Установите bash-complete

$ sudo apt-get install bash-completion

И иногда это работает, если мы переустановили его следующей командой:

$ sudo apt-get install --reinstall bash-completion

Шаг 2: Включите bash-complete в вашем .bashrcфайле

Откройте свой, gedit ~/.bashrcи если этого контента там нет, добавьте его в конце и сохраните.

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Важно: После изменений нужно исходный код своего ~/.bashrcс source ~/.bashrcили возобновить ваш терминал. Это должно быть исправлено сейчас.

αғsнιη
источник
1
Я хотел бы подтвердить, что добавление вышеуказанного блока кода в файл ~ / .bashrc сработало для меня. Только один комментарий; вам не нужно выходить из системы и снова входить в систему, чтобы она работала (возможно, вы не захотите завершать то, в чем вы работаете), вы можете просто запустить source ~/.bashrc.
nullgeppetto
Мне пришлось заново открыть Терминал, чтобы он заработал!
Гилберто Альбино
2
Завершение внезапно перестало работать для меня, вышеуказанные шаги не решают проблему. Любые идеи о том, как решить проблему? На Ubuntu 16.04
Гудлаугур Эгильссон
1
Шаг 2 делает это для меня. Или получите шаблон от/etc/skel/.bashrc
Hendy Irawan
1
@SergioIvanuzzo не уверен, с какой проблемой вы сталкиваетесь, вы можете посмотреть на эту unix.stackexchange.com/q/219342/72456, это поможет, иначе откройте свой вопрос для вашей проблемы.
αғsнιη
27

Если в вашем случае вкладка терминала не работает Xfce,

Решение заключается в следующем:

  1. Open Application Menu> Settings> Window Manager.
  2. Нажмите на Keyboardвкладку.
  3. Очистить Switch window for same applicationнастройку.

Скриншот Window Manager, как очистить окно переключателя для того же приложения

Я нашел решение здесь

itsho
источник
Попробовал принял awnser, но все уже было на месте. Это было действительно решение для меня.
user1226868 24.11.16
То же самое. Отличный намек.
cerebrou
Большое вам спасибо, я действительно схожу с ума по этому вопросу.
Дастин Коулз
2
Решение, в котором я нуждался, по состоянию на май 2018 года.
clifgray,
Спасибо, сработало для меня
MMH
3

Вы также можете находиться в оболочке, которая не поддерживает автоматическое заполнение (например, Bourne Shell | SH). Если вы хотите, чтобы BASH автоматически завершался, вам нужно переключить оболочки, скажем BASH (Bourne Again SHell) вместо этого с помощью команды

chsh -s /bin/bash

Источник: Ubuntu Wiki - меняющиеся оболочки

Майкл Лоуден
источник
1

В моем случае я пытался выполнить скрипт ./myScript.sh, и ввод ./my[tab]не выполнялся автоматически.

Мне пришлось добавить разрешения на выполнение файла и автозаполнение сработало.

Hezi
источник