Yanıtlar:
Https://github.com/mgalgs/fuzzy_bash_completion ile birlikte kullanılan bir grup kabuk işlevi olduğunu biliyorum complete.
Sanırım muhtemelen biraz daha iyisini yapabiliriz, daha özlü olabiliriz. .Bashrc veya .profile dosyanızı açma zamanı ...
Kullandığımız temel kanca şudur:
complete -o nospace -o filenames -F fuzzypath cd ls cat
-F seçeneği, sekme tamamlama için seçeneklerin COMPREPLYdeğişkente ayarlandığı bir kabuk işlevi kullanılması anlamına gelir . Yani mesela:
işlev fuzzypath () {
eğer [-z $ 2]
sonra
UYUM = (`ls`)
Başka
DIRPATH = "echo" $ 2 "| gsed 's | [^ /] * $ ||' '
BASENAME = "echo" $ 2 "| gsed 's |. * / ||' '
FİLTRE = "echo" $ BASENAME "| gsed 's |. | \ 0. * | g'`
COMPREPLY = (`ls $ DIRPATH | grep -i" $ FILTER "| gsed" s | ^ | $ DIRPATH | g "")
fi
}
nerede DIRPATHyazdığınız son / yolunuzdaki her şey ve BASENAMEimlecinizin bulunduğu yer.
FILTERBulanıklığın devreye girdiği yerdir. Temel olarak, bulanık grafikimizi üretmek için her karakter BASENAMEarasına bir tane ekleyin ve ekleyin .*.
Gerisi sadece regex'i ls ile birleştiriyor COMPREPLY. Burada yapmak için daha akıllıca şeyler bulabilirsiniz find.
Ayrıca http://fahdshariff.blogspot.com/2011/04/writing-your-own-bash-completion.html dosyasını yararlı buldum .
FZF'yi yararlı bulabilirsiniz . Ruby'de yazılmış, her şey listesiyle kullanılabilen genel amaçlı bir bulanık bulucu: dosyalar, işlemler, komut geçmişi, git dalları, vb.
Kurulum betiği CTRL-Tkabuğunuz için tuş bağlama ayarlayacaktır . Aşağıdaki GIF nasıl çalıştığını gösterir.

fzf.. (tput sc) ve daha sonra ile geri yükleme tput rc..
Diğer cevabınızla birlikte gitmek için zsh'ye bakmak isteyebilirsiniz. Bash ile geriye doğru uyumludur, bu yüzden değiştirme sırasında bir damla olarak kullanabilirsiniz, ancak önemli ölçüde genişletilmiş özellikleri destekler ve bunlardan biri bağlam farkındalık sekmesinin tamamlanmasıdır.
zsh Tamamlama SSS kullanım durumlarını genişletir, ancak örneğinize göre COMPLETE_IN_WORDişleve en çok ilgi duyacağınıza inanıyorum . Tam olarak istenen davranış değil, yakın. Ana nokta, temel işlevselliği bash kullanmaktan daha ulaşılabilir bir şekilde genişletmenin birçok yolu olmasıdır.
İstediğinizi daha spesifik olarak tahmin edebileceğiniz bulanık bir eşleme uzantısı; zsh-bulanık maç
Bazı fikirler için, zsh'ı yönetmek ve genişletmek için bir dizi işlevi olan popüler oh-my-zsh çerçevesine göz atabilirsiniz . Muhtemelen istediğinizden daha fazla, ancak eklentilerin altında çeşitli roller için otomatik tamamlama komut dosyalarını not edeceksiniz. Yetenekler hakkında fikir sahibi olmak.
cat Th+ değiltab?