Shortcut keys สำหรับ Bash
ได้ทั้ง linux และ macOS
Working With Processes
ctrl + c
ยกเลิก process ที่ทำงานอยู่ foregound ด้วยการส่งสัญญาน SIGINT ไปหา process ซึ่งในทางเทคนิคเป็นการส่ง request ไป จะยกเลิก ไม่ยกเลิกขึ้นอยู่กับ process นั้น ๆctrl + z
พัก process ที่ทำงานอยู่ foreground ใน session ของ bash นั้น ๆ ด้วยการส่งสัญญาณ SIGTSTP สามารถเรียกคืนได้ด้วยคำสั่งfg ชื่อ_process
ctrl + d
ปิด bash shell ด้วยการส่ง EOF (End-of-file) ไปหา bash ท่านี้เหมือนกับใช้คำสั่ง exit
Controlling the Screen
ctrl + l
ล้างค่าบนหน้าจอ แบบเดียวกับการพิมพ์คำสั่งclear
ctrl + s
(bash) หยุดการแสดงผลบนหน้าจอ แต่โปรแกรมยังทำงานอยู่ctrl + q
ให้การหยุดจากctrl + s
กลับมาทำงานอีกครั้ง
Moving the Cursor
ctrl + a
หรือHome
ไปหน้าสุดของบรรทัดctrl + e
หรือEnd
ไปหลังสุดของบรรทัดctrl + b
ไปตัวอักษรก่อนหน้า (ไปทางซ้าย)meta + b
ไปคำก่อนหน้า (ไปทางซ้าย)ctrl + f
ไปตัวอักษรถัดไป (ไปทางขวา)meta + f
ไปคำถัดไป (ไปทางขวา)ctrl + xx
กดctrl
ค้างไว้แล้วกดx
สองครั้งจะเป็นการกระโดด cursor ไปหน้าสุดของบรรทัด ทำซ้ำอีกครั้งจะกลับมาที่เดิม
หมายเหตุ นับว่าเป็นคำก็ต่อเมื่อมีเว้นวรรค และต้องประกอบไปด้วยอักษรหรือตัวเลขด้วย ถ้าไม่มีจะถูกข้าม
ใน linux
meta
คือปุ่มalt
ใน mac ถ้าใช้ terminal สามารถตั้งค่าได้ที่
Terminal (Menu) -> Preferences… (⌘ ,) -> Profile -> ด้านซ้ายเลือกอันที่ใช้งาน -> Keyboard -> [✓] Use Option as Meta keyสำหรับ iTerm ให้ไปที่ iTerm2 (Menu) -> Preferences… -> Profiles -> ด้านซ้ายเลือก profile อันที่ต้องการแก้ไข -> Keys -> ปรับให้เป็น Esc+ ซึ่งจะปรับทั้งปุ่มซ้าย และปุ่มขวาก็ได้ ส่วนของผมเก็บปุ่มขวาไว้กดอักขระพิเศษเล่น
หรือทั้ง iTerm2 และ Terminal สามารถกด Esc
1 ครั้งแล้วค่อยกด key ก็ได้
Deleting Text
ctrl + d
หรือdelete
ลบตัวอักษรตรง cursormeta + d
ถ้าอ cursor อยู่ในคำจะลบตั้งแต่ cursor ไปจนถึงตัวอักษรสุดท้ายของคำ ถ้าอยู่ระหว่างคำจะลบคำถัดไปctrl + h
ลบตัวอักษรก่อนหน้า cursor
Fixing Typos
meta + t
สลับคำกับคำก่อนหน้าctrl + t
สลับตัวอักษรสองตัวสุดท้ายก่อนหน้า cursorctrl + -
ย้อนคำสั่งสุดท้ายได้เรื่อย ๆ
Cutting and Pasting
ctrl + w
ตัดตั้งแต่ก่อน cursor ไปจนถึงตัวอักษรแรกของคำctrl + k
ตัดตั้งแต่ cursor ไปจนถึงตัวสุดท้ายctrl + u
(bash) ตัดตั้งแต่ก่อน cursor ไปจนถึงตัวแรกctrl + u
(zsh) ตัดทั้งบรรทัดctrl + y
วางตัวอักษรที่ถูกตัด
Capitalizing Characters
meta + u
ให้ตัวษรเป็นพิมพ์ใหญ่ตั้งแต่ตัวที่ cursor อยู่ จนถึงตัวสุดท้ายของคำ และเลื่อน cursor ไปหลังคำที่ถูกเปลี่ยนmeta + l
ให้ตัวอักษรเป็นพิมพ์เล็กตั้งแต่ตัวที่ cursor อยู่ไปจนถึงตัวสุดท้ายของคำmeta + c
สลับพิทพ์เล็กพิทพ์ใหญ่ตรงที่ cursor อยู่
Tab Completion
Tab
ช่วยเติมคำให้เต็ม หรือบอกใบ้คำสั่งถัดไป
Working With Your Command History
ctrl + p
หรือลูกศรขึ้น
แสดงคำสั่งที่ใช้ก่อนหน้า (history) สามารถกดเผื่อดูคำสั่งที่ถูกใช้ก่อนหน้าได้เรื่อย ๆctrl + n
หรือลูกศรลง
แสดวคำสั่งถัดไปจาก history สามารถกดได้เรื่อย ๆmeta + r
แก้คำสั่งให้กลับไปเหมือนตาม history ถ้ามีการแก้ไขctrl + r
ค้นหาคำสั่งที่เคยใช้ไปก่อนหน้า (แบบ backward)ctrl + s
(zsh) ค้นหาสำสั่งที่เคยใช้แบบ forwardctrl + o
รันคำสั่งที่พบในctrl + r
ทันที เท่าที่ลองใช้ใน terminal ได้แต่ใน iTerm2 ไม่ได้ แต่สามารถใช้tab
หรือEsc
แล้วEnter
แทนได้ctrl + g
ออกจากctrl + r
โดยไม่รันคำสั่ง และไม่เอา command มาด้วย
Other
ctrl + j
ใช้แทนปุ่มenter ⏎
หรือreturn ⮐
ctrl + v, tab
เพิ่มตัวอักษรtab
หรือ\t
เข้าไปใน command line
คนที่สอนผมใช้ keys บอกว่า ถ้าคุณใช้ได้ โดยไม่ใช้ลูกศร หรือ Home, End, Esc ได้จะลดเวลาจากการละมือจาก keyboards และเวลาในการพามือกลับมาสู่ตำแหน่งเดิมได้
อ้างอิง