Pilih hasil tertentu dari saran penyelesaian

10

Katakanlah saya memiliki 3 file di direktori tertentu: abc.txt, aww.txt, ant.txt

Jika saya lakukan: cat a(dan tekan tab untuk melihat opsi) terminal akan menampilkan 3 nama file:abc.txt, aww.txt, ant.txt

Apakah ada cara untuk memilih hasil ke-n daripada mengetik, dengan menentukan nomor indeks dalam hasil yang ditampilkan terminal?

sesuatu seperti: cat a2untuk mendapatkan file kedua ( aww.txt)?

samsamara
sumber
Bukannya aku sadar. Di Zsh, Anda dapat mengulangi semua penyelesaian yang mungkin mengenai TAB beberapa kali (misalnya, memukul TAB 4 kali akan selesai ant.txt). Itu juga dapat diatur sehingga memungkinkan untuk beralih ke belakang untuk navigasi yang lebih baik. Itu jelas menyiratkan mengubah shell menjadi Zsh sekalipun. Jika Anda menganggap itu alternatif yang cukup baik saya dapat menulis jawaban untuk itu.
kos

Jawaban:

11

Dengan asumsi Anda menggunakan bash, tambahkan berikut ini ke ~/.bashrc:

bind '"\e[6~": menu-complete'
bind '"\e[5~": menu-complete-backward'

Atau untuk mengubah default untuk semua program yang menggunakan perpustakaan penyelesaian readline, bukan hanya bash, buat file yang ~/.inputrcberisi:

$include /etc/inputrc
"\e[6~": menu-complete
"\e[5~": menu-complete-backward

Sekarang ketika Anda membuka terminal baru, Anda dapat menekan:

  • TAB seperti biasa untuk melihat penyelesaian yang tersedia.
  • Pg Dn untuk memilih penyelesaian pertama atau mengubah ke yang berikutnya.
  • Pg Up untuk memilih penyelesaian terakhir atau mengubah ke yang sebelumnya.
  • Alt+ n Pg Dnuntuk memilih penyelesaian ke-n atau pindah ke depan dan ke penyelesaian.

Jadi untuk contoh Anda ketik Pg DnPg Dnatau Alt+ 2Pg Dnuntuk mendapatkan file kedua aww.txt.

Martin Thornton
sumber
Mari berpura-pura Anda menggunakan cddan bersepeda di direktori. Kunci apa yang Anda tekan untuk "memilih" direktori itu dan mulai bersepeda konten direktori itu? Apakah ada hal lain untuk diatur / diikat?
Tony
Alternatif, jika Anda tidak ingin memindahkan tangan terlalu jauh dari baris home keyboard, adalah dengan menggunakan Ctrl + Alt + P alih-alih PageUp dan Ctrl + Alt + N alih-alih PageDown, yang dapat dilakukan melalui bind '"\e\20": menu-complete-backward'dan bind '"\e\16": menu-complete'.
Ruslan