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 COMPREPLY
değ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 DIRPATH
yazdığınız son / yolunuzdaki her şey ve BASENAME
imlecinizin bulunduğu yer.
FILTER
Bulanıklığın devreye girdiği yerdir. Temel olarak, bulanık grafikimizi üretmek için her karakter BASENAME
arası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-T
kabuğ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_WORD
iş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
?