การเติมข้อความอัตโนมัติของเทอร์มินัล: วนผ่านข้อเสนอแนะ


37

ฉันมีสิ่งนี้ในการตั้งค่า Ubuntu ของฉันและตั้งแต่ฉันเปลี่ยนเป็น Fedora ฉันต้องการตั้งค่าและฉันลืมว่า ... แนวคิดนี้ง่าย:

ฉันไม่ต้องการให้เทอร์มินัลแสดงคำแนะนำให้ฉันเมื่อฉันเพิ่มเป็นสองเท่าtabแต่ฉันต้องการให้มันหมุนเวียนไปตามคำแนะนำที่เป็นไปได้ทุกครั้งที่มีการกดแต่ละครั้งtab... สิ่งนี้สามารถทำได้ใน Vim ด้วย

ดังนั้นเมื่อผมพิมพ์gedit aและกดมันจะแสดงให้ฉันทุกไฟล์ที่มีตัวอักษรตัวแรกtaba


คำตอบ:


51

นี้เป็นจริงคุณลักษณะที่ ReadLine menu-completeเรียกว่า คุณสามารถผูกเข้ากับแท็บ (แทนที่ค่าเริ่มต้นcomplete) โดยเรียกใช้:

bind TAB:menu-complete

~/.bashrcคุณอาจต้องการที่จะเพิ่มที่ของคุณ หรือคุณสามารถกำหนดค่าสำหรับความสำเร็จที่ ReadLine ทั้งหมด (ไม่เพียง แต่ทุบตี) ~/.inputrcใน

นอกจากนี้คุณยังอาจพบbind -p(แสดงการผูกปัจจุบันทราบว่าแท็บแสดงให้เห็นว่าเป็น"\C-i") และbind -l(รายการฟังก์ชั่นทั้งหมดที่สามารถผูกพัน) ที่มีประโยชน์เช่นเดียวกับคู่มือการทุบตีของสายการแก้ไขส่วนและเอกสารที่ ReadLine ของ


3
@vanjadjurdjevic: แน่นอนแค่ผูกมันไว้กับกุญแจต่าง ๆ
Derobert

4
menu-completeจะเย็น แต่มันซ่อนรายการข้อเสนอแนะที่เป็นไปได้ทั้งหมด ;-( เป็นไปได้ทั้งสองเห็นรายการและวงจรผ่านตัวเลือก?
Ciro Santilli新疆改造中心法轮功六四事件

2
@CiroSantilli 六四事件法轮功包卓轩ฉันชอบคุณลักษณะนี้ในเชลล์แบบ readline ขณะนี้วิธี zsh ที่จะทำมันยอดเยี่ยมมาก: แท็บแรกของแท็บแรกแสดงความเป็นไปได้ทั้งหมดแท็บที่สองจะเริ่มวนรายการที่เสร็จสมบูรณ์
xuhdev

1
ลองมาหลอกคุณกำลังใช้cdและmenu-completeและการขี่จักรยานมากกว่าไดเรกทอรี คุณกดปุ่มใดเพื่อ "เลือก" ไดเรกทอรีนั้นและเริ่มหมุนเวียนเนื้อหาของไดเรกทอรีนั้น มีสิ่งอื่นที่จะตั้งค่า / ผูกหรือไม่
Tony

1
@Tony ใช่มันจะแทรก แต่ถ้าคุณใช้ทับที่ตกลง-เส้นทางเช่น " /usr/local//" /usr/localยังคงถูกต้องสมบูรณ์และจะเริ่มต้นสิ่งที่เมนูเสร็จสิ้นภายใน
Derobert

6

คุณสามารถวนรอบเมนูเสร็จใน Bash และคุณยังสามารถแสดงเมนูของรายการ ไม่เหมือนกับใน Zsh รายการเมนูปัจจุบันจะไม่ถูกเน้น

เพิ่มไปที่~/.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

เอกสารจาก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.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.