Terminal autocomplete: siklus melalui saran


37

Saya memiliki ini pada pengaturan Ubuntu saya dan karena saya beralih ke Fedora saya ingin mengaturnya dan saya lupa bagaimana ... Idenya sederhana:

Saya tidak ingin terminal menunjukkan kepada saya saran ketika saya menggandakan tab, sebaliknya saya ingin terminal untuk menelusuri setiap saran yang mungkin dengan setiap pers pada tab... ini dapat dilakukan di Vim juga.

Jadi ketika saya mengetik gedit adan menekannya tabakan menunjukkan kepada saya setiap file dengan huruf pertama a.


Jawaban:


51

Ini sebenarnya adalah fitur readline yang disebut menu-complete. Anda dapat mengikatnya ke tab (mengganti default complete) dengan menjalankan:

bind TAB:menu-complete

Anda mungkin ingin menambahkan itu ke ~/.bashrc. Atau, Anda bisa mengonfigurasinya untuk semua penyelesaian readline (bukan hanya bash) di ~/.inputrc.

Anda juga dapat menemukan bind -p(tampilkan binding saat ini, perhatikan yang menunjukkan tab as "\C-i") dan bind -l(daftarkan semua fungsi yang dapat dijilid) bermanfaat, serta bagian pengeditan baris bash manual dan dokumentasi readline .


3
@vanjadjurdjevic: Tentu, cukup ikat mereka ke tombol yang berbeda.
derobert

4
menu-completekeren, tetapi menyembunyikan daftar semua saran yang mungkin ;-( Apakah mungkin untuk melihat daftar dan pilihan siklus melalui?
Ciro Santilli i 改造 中心 法轮功 六四 六四 事件

2
@CiroSantilli 六四 事件 法轮功 包 卓 轩 Saya juga suka fitur ini di shell berbasis readline. Saat ini cara zsh untuk melakukannya sangat keren: hit pertama tab menunjukkan semua kemungkinan, hit kedua tab mulai bersepeda item selesai.
xuhdev

1
Mari kita berpura-pura Anda menggunakan cddan menu-completedan bersepeda lebih direktori. Kunci apa yang Anda tekan untuk "memilih" direktori itu dan mulai bersepeda konten direktori itu? Apakah ada hal lain untuk diatur / diikat?
Tony

1
@Tony ya, itu akan memasukkannya. Tetapi jika Anda menggunakan forward slash, tidak apa-apa — jalan seperti " /usr/local//" masih sangat valid, dan akan memulai hal-hal penyelesaian menu di dalamnya /usr/local.
derobert

6

Anda dapat menggilir menu penyelesaian di Bash, dan Anda juga dapat menampilkan menu item. Tidak seperti di Zsh, item menu saat ini tidak akan disorot.

Tambahkan ke ~/.inputrc:

set show-all-if-ambiguous on
set show-all-if-unmodified on
set menu-complete-display-prefix on
"\t": menu-complete
"\e[Z": menu-complete-backward

Dokumentasi dari man bash:

Readline Variables
    menu-complete-display-prefix (Off)
           If set to On, menu completion displays the common prefix of the
           list of possible completions (which may be empty) before cycling
           through the list.
    show-all-if-ambiguous (Off)
           This alters the default behavior of the completion functions. If
           set to On, words which have more than one possible completion
           cause the matches to be listed immediately instead of ringing
           the bell.
    show-all-if-unmodified (Off)
           This alters the default behavior of the completion functions in
           a fashion similar to show-all-if-ambiguous. If set to On, words
           which have more than one possible completion without any
           possible partial completion (the possible completions don't
           share a common prefix) cause the matches to be listed
           immediately instead of ringing the bell.

Completing
    menu-complete
          Similar to complete, but replaces the word to be completed with
          a single match from the list of possible completions. Repeated
          execution of menu-complete steps through the list of possible
          completions, inserting each match in turn. At the end of the list
          of completions, the bell is rung (subject to the setting of
          bell-style) and the original text is restored. An argument of
          n moves n positions forward in the list of matches; a negative
          argument may be used to move backward through the list. This
          command is intended to be bound to TAB, but is unbound by
          default.
    menu-complete-backward
          Identical to menu-complete, but moves backward through the list
          of possible completions, as if menu-complete had been given
          a negative argument. This command is unbound by default.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.