ฉันรู้ว่าชุดค่าผสมCtrl+ Aเพื่อข้ามไปยังจุดเริ่มต้นของคำสั่งปัจจุบันและCtrl+ Eเพื่อข้ามไปยังจุดสิ้นสุด
แต่มีวิธีการข้ามคำต่อคำใด ๆ เช่นAlt+ ←/ →ในการใช้งาน Cocoa ไม่?
ALT
ลัดได้รับการเพิ่มเทอร์ในรุ่นล่าสุด OS X
ฉันรู้ว่าชุดค่าผสมCtrl+ Aเพื่อข้ามไปยังจุดเริ่มต้นของคำสั่งปัจจุบันและCtrl+ Eเพื่อข้ามไปยังจุดสิ้นสุด
แต่มีวิธีการข้ามคำต่อคำใด ๆ เช่นAlt+ ←/ →ในการใช้งาน Cocoa ไม่?
ALT
ลัดได้รับการเพิ่มเทอร์ในรุ่นล่าสุด OS X
คำตอบ:
คุณสามารถใช้Esc+ ที่แปลกประหลาดมากFเพื่อย้ายไปยังจุดเริ่มต้นของคำถัดไปและEsc+ Bเพื่อเลื่อนไปยังจุดเริ่มต้นของคำปัจจุบัน
Esc
+ F
เมื่อสิ้นสุดบรรทัดหรือคีย์ผสมอื่น ๆ ที่จุดเริ่มต้นของบรรทัดก็จะแทรกตัวอักษรแทน น่ารำคาญ!
~/.inputrc
ได้หรือคุณสามารถกำหนดได้เองทั้งหมดด้วย
บน Mac OS X - แป้นพิมพ์ลัดต่อไปนี้ใช้งานได้ตามค่าเริ่มต้น โปรดทราบว่าคุณต้องทำให้ปุ่มตัวเลือกทำหน้าที่เหมือนMetaในการตั้งค่าเทอร์มินัล (ใต้แท็บแป้นพิมพ์)
ฉันได้สังเกตว่า emacs key-bindings ที่เป็นค่าเริ่มต้นสำหรับการนำทางข้อความแบบธรรมดาดูเหมือนจะใช้ได้กับ bash shells คุณสามารถใช้ได้
โดยค่าเริ่มต้นเทอร์มินัลมีทางลัดเหล่านี้เพื่อย้าย (ซ้ายและขวา) คำต่อคำ:
คุณสามารถกำหนดค่าalt+ ←และ→เพื่อสร้างลำดับเหล่านั้นสำหรับคุณ:
⌥ ←
หากมีหรือเพิ่มหากไม่มี\033b
(คุณไม่สามารถพิมพ์ข้อความนี้ด้วยตนเอง)\033f
)หรือคุณสามารถอ้างถึงบล็อกโพสต์นี้ได้ที่ textmate:
B
สำหรับการกลับหรือF
สำหรับไปข้างหน้าเข้าไปในEsc+
สนาม
alt left
และalt right
สร้างลำดับเหล่านั้น
สลับไปiTerm2 ได้ฟรีและดีกว่าเทอร์มินัลเก่าแบบธรรมดามาก นอกจากนี้ยังมีตัวเลือกเพิ่มเติมมากมายสำหรับการปรับแต่งเช่นแป้นพิมพ์ลัด
ฉันชอบที่คุณสามารถใช้cmdและ 1-9 เพื่อสลับระหว่างแท็บต่างๆ ลองแล้วคุณจะไม่กลับไปที่หน้าจอปกติ :)
วิธีตั้งค่าคีย์บอร์ดที่กำหนดเองใน iterm2
ฉันมักจะกดปุ่มผิด ( cmd/ control/ alt) ด้วยปุ่มลูกศรดังนั้นฉันจึงมีปุ่มลูกศรผสมกับปุ่มเหล่านั้นทั้งหมดเพื่อข้ามไปข้างหน้าและย้อนกลับคำ แต่โปรดทำสิ่งที่เหมาะกับคุณที่สุด
Ctrl + Arrow Left
หรือRight
- Up
และใช้Down
งานได้: / ลองด้วยและไม่มีโปรไฟล์ใหม่ที่ตั้งเป็นค่าเริ่มต้น
จริงๆแล้วมีวิธีการที่ดีกว่ามาก กดค้างไว้option( altบนแป้นพิมพ์บางตัว) แล้วกดปุ่มลูกศรซ้ายหรือขวาเพื่อเลื่อนไปตามคำ เรียบง่ายเหมือนที่
option←
option→
นอกจากนี้ยังctrleจะนำคุณไปยังจุดสิ้นสุดของเส้นและctrlaจะนำคุณไปยังจุดเริ่มต้น
[D
[C
ในการแก้ไขปัญหานี้เพิ่มbind '"[D": backward-word'
และของฉันbind '"[C": forward-word'
.bashrc
.bashrc
แต่มันไม่ทำงานมีอะไรผิดปกติสำหรับฉัน (ฉันใช้ RubyMine)
.bashrc
เมื่อเปิดเครื่องหรือไม่ ลองecho "here"
และดูว่าข้อความนั้นแสดงขึ้นเมื่อคุณเปิดเทอร์มินัลใหม่หรือไม่ นอกจากนี้คุณต้องปิดและเปิดเทอร์มินัลใหม่หรือเรียกใช้source ~/.bashrc
เพื่อรับไฟล์เพื่ออ่านไฟล์ใหม่
ฉันมีAlt+ ←/ →การทำงาน: เปิดการตั้งค่า»แป้นพิมพ์การตั้งค่า»ตั้งรายการสำหรับเคอร์เซอร์ตัวเลือกที่เหลือจะส่งสตริงเปลือก: \ 033bและชุดลูกศรขวาตัวเลือกที่จะส่งสตริงเปลือก: \ คุณยังสามารถใช้สิ่งนี้สำหรับคีย์ผสมอื่น ๆ
Enable option as meta key
ฉันกับเสือดาวหิมะและพบว่ามันจะทำงานเฉพาะเมื่อคุณเปิดใช้ โดยวิธีการมันเจ๋งมาก ที่สำคัญคือแน่ใจว่าจะสะดวกกว่าที่จะไปถึง Esc + B หรือ Esc + F
จริงๆแล้วมันขึ้นอยู่กับว่าคุณใช้เชลล์อะไรอย่างไรก็ตามเชลล์ส่วนใหญ่มีการผูกที่คล้ายกัน การเชื่อมที่คุณอ้างถึง (เช่นCtrl+ AและCtrl+ E) เป็นการเชื่อมโยงที่คุณจะพบในโปรแกรมอื่น ๆ อีกมากมายและมันถูกใช้เป็นเวลานาน BTW ยังทำงานในแอป UI ส่วนใหญ่
นี่คือลักษณะของการผูกค่าเริ่มต้นสำหรับ Bash:
แป้นพิมพ์ลัด Bash ที่สำคัญที่สุด
โปรดทราบว่าคุณสามารถปรับแต่งได้ คุณต้องสร้างไฟล์ตั้งชื่อตามที่ฉันต้องการฉันชื่อ. .bash_key_bindings และใส่ไว้ในโฮมไดเร็กตอรี่ของฉัน คุณสามารถตั้งค่าตัวเลือกทุบตีทั่วไปและคุณสามารถตั้งค่าการเชื่อมโยงคีย์ เพื่อให้แน่ใจว่ามีการใช้งานคุณต้องแก้ไขไฟล์ชื่อ".bashrc"ที่ bash อ่านเมื่อเริ่มทำงาน (คุณต้องสร้างไฟล์หากไม่มีอยู่) และทำการเรียกต่อไปนี้:
bind -f ~/.bash_key_bindings
~ หมายถึงโฮมไดเร็กตอรี่ใน bash, ตามที่ระบุไว้ข้างต้น, คุณสามารถตั้งชื่อไฟล์ตามที่คุณต้องการและวางไว้ในตำแหน่งที่คุณต้องการตราบใดที่คุณป้อนเส้นทางที่ถูกต้อง + ชื่อให้ผูก
ให้ฉันแสดงข้อความที่ตัดตอนมาบางส่วนของไฟล์. bash_key_bindings ของฉัน:
set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
set show-all-if-ambiguous on
set bell-style none
set print-completions-horizontally off
สิ่งเหล่านี้เป็นเพียงการตั้งค่าตัวเลือกสองสามอย่าง (เช่นปิดใช้งานเสียงระฆังซึ่งสามารถค้นหาได้ทั้งหมดบนเว็บเพจทุบตี)
"A": self-insert
"B": self-insert
"C": self-insert
"D": self-insert
"E": self-insert
"F": self-insert
"G": self-insert
"H": self-insert
"I": self-insert
"J": self-insert
สิ่งเหล่านี้ทำให้แน่ใจว่าตัวละครเพียงอย่างเดียวไม่ทำอะไรเลย แต่ต้องแน่ใจว่าตัวละครนั้น "พิมพ์" (พวกเขาใส่ตัวเองลงในเปลือก)
"\C-dW": kill-word
"\C-dL": kill-line
"\C-dw": backward-kill-word
"\C-dl": backward-kill-line
"\C-da": kill-line
มันค่อนข้างน่าสนใจ หากฉันกดCtrl+ Dคนเดียว (ฉันเลือก d เพื่อลบ) จะไม่มีอะไรเกิดขึ้น แต่ถ้าฉันพิมพ์ตัวพิมพ์เล็ก w คำที่ด้านซ้ายของเคอร์เซอร์จะถูกลบ อย่างไรก็ตามหากฉันพิมพ์ตัวพิมพ์ใหญ่คำว่าด้านขวาของเคอร์เซอร์จะถูกฆ่า กันไปสำหรับ l และ L เกี่ยวกับทั้งบรรทัดเริ่มต้นจากเคอร์เซอร์ หากฉันพิมพ์ "a" ทั้งบรรทัดจะถูกลบจริง ๆ (ทุกอย่างก่อนและหลังเคอร์เซอร์)
ฉันวางการกระโดดหนึ่งคำไปข้างหน้าบนCtrl+ Fและอีกหนึ่งคำข้างหลังบนCtrl+B
"\C-f": forward-word
"\C-b": backward-word
อย่างที่คุณเห็นคุณสามารถสร้างทางลัดที่นำไปสู่การดำเนินการได้ทันทีหรือคุณสามารถสร้างมันขึ้นมาได้โดยเริ่มจากลำดับอักขระจากนั้นคุณต้องพิมพ์อักขระหนึ่งตัว (หรือมากกว่า) เพื่อให้การกระทำนั้นเกิดขึ้น แสดงในตัวอย่างเพิ่มเติมด้านบน
ดังนั้นหากคุณไม่พอใจกับการผูกค่าเริ่มต้นคุณสามารถปรับแต่งได้ตามต้องการ นี่คือลิงค์ไปยังคู่มือทุบตีสำหรับข้อมูลเพิ่มเติม
command
ที่สำคัญรหัส? ในตัวอย่างของคุณcontrol
คือ\C
แต่เป็นcommand
อย่างไร
Meta
ในทุบตี ( \M
) Cmd + \M-\e[D
ซ้ายจะเป็น อย่างไรก็ตามคุณไม่สามารถแมป cmd + ... กับทุกสิ่งได้ทางลัดคำสั่งทั้งหมดจะได้รับการจัดการ (และถูกกลืน) โดยแอป Terminal เอง (ที่ไม่เคยถูกส่งต่อไปยังเชลล์) และ cmd + แผนที่ซ้ายไปที่ "หน้าต่างก่อนหน้า" หากคุณมีหลาย เปิดหน้าต่างเทอร์มินัล ขออภัยมันเป็นไปไม่ได้ด้วยแอป Terminal
ใช้การแก้ไขข้อความที่เป็นธรรมชาติที่ตั้งไว้!
โดยพื้นฐานแล้วมันจะโยงกับลำดับของคีย์อื่น ๆ Option + LeftArrow ไปยัง^[b
ลำดับและ Option + RightArrow ไปยัง^[f
สิ่งนี้ใช้ได้กับปลาและทุบตีเช่นเดียวกับในสถานี psql
หากคุณตรวจสอบUse option as meta key
ในแท็บแป้นพิมพ์ของการตั้งค่าแล้วคำสั่งรูปแบบ emacs เริ่มต้นสำหรับไปข้างหน้าและย้อนกลับคำและ⌥F
( Alt+ F) และ⌥B
( Alt+ B) ตามลำดับ
ผมอยากแนะนำให้อ่านจากทุบตีถึง Z-เชลล์ หากคุณต้องการเพิ่มความแรงของ bash / zsh!
ในฐานะของระบบปฏิบัติการ Mac OS X Lion 10.7, เทอร์มิแผนที่Option- Left/Right Arrowเพื่อEsc- b/fโดยค่าเริ่มต้นนี้จึงถูกสร้างขึ้นในขณะนี้สำหรับการทุบตีและโปรแกรมอื่น ๆ ที่ใช้ keybindings เหล่านี้ emacs ที่เข้ากันได้
กดปุ่มตัวเลือกค้างไว้แล้วคลิกตำแหน่งที่คุณต้องการเลื่อนเคอร์เซอร์
ในทุบตีเหล่านี้จะผูกพันEsc- Bและ-Esc FBash มีแป้นพิมพ์ลัดอื่น ๆ อีกมากมาย ลองดูที่ผลลัพธ์ของbind -p
เพื่อดูว่ามันคืออะไร
ภายใต้iterm2
's การตั้งค่า> ส่วนตัว> คีย์คุณคลิก+
ด้านล่างที่สำคัญแมปและบันทึกทางลัดใหม่ สำหรับการกระทำให้เลือกSend Escape Sequence
และพิมพ์b
หรือf
ไปข้างหลังและไปข้างหน้าตามลำดับ
เมื่อฉันพยายามบันทึกหนึ่งสำหรับ ( Ctrl+ ←) ฉันสังเกตเห็นในฟิลด์แป้นพิมพ์ลัดที่ลูกศรไม่ปรากฏ กลับกลายเป็นว่าฉันต้องปิดการใช้งานการตั้งค่าระบบของ Mac เริ่มต้น> แป้นพิมพ์> ทางลัด> shorcuts ของการควบคุมภารกิจก่อนเพื่อให้สิ่งต่าง ๆ ทำงานได้เนื่องจากจะแทนที่ทางลัดเริ่มต้นของ iterm2 ควรเป็นจริงสำหรับแอปเทอร์มินัลมาตรฐานเช่นกัน
คำตอบใหม่สำหรับผู้ใช้ iTerm2 Build 3.3.4:
ขั้นตอนที่ 1: (macOS X) การตั้งค่าระบบ> แป้นพิมพ์> แท็บทางลัด> เลือกการควบคุมภารกิจ (แผงด้านซ้าย)> ยกเลิกการเลือกทางลัดที่ระบุว่าเป็น "ย้ายช่องว่างทางซ้าย" และ "เลื่อนไปทางขวาเว้นวรรค"
ขั้นตอนที่ 2: (iTerm2 Build 3.3.4) ค่ากำหนด> โปรไฟล์> เลือก * ค่าเริ่มต้น (แผงด้านซ้าย)> แท็บคีย์> ลบทั้งรายการ "⌥->" และ "⌥ <-"> ตั้งค่าทั้งสอง "คีย์ตัวเลือกซ้าย (⌥): "และ" คีย์ตัวเลือกขวา (⌥): "ถึง Esc +
ไม่ยุ่งกับโพรไฟล์เชลล์, ไม่ยุ่งกับเทอร์มินัล masOS ที่ด้อยกว่า, ค่าเริ่มต้น, ไม่น่าอึดอัดใจ Esc + F / B, ล้างและทำซ้ำโดยไม่ใช้ความรู้สึก
เสร็จสิ้นการจัดการ !!!
สนุกไปกับเคล็ดลับนี้เพื่อนร่วมโปรแกรมของฉัน!
ขณะที่ก่อนหน้านี้ตอบคุณสามารถเพิ่มset -o vi
ของคุณใน~/.bashrc
การใช้vi
/ vim
ผูกที่สำคัญหรืออื่น ๆ คุณสามารถเพิ่มต่อไปมีส่วนร่วมใน.bashrc
การย้ายไปอยู่กับCtrl
และปุ่มลูกศร:
# bindings to move 1 word left/right with ctrl+left/right in terminal, just some apple stuff!
bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
# bindings to move 1 word left/right with ctrl+left/right in iTerm2, just some apple stuff!
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'
เพื่อเริ่มผลของบรรทัดของรหัสเหล่านี้source ~/.bashrc
หรือเริ่มเซสชันเทอร์มินัลใหม่