การเติมข้อความอัตโนมัติของเทอร์มินัลทำงานไม่ถูกต้อง


56

ถ้าฉันเริ่มต้นการพิมพ์คำสั่งเช่นapt-gหลังจากโดนtabเปลือกเสร็จสิ้นคำสั่งไปยังapt-getแต่สำหรับส่วนที่สองของคำสั่งเช่นinstallถ้าผมป้อนตัวอักษรบางอย่างเช่นinstaตีไม่เสร็จมันtabinstall

อีกตัวอย่าง: หลังจากฉันsudoกดปุ่มtabก็ไม่ได้ทำอะไรให้เสร็จ ตัวอย่าง: sudo apt-ge[ tab] และไม่มีอะไร

ฉันติดตั้ง Ubuntu โดยใช้ mini iso (ตัวติดตั้งเครือข่าย 40MB) ดังนั้นอาจมีการกำหนดค่าที่ฉันพลาด!

ฉันได้เพิ่มรหัสนี้ในของฉัน.bashrcแต่ก็ยังไม่ทำงาน:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

ฉันได้ตรวจสอบการอนุญาต.bashrcแล้ว-rw-r--r--เช่นกัน

ฉันยังจัดหาการ.bashrcเปลี่ยนแปลงหลังจากใช้source .bashrcเพื่อใช้การเปลี่ยนแปลงกับสภาพแวดล้อมใหม่ แต่ก็ยังไม่มีผลกระทบ

ฉันใช้xfce4-terminalดังนั้นฉันคิดว่าอาจเป็นเทอร์มินัลไม่ใช่การทุบตี

แต่การแก้ไข:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

และการเปลี่ยนแปลง:

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

ไปที่:

<property name="&lt;Super&gt;Tab" type="string" value="empty"/>

ไม่ได้สร้างความแตกต่างเช่นกัน

คำตอบ:


83

bash-completion คือชุดของสคริปต์ทุบตีซึ่งเปิดใช้งานการทำให้เสร็จสิ้นที่กำหนดเองสำหรับคำสั่งเฉพาะ

สิ่งนี้ไม่ได้มีไว้สำหรับไฟล์และไดเรกทอรีเท่านั้น แต่ยังรวมถึงคำสั่งต่างๆ ดังนั้นคุณจึงพิมพ์คำสั่งบางส่วนและกดปุ่มTabเราจะได้รับคำสั่งอัตโนมัติ

การติดตั้ง

ขั้นตอนที่ 1:ติดตั้ง bash-completion

$ sudo apt-get install bash-completion

และบางครั้งก็ใช้งานได้หากเราติดตั้งใหม่โดยคำสั่ง follwing:

$ sudo apt-get install --reinstall bash-completion

ขั้นตอนที่ 2:เปิดใช้งาน bash-completion ใน.bashrcไฟล์ของคุณ

เปิดของคุณgedit ~/.bashrcและหากไม่มีเนื้อหาเหล่านี้อยู่ให้เพิ่มลงที่ส่วนท้ายแล้วบันทึก

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

ข้อสำคัญ:หลังจากการเปลี่ยนแปลงคุณจะต้องระบุแหล่งที่มา~/.bashrcพร้อมกับsource ~/.bashrcหรือเปิดเทอร์มินัลใหม่ มันควรจะแก้ไขในขณะนี้


1
ฉันต้องการยืนยันว่าการเพิ่มบล็อกด้านบนของรหัสลงในไฟล์ ~ / .bashrc นั้นใช้งานได้สำหรับฉัน แค่ความคิดเห็นเดียว; คุณไม่ได้จริงๆต้องออกจากระบบและเข้าสู่ระบบอีกครั้งเพื่อให้การทำงาน (คุณอาจไม่ต้องการที่จะยุติสิ่งที่คุณทำงานใน) source ~/.bashrcคุณก็สามารถเรียกใช้
nullgeppetto

ฉันต้องเปิดเทอร์มินัลใหม่เพื่อให้มันใช้งานได้!
Gilberto Albino

2
ทันใดนั้นการทำงานก็เสร็จสิ้นลงสำหรับฉันขั้นตอนข้างต้นไม่สามารถแก้ไขปัญหาได้ มีความคิดเห็นเกี่ยวกับวิธีการแก้ไขปัญหาหรือไม่ ในอูบุนตู 16.04
Gudlaugur Egilsson

1
ขั้นตอนที่ 2 ทำเพื่อฉัน หรือรับเทมเพลตจาก/etc/skel/.bashrc
Hendy Irawan

1
@SergioIvanuzzo ไม่แน่ใจว่าปัญหาใดที่คุณกำลังเผชิญคุณอาจดูที่unix.stackexchange.com/q/219342/72456มันช่วยได้ไม่เช่นนั้นเปิดคำถามของคุณเองสำหรับปัญหาที่คุณมี
αғsнιη

27

หากกรณีของคุณเป็นแท็บขั้วไม่ได้ทำงานภายใต้Xfce,

วิธีแก้ปัญหามีดังนี้:

  1. เปิดApplication Menu> >SettingsWindow Manager
  2. คลิกที่Keyboardแท็บ
  3. ล้างการSwitch window for same applicationตั้งค่า

ภาพหน้าจอของตัวจัดการหน้าต่างวิธีล้างหน้าต่างสวิทช์สำหรับแอปพลิเคชันเดียวกัน

ฉันพบวิธีแก้ปัญหาที่นี่


พยายาม awnser ที่ยอมรับแล้ว แต่ทุกอย่างเข้าที่แล้ว นี่เป็นทางออกสำหรับฉันอย่างแน่นอน
user1226868

เหมือนกัน คำใบ้ที่ยอดเยี่ยม
cerebrou

ขอบคุณมากฉันเสียความคิดของฉันไปจริงๆ
Dustin Cowles

2
ยังคงเป็นทางออกที่ฉันต้องการ ณ เดือนพฤษภาคม 2018
clifgray

ขอบคุณที่ทำงานให้ฉัน
MMH

3

คุณอาจอยู่ในเชลล์ที่ไม่สนับสนุนการทำให้สมบูรณ์อัตโนมัติ (เช่น Bourne Shell | SH) หากคุณต้องการ BASH auto complete คุณจำเป็นต้องเปลี่ยน shells ให้พูดกับ BASH (Bourne Again SHell) แทนด้วยคำสั่ง

chsh -s /bin/bash

ที่มา: Ubuntu Wiki - การเปลี่ยนเชลล์


1

ในกรณีของฉันฉันพยายามเรียกใช้สคริปต์./myScript.shและการพิมพ์./my[tab]จะไม่ทำให้สมบูรณ์โดยอัตโนมัติ

ฉันต้องเพิ่มการอนุญาตให้ใช้กับไฟล์และทำงานอัตโนมัติให้เสร็จสมบูรณ์

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