Akıllı tamamlama başarısız olursa Bash normal sekmesini tamamlamaya zorla


10

Sekme tamamlama, kabuklarda standart bir özellik haline geldiğinden, çok mutlu bir kullanıcı oldum. Bash'in akıllı tamamlanmasını bile seviyorum (doğru olarak tahmin ettiği sürece, sadece PDF dosyalarını arar, eğer evince foo <TAB> yazarsam).

Bash'ın akıllı tamamlamayı, tamamlamayı reddetmek için kullandığı, aksi halde mutlu bir günü mahveder.

Bugün istedim:

tar xvf centos5.8_x86_1.ova

Bu yüzden girdim:

tar xvf cent<TAB>

ve Bash yolu tamamlamayı reddediyor, çünkü .ova dosyaları tar ile genellikle kullandığınız şey değil.

Akıllı tamamlamayı kaldırmak için bash tamamlama paketini kaldırabileceğimi biliyorum. Ama pastanı alabilir ve yiyebilir miyim?

Bash'tan önce akıllı tamamlamayı kullanmasını isteyebilir miyim ve bu başarısız olursa, o zaman akıllı olmayan tamamlamayı kullanın?


1
<spam> Zsh yapabilir. </spam>
Gilles 'SO- kötü olmayı bırak'

Yanıtlar:


9

Tar, vim ve emac programları için tüm 'akıllı' tamamlamalar başarısız olduktan sonra aşağıdakiler normal bash tamamlanmasını açmalıdır:

compopt -o bashdefault tar vim emacs

ayrıca çevrimiçi bash el kitabındaki ilgili sayfaya bakınız .

Uyarı: eldeki komut için akıllı tamamlama tarafından tanımlanan tamamlama türü (komutlar / dosya adları / kullanıcı adları vb.) İçin normal davranışı elde edersiniz, örneğin, tamamlama, servicearasanız bile dosya adlarını tamamlamaz complete -o bashdefault service.

Akıllı otomatik tamamlama dilediğiniz zaman basın başarısız bu ve diğer durumlarda Alt-/(veya M-/tam karşı bash kılavuzun gösterimde) dosya adları neredeyse akıllı tamamlama devre dışı bırakılırsa TAB anlamda (neredeyse aynı şekilde çalıştığını aynı şekilde M-/değil gibi tam desenler *.txt). Komut ve kullanıcı adları gibi diğer tamamlama türleri için tuş dizileri için buraya bakın .


2
Alt- / bahsetmek için teşekkürler, orada olduğunu bilmiyordum
Michael Speer

1

bash tamamlama, bash'ın standart tamamlanmasının bir uzantısıdır ve kendisi de bir bash programıdır. Programın nasıl işlediğini değiştirmek istiyorsanız, sadece değiştirin. Bu özgür bir yazılımdır, bunu yapmakta özgürsünüz. tarKomutun özel durumu için dosya /usr/share/bash-completion/completions/tar. İçin taruzantılı bir dosya otomatik tamamlamak için ova, sadece çizgi eklemek

local tars='@(@(tar|gem|spkg)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))'

öyle diyor

local tars='@(@(tar|gem|spkg|ova)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))'

Bunun Debian Wheezy (mevcut kararlı sürüm) için var olan yol ve kod olduğunu unutmayın. Farklı bir dağıtımın veya sürümün farklı bir kodu olabilir, ancak fikir aynıdır. Kodu açın ve yapmak istediğiniz şeyi yapacak şekilde ayarlayın.

Düzenleme: Sadece soru, bir eşleşme bulmak ve ekleme özel durum sadece etmediğini her zaman hakkında olduğunu fark ovaetmek tar. Belki de kaynağı nerede arayabileceklerini bilmek, birileri için hala yararlı olabilir.


4
Paket yöneticisi tarafından sahip olunan / usr dosyalarında değişiklik yapmak, yükseltme sırasında kötü bir şok yaratmanın iyi bir yoludur. Daha iyi: paketlenmiş yapılandırmayı geçersiz kılın.
Chris Down

1
@ChrisDown ve bunu nasıl yapardınız? Hala temiz .bashrc çözümünü arıyorum.
Clayton Stanley
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.