Bagaimana cara membuat terminal autocomplete ketika ada beberapa file / direktori?
32
Jika saya memiliki beberapa direktori, seperti:
afoo abar
kadang-kadang terminal saya akan menolak pelengkapan otomatis ketika saya menekan tab (misalnya "cd a" lalu tab), dan mencetak daftar direktori sebagai gantinya. Kadang-kadang bahkan mengeluarkan suara berisik dan menjengkelkan. Adakah yang tahu bagaimana cara membuatnya secara otomatis dalam kasus seperti ini? Misalnya itu bisa menunjukkan abar dulu, dan kemudian afoo jika saya tekan tab lagi. Saya melihat ini adalah kasus di windows, atau beberapa aplikasi di Ubuntu
Sesuatu yang merupakan penyelamat bagi saya adalah memiliki siklus bash melalui kemungkinan bukannya menunjukkan daftar bodoh.
Saat bash menggunakan readlineuntuk pelengkapan otomatisnya, tambahkan baris berikut ke~/.inputrc
Setelah Anda puas dan telah diuji secara menyeluruh di bawah ini solusi untuk beberapa hari / minggu, cut dan paste (tidak copy!) Pengaturan yang sama dari ~/.inputrcke /etc/inputrcyang berisi pengaturan sistem-lebar, membuat ini tersedia untuk semua pengguna di sistem Anda (termasuk tamu).
Kodez:
# mappings to have up and down arrow searching through history:"\e[A": history-search-backward"\e[B": history-search-forward# mappings to have left and right arrow go left and right: "\e[C": forward-char"\e[D": backward-char# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:"\t": menu-complete"\e[Z": menu-complete-backward
kemudian exitterminal Anda (atau terminal jarak jauh seperti dempul) dan buka lagi ...
Contoh:
Bila Anda memiliki 3 file: file1, file2dan file3dan Anda ketik:
e fTabTabTab
akan berputar melalui:
e file1
e file2
e file3
dan ketika Anda ingin siklus mundur, cukup tekan Shift+Tab
Saat Anda mengetik:
very-complicated-command with lots of command line parameters
dan lain kali Anda membutuhkan perintah yang sama, Anda cukup mengetik:
very↑
dan itu akan diketik untuk Anda:
very-complicated-command with lots of command line parameters
Ini cukup bagus, terima kasih (dan dapatkan upvote saya). Apakah ada cara universal untuk menunjukkan opsi yang akan dilaluinya, yang menggabungkan yang terbaik dari kedua dunia? Saya suka tab + tab kemungkinan dengan folder dan sub - perintah, dll. Jadi saya tidak harus mengingat semuanya (mis git branch <tab through branches>. Namun, jika saya bisa melihat daftar dan tab melalui item-itemnya, itu akan bagus! Untuk direktori dan file lsadalah pilihan untuk melihat barang apa saja yang tersedia. Namun, untuk subperintah itu tidak mudah atau jelas, sayangnya
Erik
Ini juga berfungsi pada Putty! Hanya harus me-restart sekali :)
np8
@Erik: Rupanya, apa yang Anda minta itu mungkin tetapi tidak akan mengedit jawaban saya untuk menjaga hal-hal yang sederhana di sini. (menghapus komentar lama yang tidak mungkin)
Fabby
18
Setelah tanggal 1 tabAnda harus memasukkan lebih banyak surat. Jadi, jika Anda mengetik
cd a
dan tekan tabAnda tidak mendapatkan apa-apa dan setelah satu detik tab(segera mengikuti) Anda mendapatkan daftar nama yang dimulai dengan adan kemudian perlu memasukkan funtuk memilikinya secara otomatis menyelesaikan sisanya sehingga
IMHO: Ini adalah cara yang benar. Saya pribadi menemukan perilaku windows sangat mengganggu. Pertimbangkan kasus di mana Anda memiliki banyak file dimulai dengan adan Anda membutuhkan yang terakhir. Ketika Anda secara tidak sengaja menekan tab setelah aAnda harus menelusuri daftar semua penyelesaian yang mungkin untuk sampai ke yang benar.
Tobias
@Tobias: ketika Anda secara tidak sengaja menekan [Tab] terlalu dini menggunakan sistem lain , masih ada [Ctrl] [K] ... ;-)
~/.inputrc
mungkin lebih disukai daripada/etc/inputrc
, dan 2. Saya pikir Anda dapat mengatur inibash
secara langsung: unix.stackexchange.com/q/55203/70524 , unix.stackexchange.com/a/16926/70524git branch <tab through branches>
. Namun, jika saya bisa melihat daftar dan tab melalui item-itemnya, itu akan bagus! Untuk direktori dan filels
adalah pilihan untuk melihat barang apa saja yang tersedia. Namun, untuk subperintah itu tidak mudah atau jelas, sayangnyaSetelah tanggal 1 tabAnda harus memasukkan lebih banyak surat. Jadi, jika Anda mengetik
dan tekan tabAnda tidak mendapatkan apa-apa dan setelah satu detik tab(segera mengikuti) Anda mendapatkan daftar nama yang dimulai dengan
a
dan kemudian perlu memasukkanf
untuk memilikinya secara otomatis menyelesaikan sisanya sehinggacd a
tabtabf
tabtabakan menghasilkan
sumber
a
dan Anda membutuhkan yang terakhir. Ketika Anda secara tidak sengaja menekan tab setelaha
Anda harus menelusuri daftar semua penyelesaian yang mungkin untuk sampai ke yang benar.