มีวิธีข้ามไปยังส่วนก่อนหน้าของคำสั่งบรรทัดคำสั่งใน Mac Terminal หรือไม่


9

ฉันมักจะพบว่าตัวเองเขียนคำสั่งยาว ๆ ใน bash shell - สิ่งที่มีข้อโต้แย้งมากมายที่อยู่เว็บเส้นทางและอื่น ๆ บ่อยครั้งที่ฉันจะรู้ว่าฉันลืมพูดวาง "bundle exec" ของฉันที่จุดเริ่มต้นของคำสั่งหรือสะกดผิดบางสิ่งบางอย่างหรือลืมคำพูด หรือบางสิ่งบางอย่างเพียงวาง "cd" แทน "vim"

ดังนั้นเริ่มต้นกระบวนการที่น่าเบื่อในการกดปุ่มลูกศรซ้ายจนกว่าฉันจะกลับไปที่จุดเริ่มต้นของคำสั่ง

มีวิธีใดบ้างที่จะข้ามไปยังจุดเริ่มต้นของบรรทัดอีกครั้งหรือไม่?


2
คุณอาจต้องการกำจัดแอปเทอร์มินัลเริ่มต้นและดาวน์โหลด iTerm
Clement Herreman

ทำไม? ฉันเพิ่งตรวจสอบและดูเหมือนว่าจะทำงานเหมือนกันมาก (ปุ่มโฮมใช้งานได้ในตอนนี้ แต่เนื่องจากฉันมีปุ่มอื่นที่ไม่สำคัญ) ข้อเสนออะไรที่ทำให้มูลค่าการทำซ้ำการตั้งค่าและการกำหนดค่าและงานทั้งหมดของฉันและอะไรไม่ได้
GlyphGryph

ดูเหมือนว่าบางสิ่งบางอย่างที่คุณสามารถติดตั้งด้วย. inputrc
Rob

นอกจากนี้หากต้องการข้ามไปทีละคำให้ใช้⌥Bและ⌥Fเพื่อข้ามไปมาตามลำดับ
fideli

@fideli แต่เฉพาะเมื่อคุณเปิดใช้งาน“ ใช้ตัวเลือกเป็นคีย์เมตา” โปรดทราบว่าในฐานะของ Mac OS X Lion 10.7 การตั้งค่าแป้นพิมพ์เริ่มต้นของเทอร์มินัลแผนที่ลูกศรซ้าย / ลูกศรขวาไปที่ Esc-b / f จึงไม่มีการกำหนดค่าที่จำเป็น
Chris Page

คำตอบ:


12

นอกจาก ^ A และ ^ E แล้วคุณสามารถทำได้

  • Esc- bเพื่อย้อนกลับหนึ่งคำ
  • Esc- fเพื่อกระโดดไปข้างหน้าหนึ่งคำ
  • Ctrl- bเพื่อเลื่อนอักขระหนึ่งตัวกลับ
  • Ctrl- fเพื่อเลื่อนไปข้างหน้าหนึ่งตัวอักษร

ดูคู่มือการทุบตีสำหรับคำสั่งสำหรับการเคลื่อนย้าย


สิ่งที่ควรทราบ - นี่คือจาก Emacs และโดยการเพิ่มemacsตัวเลือกใน shellopts ของคุณคุณจะได้รับมากกว่านั้น
TC1

6

คุณสามารถใช้คำสั่ง Emacs เช่น:

  • ctrl- เพื่อไปที่จุดเริ่มต้นของบรรทัดคำสั่ง
  • ctrl-E เพื่อไปยังจุดสิ้นสุดของบรรทัดคำสั่ง

นี่คือทุบตีไม่เฉพาะกับ Mac


3
set -o vi

จากนั้นEscตามด้วย

^เริ่มต้นของบรรทัด $สุดท้ายของบรรทัด bหนึ่งคำ backword wหนึ่งคำไปข้างหน้า


ฉันเป็นแฟนตัวยงของ Vim ดังนั้นหลักการของคำตอบของคุณนั้นยอดเยี่ยมมาก แต่การแก้ไขบรรทัดคำสั่งแบบโมดอลอาจสร้างความสับสนให้กับ OP เล็กน้อยโดยเฉพาะอย่างยิ่งโดยไม่ต้องเอ่ยถึงวิธีการกลับมาพิมพ์อีกครั้ง! กลับไปที่โหมดแทรกโดยใช้i(แทรก) เพื่อพิมพ์ก่อนเคอร์เซอร์หรือa(ผนวก) เพื่อพิมพ์หลังเคอร์เซอร์
Cascabel

ฉันใช้ vi เป็นตัวแก้ไขข้อความหลักของฉันมานานหลายทศวรรษ แต่ฉันยังคงชอบการผูกปุ่ม emacs สำหรับเปลือกของฉัน
Keith Thompson

อันที่จริง OP ใช้เสียงเรียกเข้าสำหรับการแก้ไขข้อความทั้งหมดดังนั้นการรู้ว่าคุณสามารถตั้งค่ามาตรฐาน vi มีประโยชน์อย่างน่าอัศจรรย์ ขอบคุณมาก!
GlyphGryph

@ Kieth Thompson: ฉันเคยคิดเหมือนกัน ฉันแค่คิดว่าเชลล์ไม่เข้ากันกับสิ่งที่เปลี่ยนโหมดนี้ (เช่นvคีย์ที่น่ารำคาญในโหมด vi) แต่หลังจากนั้นไม่นานฉันเพิ่งติดเชื้อกลุ่มดังนั้นฉันขอแนะนำให้คุณลอง: P
kizzx2

1

สิ่งนี้ไม่ได้ตอบคำถามของคุณ แต่อาจแก้ปัญหาของคุณได้ในบางกรณี

ในโทเค็นถูกแทนที่ด้วยคำสั่งก่อนหน้าของคุณ ดังนั้นหากคุณลืมเพิ่มบางอย่างลงในส่วนเริ่มต้นของคำสั่ง (เช่น) คุณสามารถทำสิ่งนี้ได้bash!!sudo

# ./super_secret_command --with-args
=> ACCESS DENIED

# sudo !!
sudo ./super_secret_command --with-args
=> ACCESS GRANTED

0

คุณสามารถกำหนดค่าCtrl/Opt+Left/Rightทางลัดปกติสำหรับใช้ใน Terminal ด้วยวิธีนี้คุณไม่จำเป็นต้องเรียนรู้ทุกสิ่งใหม่เมื่อคุณใช้ Terminal

เปิดเทอร์มิ» Preferences ... »การตั้งค่า» (เลือกรูปแบบ) »คีย์บอร์ด

ที่นั่นกำหนดทางลัดต่อไปนี้:

  • Control + Cursor Left: ส่งสตริง\033[1~ไปยังเชลล์
  • Control + Cursor Right: ส่งสตริง\033[4~ไปยังเชลล์
  • Option + Cursor Left: ส่งสตริง\033[5Dไปยังเชลล์
  • Option + Cursor Right: ส่งสตริง\033[5Cไปยังเชลล์

ฉันชอบสิ่งต่อไปนี้ ( Fn + Left/Right):

  • Home: ส่งสตริง\033[1~ไปยังเชลล์
  • End: ส่งสตริง\033[4~ไปยังเชลล์

ป้อนคำอธิบายรูปภาพที่นี่


ใน Lion ⌥←และ⌥→ถูกผูกไว้กับM-bและM-fโดยค่าเริ่มต้น และ ⌃ ←และ ⌃ →เป็นทางลัดเริ่มต้นสำหรับการเปลี่ยนช่องว่าง
Lri

0

ฉันต้องการสิ่งนี้ใน Cygwin ไม่ใช่ Mac แต่การเพิ่มสิ่งต่อไปนี้เพื่อ~/.inputrcช่วยด้วย:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

0

ฉันไม่ใช่ผู้ใช้ Mac แต่Homeสำคัญกับอะไร ใช้งานได้ดีกับเทอร์มินัล Linux


1
ไม่เลื่อนไปด้านบนสุดของหน้าต่างเทอร์มินัล
GlyphGryph

ตามค่าเริ่มต้น Home และ End จะเลื่อนมุมมองซึ่งเป็นลักษณะการทำงานของ Mac มาตรฐาน โดยค่าเริ่มต้น Shift-Home และ Shift-End ส่ง“ ESC [H” และ“ ESC [F” ตามลำดับ เหล่านี้มีการปรับแต่งทั้งหมดในเทอร์มิ> การตั้งค่า> การตั้งค่า> [รายละเอียด]> คีย์บอร์ด
Chris Page

0

วิธีที่ดีที่สุดในการย้ายไปรอบ ๆ บรรทัดคำสั่งใน Mac Os X คือการใช้โปรไฟล์ของฉัน: https://github.com/lingtalfi/mac-terminal-shortcuts

มันมีทางลัด (ใช้งานง่าย) ต่อไปนี้:

ALT-left: move one word backward
ALT-right: move one word forward
CTRL-left: move to the beginning of the line
CTRL-right: move to the end of the line
ALT-backspace: kill one word backward
ALT-del: kill one word forward
ALT-up: set word after cursor to uppercase
ALT-down: set word after cursor to lowercase
home: move to the beginning of the line
end: move to the end of the line    
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.