คุณจะกำหนดคำสั่งให้กับคีย์ใน Terminal ได้อย่างไร


10

มีวิธีแก้ไขปัญหาในการกำหนดคีย์ผสมพิเศษให้กับคำในการใช้งานเทอร์มินัลหรือไม่ ตัวอย่างเช่นคำสั่งน้อยเป็นประโยชน์อย่างมากและฉันใช้ ia มากเพื่อไปป์เอาท์พุทของกระบวนการอื่นผ่านมัน

แนวคิดจะตั้งค่าคีย์ผสมพิเศษที่ใช้งานได้เฉพาะในการใช้เทอร์มินัลที่กำหนดให้เขียนคำสั่งที่แตกต่างกันอย่างไร ดังนั้นการกดCtrl+ Lในหน้าต่างเทอร์มินัลก็สามารถเขียนได้

| less

หรือCtrl+ Gสามารถยืนได้

| grep

หมายเหตุ: ฉันแค่หมายถึงการเพิ่มตัวอักษรใน commandline ไม่ดำเนินการในที่สุด วิธีที่คล้ายกันแท็บการเติมเต็ม แต่มีความเฉพาะเจาะจงมากขึ้น

คำตอบ:


10

ใช่คุณสามารถใช้คำสั่ง bind

bind '"\ey"':"\"less \C-m\""

แมป Alt-e กับคำสั่งที่น้อยกว่าและดำเนินการ (ด้วย \ Cm aka Ctrl-m)

อาจเป็นไปได้สำหรับ คุณต้องหลบหนี

bind '"\ey"':"\"\|less \C-m\""

หากคุณต้องการต่อท้ายบรรทัดคำสั่งให้ลบ * \ Cm \ ""

ระวังเนื่องจากมีการผูกไว้แล้ว:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L                Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Let’s you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab     Auto-complete files and folder names

ปุ่มควบคุมดังที่คุณเห็นด้านบนทำด้วย Cm ดังนั้นคุณสามารถเริ่มต้นคำสั่งน้อยด้วย Ctrl-g ดังต่อไปนี้:

ผูก '"\ Cg"': "\" \ | less * \ Cm \ ""

ในการรับรหัสคีย์สำหรับ Alt (สำหรับ ALT เท่านั้น) คุณสามารถใช้คำสั่ง read จากเชลล์:

@~$ read
^[y

^ [y เท่ากับ \ ey

สำหรับข้อมูลเพิ่มเติมคำถามนี้ได้รับคำตอบใน stackoverflow ด้วย:

/programming/4119991/bash-call-script-with-customized-keyboard-shortcuts


ขอบคุณฉันจะลบการเชื่อมโยงหรือแสดงการรวมทั้งหมดได้อย่างไร
NES

มีบางอย่างผิดปกติกับ 2 ตัวอย่างแรกของคุณ มันจะพิมพ์สัญลักษณ์แทนหลังจากน้อยกว่าเสมอหลังจากที่ฉันกำหนดด้วยไวยากรณ์การโยงของคุณ
NES

ผูก -p และผูก -P จะแสดงการผูกทั้งหมด ฉันทำผิดกับดาว ... ฉันกำลังอัปเดตคำตอบ
tmow

ขอบคุณมาก. บางทีคุณอาจมีความคิดวิธีที่จะบรรลุเป้าหมายเดียวกันในปลา? ฉันเข้าใจแล้วว่ามันทำงานได้ แต่ปัญหาคือปลาดูเหมือนว่าจะดำเนินการคำสั่งโดยอัตโนมัติแทนที่จะเพียงแค่เพิ่มสตริงให้ commandline โดยค่าเริ่มต้น นี่คือ manpage linux.die.net/man/1/bindแต่น่าเสียดายที่ตัวอย่างมีประโยชน์ไม่มากสำหรับกรณีของฉัน
NES

นี่เป็นฟังก์ชั่นในตัวแล้วฉันคิดว่าfishshell.com/user_doc/index.html#editorฟ้องทางลัด Alt-p
tmow
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.