Saya menggunakan bash dan saya bertanya-tanya apakah ada plugin di bash atau shell lain yang memungkinkan saya untuk melakukan ini
cat tfnislong.txt
+ [tab]
selesai cat ThisFileNameIsSoLong.txt
persis seperti penyelesaian tab dalam Teks Sublime.
bash
shell
tab-completion
kayu
sumber
sumber
cat Th
+tab
?Jawaban:
Saya tahu https://github.com/mgalgs/fuzzy_bash_completion yang merupakan sekelompok fungsi shell yang digunakan
complete
.Saya pikir kita mungkin bisa melakukan sedikit lebih baik, lebih ringkas. Saatnya membuka bust .bashrc atau .profile Anda ...
Kait dasar yang kami gunakan adalah ini:
complete -o nospace -o filenames -F fuzzypath cd ls cat
Opsi -F berarti menggunakan fungsi shell untuk penyelesaian tab, di mana opsi diatur dalam
COMPREPLY
variabel. Jadi misalnya:di mana
DIRPATH
segalanya sebelum yang terakhir / di jalan Anda mengetik dan diBASENAME
mana kursor Anda saat ini.FILTER
Di sinilah fuzzy-ness masuk. Pada dasarnya, ambilBASENAME
dan masukkan.*
antara setiap char untuk menghasilkan regex fuzz kami.Sisanya hanya menggabungkan regex dengan ls untuk diproduksi
COMPREPLY
. Anda mungkin menemukan lebih banyak hal pintar untuk dilakukan di sini, mungkin denganfind
.Saya juga menemukan http://fahdshariff.blogspot.com/2011/04/writing-your-own-bash-completion.html berguna.
sumber
Anda mungkin menemukan fzf berguna. Ini adalah fuzzy finder tujuan umum yang ditulis dalam Ruby yang dapat digunakan dengan daftar hal apa saja: file, proses, sejarah perintah, cabang git, dll.
Script instalasinya akan mengatur
CTRL-T
ikatan kunci untuk shell Anda. GIF berikut ini menunjukkan cara kerjanya.sumber
fzf
.. (tput sc) dan kemudian mengembalikannya dengantput rc
..Untuk mengikuti jawaban Anda yang lain, Anda mungkin ingin melihat ke zsh. Ini kompatibel dengan bash sehingga Anda dapat menggunakannya sebagai pengganti, tetapi mendukung fitur yang diperluas secara luas dan salah satunya adalah peningkatan tab yang sangat disadari konteks penyelesaian.
zsh Completion FAQ meluas pada kasus penggunaan, tapi saya yakin bahwa per contoh Anda, Anda akan paling tertarik dengan
COMPLETE_IN_WORD
fungsi ini. Ini bukan perilaku yang diinginkan, tapi dekat. Poin utama adalah bahwa ada banyak cara untuk memperluas fungsionalitas dasar dengan cara yang mungkin lebih mudah didekati daripada menggunakan bash.Berikut adalah ekstensi kecocokan fuzzy yang akan memperkirakan apa yang Anda inginkan secara lebih spesifik; Pertandingan zsh-fuzzy
Untuk beberapa ide, Anda bisa melihat pada kerangka oh-my-zsh yang populer yang memiliki sejumlah fungsi untuk mengelola zsh dan memperluasnya. Ini lebih dari yang Anda inginkan, kemungkinan besar, tetapi di bawah plugin Anda akan mencatat skrip pelengkapan otomatis untuk berbagai peran. Untuk mendapatkan gambaran tentang kapabilitas.
sumber