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


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"/>

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

Ответы:


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или возобновить ваш терминал. Это должно быть исправлено сейчас.


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, как очистить окно переключателя для того же приложения

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


Попробовал принял 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]не выполнялся автоматически.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.