ปุ่มบ้านและปุ่มวางสายจะถูกแมปเมื่อใช้ Terminal ได้หรือไม่?


76

homeและendปุ่มบน MacBook Pro สามารถที่จะเทิดทูนด้วย Fn + ลูกศรซ้ายหรือ Fn + ลูกศรขวา หรือเมื่อมีการเปลี่ยนแปลงการตั้งค่าบางอย่างด้วยปุ่ม Command (Apple) แทน fn

ไม่มีงานเหล่านี้ในเทอร์มินัล

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

ฉันจะกระโดดไปรอบ ๆ แถวหนึ่งในเทอร์มินัลได้อย่างไร

คำตอบ:


64

ใช้control+ aสำหรับหน้าแรกและcontrol+ eสำหรับ END ในเทอร์มินัล

ใช้esc+ fเพื่อย้ายไปยังจุดเริ่มต้นของคำถัดไปและesc+ bเพื่อเลื่อนไปยังจุดเริ่มต้นของคำปัจจุบัน (คุณจะต้องระมัดระวังเกี่ยวกับปัจจุบันและต่อไป)


2
ที่สมบูรณ์แบบ! สิ่งที่เกี่ยวกับการกระโดดไปรอบ ๆ ด้วยคำพูด? (ctrl-left และ ctrl-right ใน windows)
at01

@ at01 ฉันได้รับคำตอบของฉัน
Am1rr3zA

40
ใครเป็นผู้ออกแบบปุ่มสำหรับ Terminal?!?!
at01

4
ฉันชอบใช้ตัวเลือก + ลูกศรซ้ายและตัวเลือก + ลูกศรขวาสำหรับการย้ายไปยังจุดเริ่มต้นของคำ
Allan Jikamu

2
Ctrl + a และ Ctrl + e ใช้งานได้สำหรับฉัน แต่ไม่ต้องใช้การกดปุ่มการแมปซ้ำอีกครั้งตามที่เสนอโดยที่นี่ฉันชอบ @ AlphaFighter ทางเลือก Shift + Home และ Shift + End (Shift + Fn + ลูกศรซ้ายและ Shift + Fn + ลูกศรขวาบนแป้นพิมพ์ MacBook Pro) สำหรับการเริ่มต้นและสิ้นสุดบรรทัด
John Rix

70

หากต้องการตอบคำถามเกี่ยวกับวิธีรับจุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดปรากฏว่าตามค่าเริ่มต้นเทอร์มินัลจะจับคู่คีย์เหล่านี้กับมัน:

  • shift + home →จุดเริ่มต้นของบรรทัดเทียบเท่ากับปุ่ม "home" ในเทอร์มินัลปกติ
  • shift + end → end of line เทียบเท่ากับคีย์ "end" ในเทอร์มินัลปกติ

หากคุณต้องการกลับบ้านและสิ้นสุดเพื่อทำงานในแบบ "ปกติ" (และไม่ต้องการกะ) ไปที่ [เมนู Terminal] →การตั้งค่า→แท็บโปรไฟล์ (หรือการตั้งค่าใน OS X บางเวอร์ชั่น) →แท็บย่อยของแป้นพิมพ์

จากนั้นแก้ไข / เพิ่มคีย์เหล่านี้เพื่อ "ส่งสตริงไปยังเชลล์" ต่อไปนี้

  • บ้าน: \033[H
  • สิ้นสุด: \033[F

คุณสามารถรับชิ้น\033ส่วนได้โดยกดปุ่ม Escape ภายในอินพุตการแก้ไขหากคุณต้องการเพิ่ม

จากนั้นกลับบ้านและสิ้นสุดจะทำงานเหมือนปกติอีกครั้ง (ว้า)

นอกจากนี้โปรดทราบว่า "alt + ←" และ "alt + →" โดยค่าเริ่มต้นในเทอร์มินัลแมปไปทางซ้ายและคำขวาอีกคำสั่งผสมที่มีประโยชน์ที่จะจำ

ในรุ่นที่ใหม่กว่าของ Mac OS X หากหน้าจอเทอร์มินัลเลื่อนขึ้นหรือลงเมื่อคุณกดปุ่ม home / end ปุ่มโฮมอาจต้องตั้งค่าเป็น\033[1~และปุ่มสิ้นสุดเป็นเพื่อ\033[4~ให้ได้ผลลัพธ์ที่คุณต้องการ (ไม่จำเป็นต้องเปลี่ยน) .

อย่าลังเลที่จะแก้ไขคำตอบนี้เพื่อเพิ่มการเชื่อมโยงคีย์ที่มีประโยชน์มากขึ้นเนื่องจากเป็นวิกิชุมชน


5
\ 033 [H และ \ 033 [F สำหรับบ้านและที่ทำงานไม่ได้สำหรับฉัน อย่างไรก็ตาม \ 001 และ \ 005 ทำ คุณสามารถป้อนรหัสเหล่านี้ในกล่องโต้ตอบแก้ไขโดยกด ctrl-A และ ctrl-E ฉันใช้ zsh ฉันไม่แน่ใจว่ามันสร้างความแตกต่างหรือไม่
เจดับบลิว

shift + home / end ได้งานแล้ว
isaias-b

1
เคยพยายามคิดเรื่องนี้ซักพักแล้ว!
พอลเกรย์

สิ่งนี้ใช้ได้ดีเมื่อคุณอยู่ในแอปพลิเคชั่นเทอร์มินัลจริงในพื้นที่ อย่างไรก็ตามเมื่อคุณเข้าสู่เครื่อง macOS สิ่งเหล่านี้จะไม่ทำงานอีกต่อไป ทำอย่างไรจึงจะได้สิ่งนี้!
Ahi Tuna

2
@AhiTuna SSH เป็นเพียงการเชื่อมต่อกับเทอร์มินัลเซสชันไม่ใช่การเชื่อมต่อกับเทอร์มินัลอีมูเลเตอร์ ตัวเลือกอินพุตจะถูกกำหนดโดยตัวจำลองเทอร์มินัลที่คุณใช้อยู่เสมอ
Bachsau

39

ดูเหมือนว่าคุณกำลังมองหาความช่วยเหลือโดยใช้ readline และ bash ต่อไปนี้เป็นรายการของสิ่งที่ดัดแปลงจากแป้นพิมพ์บ้า: http://www.math.utah.edu/docs/info/features_7.html#SEC45

Ctrla ย้ายไปที่จุดเริ่มต้นของบรรทัด
Ctrle ย้ายไปยังจุดสิ้นสุดของบรรทัด
Escf เลื่อนไปข้างหน้าคำ
Escb เลื่อนไปข้างหลังคำ
Ctrll ล้างหน้าจอพิมพ์บรรทัดปัจจุบันที่ด้านบน

Ctrlk ฆ่าข้อความจากตำแหน่งเคอร์เซอร์ปัจจุบันไปยังจุดสิ้นสุดของบรรทัด
Escd ฆ่าจากเคอร์เซอร์ไปยังจุดสิ้นสุดของคำปัจจุบันหรือหากระหว่างคำไปจนถึงท้ายคำถัดไป
EscDel ฆ่าจากเคอร์เซอร์ตั้งแต่เริ่มต้นของคำก่อนหน้าหรือถ้าระหว่างคำไปจนถึงเริ่มต้นของคำก่อนหน้า
Ctrlw ฆ่าจากเคอร์เซอร์ไปยังช่องว่างก่อนหน้า สิ่งนี้แตกต่างจากEscDelCtrla เนื่องจากขอบเขตของคำแตกต่างกัน

Ctrld ลบอักขระที่อยู่ใต้เคอร์เซอร์
Ctrl_ เลิกทำสิ่งสุดท้ายที่คุณทำ คุณสามารถเลิกทำย้อนกลับไปยังบรรทัดว่าง

และนี่คือวิธีดึงข้อความกลับเข้ามาในบรรทัด Yanking หมายถึงการคัดลอกข้อความที่เพิ่งถูกฆ่ามากที่สุดจากบัฟเฟอร์การทำลาย

Ctrly ดึงข้อความที่ถูกฆ่าล่าสุดกลับเข้าไปในบัฟเฟอร์ที่เคอร์เซอร์
Escy หมุน kill-ring และดึงส่วนบนใหม่ คุณสามารถทำเช่นนี้หากคำสั่งก่อนเป็นหรือCtrlyEscy


นี่เป็นสิ่งที่ประเมินค่าไม่ได้ - ขอบคุณ - ฉันหวังว่านี่จะเป็นไฟล์ที่พิมพ์ได้ที่ไหนซักแห่ง!
matt b

ฉันรู้ว่ามันค่อนข้าง "ปรับ" แต่; ไฟล์ -> พิมพ์?
Jason Salaz

ว้าวสิ่งเหล่านี้น่าประหลาดใจมากเมื่อเทียบกับคำศัพท์บน linux .. วิธีการแมปเรื่องไร้สาระนี้อีกไหม?
btk

ใช่ลองหน้า Bash man (ฉันไม่รู้ว่าจะทำเองได้อย่างไร)
SilverWolf

6

สำหรับผู้ที่ต้องการใช้ปุ่มลูกศรการกดfnShift+ Left Arrowจะนำคุณกลับไปที่บรรทัดคำสั่ง ในทำนองเดียวกันfnShift+ Right Arrowจะพาคุณไปยังจุดสิ้นสุด


6

คุณสามารถย้ายหนึ่งคำที่เวลาด้วยoption+ leftและ+optionright

เกี่ยวกับการใช้homeและendการผูกค่าเริ่มต้นของเทอร์มินัลมีดังต่อไปนี้:

  • shift+ home→ข้ามไปยังจุดเริ่มต้นของบรรทัด
  • shift+ end→ข้ามไปยังจุดสิ้นสุดของบรรทัด
  • home →เลื่อนไปด้านบนสุดของบัฟเฟอร์เลื่อนกลับ
  • end →เลื่อนไปที่ด้านล่างของบัฟเฟอร์เลื่อนกลับ

ในแอปเทอร์มินัลอื่น ๆ (ในหลายแพลตฟอร์ม) คู่ที่ได้รับการแก้ไขและไม่มีการแก้ไขจะถูกกลับรายการ (เช่นเปล่าhomeและendถูกใช้เพื่อข้ามรอบบรรทัดปัจจุบันและเวอร์ชันที่แก้ไข (ไม่ว่าจะด้วยshiftหรืออย่างอื่น) เพื่อนำทางบัฟเฟอร์เลื่อน ) คุณสามารถย้อนกลับการผูกเทอร์มินัลเพื่อทำงานในลักษณะนั้นหากคุณต้องการโดยทำสิ่งต่อไปนี้:

ไปที่เมนูเทอร์มินัล→ค่ากำหนด→แท็บการตั้งค่า / โปรไฟล์→แท็บย่อยคีย์บอร์ด

จากนั้นแก้ไขคู่คีย์ - แอ็คชันให้เป็นดังนี้:

  • ↖︎: ส่งข้อความ: \ 033 [H
  • ⇧↖︎: เลื่อนไปด้านบน
  • ↘︎: ส่งข้อความ: \ 033 [F
  • ⇧↘︎: เลื่อนไปที่ด้านล่าง

หมายเหตุ: มีการป้อน \ 033 ลงในกล่องข้อความเป็นข้อความในกล่องโต้ตอบแก้ไขโดยกดปุ่ม Escape

ในขณะนั้นคุณอาจต้องการสลับการเชื่อมโยงของการดัดแปลงและไม่ได้แก้ไขในทำนองเดียวกันpage upและpage downเพื่อให้สิ่งต่าง ๆ สอดคล้องกัน: การกดปุ่มนำทางพร้อมกับshiftแสดงคำสั่งไปยังเทอร์มินัลเอง (เพื่อเลื่อนบัฟเฟอร์การเลื่อนกลับ ส่งกดปุ่มผ่านไปสิ่งที่ทำงานภายใน (เช่นbash, less, nano, screenฯลฯ ) คู่การกระทำที่สำคัญสำหรับที่:

  • ⇞: ส่งข้อความ: \ 033 [5 ~
  • ⇧⇞: เลื่อนหน้าขึ้น
  • ⇟: ส่งข้อความ: \ 033 [6 ~
  • ⇧⇟: เลื่อนหน้าลง

4

คำตอบอื่น ๆ นั้นยอดเยี่ยมและพกพาได้มากกว่า แต่นี่คือ "วิธีของ OS X" สำหรับแป้นพิมพ์ทั่วไป (ซึ่งตรงกันข้ามกับเทอร์มินัลอื่น ๆ ) ลองทำสิ่งต่อไปนี้:

ShiftHome- จุดเริ่มต้นของบรรทัด
ShiftEnd- สิ้นสุดของบรรทัด

จากhttp://www.greenend.org.uk/rjk/tech/macbits.html


4

การทำแผนที่homeและendปุ่มพร้อมฟังก์ชันการทำงานที่คุณต้องการจะช่วยแก้ปัญหาได้อย่างง่ายดาย

มีคำตอบมากมายที่โพสต์ แต่ในกรณีที่คุณใช้zshคุณสามารถตั้งค่าhomeเป็น:

\001

และตั้งendเป็น:

\005

โดยการคลิกการตั้งค่า - โปรไฟล์ - แป้นพิมพ์


ฉันลองสิ่งนี้เช่นกัน แต่หลังจากนั้นก็แบ่ง Home and End เป็นกลุ่ม :( คุณสามารถแมปพวกเขากับสิ่งที่ Alfredo Cardigliano แนะนำ: คีย์: ↖การกระทำ: \ 033OH คีย์: ↗การกระทำ: \ 033OF
curlingdude

มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน! ฉันใช้นาโนเท่านั้นดังนั้นไม่มีปัญหาที่นี่
สเตอร์ลิงบอร์น

ใช่มันใช้งานได้ แต่ไม่ได้แก้ปัญหาโดยทั่วไป ฉันย้ายจาก bash เป็น zsh และฉันใช้ FN-SHIFT-LEFT / RIGHT .. นี่แก้ปัญหาของฉันได้แล้ว: stackoverflow.com/questions/8638012/…
vlk

1

นี่เป็นวิธีที่มีประสิทธิภาพที่สุดในการทำให้ทำงานเป็นกลุ่มด้วย ไปที่ Terminal -> Preferences -> Profiles -> Keyboard และเพิ่ม:

รหัส: ↖การกระทำ: \ 033OH

รหัส: ↗การกระทำ: \ 033OF


1

ฉันต้องการให้ทางเลือกอื่นในการแก้ไขปัญหานี้ วิธีนี้ใช้งานได้ดีถ้าคุณเป็นผู้ใช้ vi การโยงคีย์ Vim ในเทอร์มินัลมีวิธีใช้เทอร์มินัลของคุณในสไตล์ที่เป็นกลุ่ม คุณสามารถทำได้ผ่านการพิมพ์set -o viใน terminal และอย่าลังเลที่จะใส่มัน.bash_profileหากคุณต้องการ หลังจากนี้เทอร์มินัลของคุณจะเป็นเครื่องมือแก้ไขเสียงเรียกเข้าได้อย่างมีประสิทธิภาพ คุณสามารถใช้escรหัสเพื่อเข้าสู่โหมดคำสั่งและเดินไปในทางที่เป็นกลุ่ม ตัวอย่างเช่น0พาคุณไปยังจุดเริ่มต้นและ$พาคุณไปยังจุดสิ้นสุด คุณยังสามารถใช้IและAเพื่อไปยังจุดเริ่มต้นและจุดสิ้นสุดและเข้าสู่โหมดแก้ไขได้ทันที wและbให้คุณเลื่อนไปข้างหน้าและข้างหลังหนึ่งคำ และถ้าคุณลองเข้าสู่โหมดภาพด้วยการกดvคุณจะได้รับเครื่องมือแก้ไขเป็นกลุ่มและข้อความที่คุณมีเมื่อคุณออกจากโปรแกรมแก้ไขนี้จะถูกเรียกใช้งานในเทอร์มินัล

โปรดทราบว่าการเชื่อมโยงคีย์ vim นี้จะลบล้างคีย์ลัดทั้งหมดที่คุณเรียนรู้จากคำตอบอื่น ๆ


0

นี่คือรายการในรูปแบบที่พิมพ์ได้ตามต้องการ :)

http://pastebin.com/uCqwn7qs

ฉันยังแก้ไข "ข้อบกพร่อง" ในคำอธิบาย นี่คือสิ่งที่คุณสามารถอ่านได้ในขั้นตอนแรก:

ESC-d ฆ่าจากเคอร์เซอร์ตั้งแต่เริ่มต้นของคำก่อนหน้าหรือถ้าระหว่างคำจนถึงจุดเริ่มต้นของคำก่อนหน้า

สิ่งนี้มีกลิ่นไม่ดีเหมือนความผิดพลาดแบบตัดและแปะเนื่องจากประโยคทั้งสองประโยคบอกสิ่งเดียวกัน การบอกจากตรรกะธรรมดาครึ่งแรกต้องอ่าน "จากเคอร์เซอร์จนถึงจุดเริ่มต้นของคำปัจจุบัน"


0

... แล้วคำกระโดดล่ะ (ctrl-left และ ctrl-right ใน windows)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.