Автозаповнення терміналу не працює належним чином


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тому я подумав, що це може бути термінал, а не баш.

Але редагування:

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

Це теж не має ніякої різниці.

Відповіді:


83

bash-completion являє собою набір скриптів bash, що дозволяє виконати індивідуальне виконання для певних команд.

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

Установка

Крок 1: Встановіть bash-завершення

$ sudo apt-get install bash-completion

І іноді це працює, якщо ми знову встановили його командою follwing:

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

Крок 2. Увімкніть завершення .bashrcфайлу bash у вашому файлі

Відкрийте свій 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
Gudlaugur Egilsson

1
Крок 2 робить це для мене. Або отримати шаблон із/etc/skel/.bashrc
Хенді Іраван

1
@SergioIvanuzzo не впевнений, з якою проблемою ви стикаєтесь, ви можете подивитися на цю unix.stackexchange.com/q/219342/72456, яка допомагає, інакше відкрийте власне запитання щодо вашої проблеми.
αғsnιη

27

Якщо у вашому випадку вкладка терміналу не працює Xfce,

Рішення полягає в наступному:

  1. Open Application Menu> Settings> Window Manager.
  2. Натисніть на Keyboardвкладку.
  3. Очистіть Switch window for same applicationналаштування.

Скріншот вікна менеджера вікон, як очистити вікно перемикання для тієї ж програми

Я знайшов рішення тут


Спробував прийняти тендера, але все вже було на місці. Це справді було рішенням для мене.
користувач1226868

Дітто. Чудовий натяк.
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.