Terminal otomatik tamamlama düzgün çalışmıyor


56

Vurduktan apt-gsonra olduğu gibi bir komut yazmaya başlarsam tab, kabuk komutu tamamlar apt-get, ancak komutun ikinci kısmı için, installbazı karakterleri girdiğimde instaisabet gibi tabtamamlamaz install.

Başka bir örnek: sudoVurduktan sonra vurmak tabhiçbir şeyi tamamlamaz. örneğin: sudo apt-ge[ tab] ve hiçbir şey.

Ubuntu'yu mini iso (40MB ağ yükleyici) kullanarak yükledim, bu yüzden belki de kaçırdığım bir yapılandırma var!

Bu kodu benim ekledim .bashrcama yine de çalışmıyor:

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

Ben de iznini kontrol ettim .bashrcve bu -rw-r--r--.

Değişiklikleri yeni ortama uygulamak için .bashrckullandıktan sonra yapılan değişiklikleri de kaynaklarım source .bashrcancak yine de etkileri yok.

Bunu kullanıyorum, xfce4-terminalbunun terminal olabileceğini ve bash olamayacağını düşündüm.

Ancak düzenleme:

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

Ve değişiyor:

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

için:

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

Hiç farketmez.

Yanıtlar:


83

bash-completion belirli komutlar için özelleştirilmiş tamamlama sağlayan bir bash betiğidir.

Bu sadece dosyalar ve dizinler için değil aynı zamanda komutlar için de geçerlidir. Kısmi komutları yazıyorsunuz ve tuşuna basarak Tabkomutları otomatik olarak tamamlıyoruz.

Kurulum

1. Adım: bash-tamamlamayı kurun

$ sudo apt-get install bash-completion

Ve bazı durumlarda, eğer follwing komutuyla tekrar yüklersek çalışır:

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

Adım 2:.bashrc Dosyanızda bash tamamlamayı etkinleştirin

Kendiniz açın gedit ~/.bashrcve bu içerik orada yoksa, sonuna ekleyin ve kaydedin.

# 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

Önemli: Değişikliklerden sonra Terminal'inizi ~/.bashrcile kaynak sağlamanız source ~/.bashrcveya yeniden açmanız gerekir . Şimdi düzeltilmeli.


1
Yukarıdaki kod bloğunun ~ / .bashrc dosyasına eklenmesinin benim için işe yarayıp yaramadığını onaylamak istiyorum. Sadece bir yorum; İşe yaraması için gerçekten oturumu kapatıp tekrar oturum açmanıza gerek yok (çalıştığınız işi sonlandırmak istemeyebilirsiniz), sadece çalıştırabilirsiniz source ~/.bashrc.
nullgeppetto

Çalışması için Terminali yeniden açmak zorunda kaldım!
Gilberto Albino

2
Tamamlama aniden benim için çalışmayı bıraktı, yukarıdaki adımlar sorunu çözmedi. Sorunun nasıl giderileceği hakkında bir fikriniz var mı?
Ubuntu'da

1
2. adım benim için yapar. Veya şablondan/etc/skel/.bashrc
Hendy Irawan 15

1
@SergioIvanuzzo, karşılaştığınız sorunun hangisi olduğundan emin değil, bu unix.stackexchange.com/q/219342/72456 adresine bakabilirsiniz, bunun için sorun var mı?
αғsнιη

27

Durumunuz altında terminal sekmesi çalışmıyorsa Xfce,

Çözüm aşağıdaki gibidir:

  1. Application Menu> Settings> Window Manager.
  2. Tıklayın Keyboardsekmesine.
  3. Switch window for same applicationAyarı temizle .

Pencere Yöneticisi ekran görüntüsü aynı uygulama için geçiş penceresinin nasıl temizleneceğini

Çözümü burada buldum


Kabullenmeye çalıştı, ama her şey zaten vardı. Bu gerçekten benim için çözüm oldu.
user1226868 24:16

Aynen. Harika ipucu.
cerebrou

Çok teşekkürler, bu konuda fikrimi gerçekten kaybediyordum.
Dustin Cowles,

2
Yine de Mayıs 2018 itibariyle ihtiyacım olan çözüm.
clifgray,

Teşekkürler benim için çalıştı
MMH

3

Ayrıca otomatik tamamlamayı desteklemeyen bir kabukta olabilirsiniz (örneğin: Bourne Shell | SH). BASH otomatik tamamlamayı istiyorsanız, mermi değiştirmeniz gerekir, komut yerine BASH (Bourne Again SHell) deyin.

chsh -s /bin/bash

Kaynak: Ubuntu Wiki - Kabukları Değiştirme


1

Benim durumumda, bir betiği çalıştırmaya çalışıyordum ./myScript.shve yazmak ./my[tab]otomatik olarak tamamlanmadı.

Dosyaya yürütme izinleri eklemek zorunda kaldım ve otomatik tamamlama çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.