ฉันสามารถสร้างตัวพิมพ์เล็กและตัวพิมพ์ใหญ่แบบอัตโนมัติในแท็บได้หรือไม่


144

เทอร์มินัลของอูบุนตูใช้การเติมข้อความอัตโนมัติให้ตรงตามตัวพิมพ์ใหญ่ - เล็กอย่างที่ฉันคิดว่าน่าจะเป็น Linux

แต่ฉันคิดว่ามันจะสะดวกกว่าถ้าจะใช้ตัวพิมพ์เล็กและตัวพิมพ์เล็กแทนเพื่อช่วยให้คุณไม่ต้องถูกต้องในขณะที่เริ่มต้นชื่อและอาจจะคุ้มค่ากับผลบวกปลอมเพิ่มเติม เป็นไปได้ไหมที่จะเปลี่ยนพฤติกรรมนี้


คำถามที่ดีมาก ในฐานะที่เป็นเครื่องมือในการใช้งานการทำให้แท็บเสร็จสมบูรณ์ไม่ควรเข้มงวดเท่ากับระบบคอมพิวเตอร์โดยทั่วไปเมื่อพูดถึงเรื่องการตั้งชื่อ
masterxilo

คำตอบ:


169

เพื่อให้bashคำนึงถึงขนาดตัวพิมพ์สำหรับผู้ใช้ปัจจุบัน:

รันเชลล์สคริปต์ต่อไปนี้ในเทอร์มินัล:

# If ~/.inputrc doesn't exist yet: First include the original /etc/inputrc
# so it won't get overriden
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi

# Add shell-option to ~/.inputrc to enable case-insensitive tab completion
echo 'set completion-ignore-case On' >> ~/.inputrc

เริ่มเชลล์ใหม่ (เปิดเทอร์มินัลใหม่)

วิธีทำการเปลี่ยนแปลงทั่วทั้งระบบ:

# add option to /etc/inputrc to enable case-insensitive tab completion for all users
echo 'set completion-ignore-case On' >> /etc/inputrc
# you may have to use this instead if you are not a superuser:
echo 'set completion-ignore-case On' | sudo tee -a /etc/inputrc

ดูรายละเอียดman bashได้ที่ ใช่มันเป็นหน้ายาว แต่ bash เป็นโปรแกรมที่ค่อนข้างซับซ้อนและหากคุณต้องการเพียงแค่ค้นหาหน้านั้นสำหรับ "case-insensitive" เพื่อไปที่ส่วนที่เกี่ยวข้อง ผู้คนมักจะเรียนรู้การทุบตีหนึ่งตัวเลือกในแต่ละครั้งหรือหนึ่งครั้งในการทุบตีสคริปต์และมันใช้เวลานานในการควบคุมความแตกต่างทั้งหมด ความสนใจของคุณอาจแตกต่างกันไป


ขอบคุณ ฉันขอขอบคุณโซลูชันที่เป็นมิตรกับผู้ใช้ / ไม่ใช่ผู้ดูแลระบบ ดูเหมือนว่าเสียงสะท้อนจะทำงานได้ แต่ตอนนี้ฉันดูเหมือนจะสูญเสียความสามารถในการใช้ Ctrl-Left / Right เพื่อเลื่อนเคอร์เซอร์ นอกจากนี้จะ>>ปลอดภัยกว่า>ไหม?
mwfearnley

โดยทั่วไป >> จะปลอดภัยกว่าความผิดพลาดของฉันฉันคิดว่าคุณไม่มี ~ / .inputrc ฉันยังตั้งค่า noclobber =) บิตให้แน่ใจว่าทำไมปุ่มลูกศรของคุณไม่ทำงานฉันไม่สามารถทำซ้ำได้ คุณสามารถลบ ~ / .inputrc และเริ่มเชลล์ใหม่
Panther

ใช่มันทำงานได้อีกครั้งถ้าฉันลบมัน .. ตามlinuxfromscratch.org/blfs/view/5.1/postlfs/inputrc.html inputrc ใหม่อาจจะแทนที่ทั่วโลกหรือไม่
mwfearnley

2
อึศักดิ์สิทธิ์ฉันคัดลอกสิ่งนี้ลงใน / etc / inputrc และฉันไม่สามารถพิมพ์ "i" อีกต่อไปและเมื่อฉันพิมพ์ "e" มันแค่ spams "ssssssssss [.. ]" ลงในคอนโซล .. ดีกว่าใช้โซลูชันจาก @ emtin4
Luca Steeb

2
@ LucaSteeb ฉันก็กดทับเหมือนกัน แต่เมื่อรู้แล้วว่าบล็อกทั้งหมดนี้ไม่ควรใส่ใน. inputc ของคุณ แต่พิมพ์ครั้งเดียว เฉพาะ$include /etc/inputrcและset completion-ignore-case onควรอยู่ในไฟล์ ~ ..inputrc ของคุณ
Chris

49

เปิดเทอร์มินัลแล้วพิมพ์คำสั่งด้านล่าง:

echo set completion-ignore-case on | sudo tee -a /etc/inputrc

ใส่รหัสผ่าน. รีสตาร์ทเทอร์มินัล

หากในบางกรณีคุณต้องการลบ case insensitive ให้แก้ไขไฟล์ / etc / inputrc โดยการลบset completion-ignore-caseบรรทัด

นั่นคือทั้งหมดที่


ตกลงฉันชี้แจงให้คุณฟัง ใช้เวลาสักครู่เพื่อเรียนรู้เกี่ยวกับ bash แต่ให้สำรวจสำรวจและถามต่อไป linuxcommand.orgเป็นจุดเริ่มต้นที่เป็นที่นิยม;)
Panther

3
ในกรณีที่มีผู้ใช้มากกว่าหนึ่งรายการเปลี่ยนแปลงนี้สำหรับทุกคนซึ่งอาจจะใช่หรือไม่ใช่พฤติกรรมที่ต้องการ
Walter Tross

2
โดยคำตอบที่ตรงไปตรงมาและง่ายที่สุดที่นี่ไกล
workabyte

คำตอบที่ง่ายและชัดเจน
Developerium

12

ฉันรู้ว่าคำถามนี้เก่ามาก แต่ถ้าฉันไม่ได้ทำอะไรฉันคิดว่าฉันมีทางออกที่ง่ายมากถ้าคุณใช้ทุบตี

echo "bind 'set completion-ignore-case on'" >> ~/.bashrc

หรือเพียงเพิ่มบรรทัดโดยใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบ รีสตาร์ทเซสชัน bash และเพลิดเพลิน


2
ทีนี้คุณไม่มีอะไร: ~/.inputrcอ่านโดย readline ซึ่งเป็นสิ่งที่ทุบตีใช้ในการทำสิ่งนี้ให้สำเร็จ Readline ยังใช้โดยโปรแกรมอื่น ๆ ดังนั้นสำหรับการตั้งค่านี้โดยทั่วไป~/.inputrcตามคำแนะนำคำตอบที่ยอมรับจะดีกว่า
muru

ขอบคุณสำหรับคำแนะนำของคุณมันสอนให้ฉันมากกว่านี้เล็กน้อย แต่ฉันต้องบอกว่ามันดูไม่ง่ายไปกว่าที่ฉันยอมรับซึ่งเพิ่งใช้บรรทัดเพิ่มเติมเพื่อให้แน่ใจว่าไฟล์ใหม่จะไม่ลบล้างสิ่งเก่า
mwfearnley

สมบูรณ์ สิ่งเดียวที่bind 'set completion-ignore-case on'ควรจดจำคือควรขึ้นบรรทัดใหม่ของ.bashrc
Vishrant

3

คุณสามารถทำได้โดยการตั้งค่าตัวแปรการกำหนดค่าสำหรับ readline GNU ซึ่งเป็นสิ่งที่จัดการอินพุตในเชลล์แบบโต้ตอบ

ตัวแปรที่ต้องการคือcompletion-ignore-caseและสามารถตั้งค่าโดยตรงในเซสชัน bash ของคุณด้วย:

bind "set completion-ignore-case on"

สามารถเปิดใช้งานสำหรับเซสชันการทุบตีในอนาคตทั้งหมดโดยวางไว้ใน~/.inputrcไฟล์ของผู้ใช้หรือระบบ/etc/inputrcเพื่อเปิดใช้งานสำหรับผู้ใช้ทุกคน นี่เป็นไฟล์เริ่มต้นสำหรับ readline

แต่ทราบว่าถ้าคุณสร้าง~/.inputrcนี้จะแทนที่สำเนาระบบ (สำหรับฉันสิ่งนี้ทำให้ฉันสูญเสียการแม็พคีย์บางอย่างเช่นCtrl-Left/ Rightคุณสามารถดูว่าอันไหนโดยการอ่าน/etc/inputrcไฟล์)
วิธีการแก้ไขปัญหานี้คือการวางบรรทัด$include /etc/inputrcที่ด้านบนสุด~/.inputrcเช่น:

$include /etc/inputrc

set completion-ignore-case on

เมื่อต้องการใช้การเปลี่ยนแปลงทุบตีเริ่มต้นใหม่หรือโหลด inputrcเช่นกับ,Ctrl+xCtrl+r

ข้อมูลเพิ่มเติมเกี่ยวกับ ReadLine inputrc และสามารถพบได้ในและman bashman 3 readline

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