ฉันเห็นว่าCtrl+ left/ rightข้ามไปที่จุดเริ่มต้น / สิ้นสุดของบรรทัด จะเปลี่ยนสิ่งนี้เป็นCmd+ left/ ได้right arrowอย่างไร
เพื่อให้ได้รับAlt+ left/ right arrowทำงานอย่างถูกต้องสำหรับการกระโดดคำทำตามบทความนี้
ฉันเห็นว่าCtrl+ left/ rightข้ามไปที่จุดเริ่มต้น / สิ้นสุดของบรรทัด จะเปลี่ยนสิ่งนี้เป็นCmd+ left/ ได้right arrowอย่างไร
เพื่อให้ได้รับAlt+ left/ right arrowทำงานอย่างถูกต้องสำหรับการกระโดดคำทำตามบทความนี้
คำตอบ:
เพิ่ม iTerm2 ในปุ่มทางลัดโปรไฟล์ต่อไปนี้
FOR ACTION SEND
⌘← "SEND HEX CODE" 0x01
⌘→ "SEND HEX CODE" 0x05
⌥← "SEND ESC SEQ" b
⌥→ "SEND ESC SEQ" f
นี่คือภาพสำหรับผู้ที่ต้องการมัน
⌘← "SEND ESC SEQ" OH
ไว้สำหรับที่บ้านและที่⌘→ "SEND ESC SEQ" OF
สิ้นสุด (ที่ไม่ใช่ตัวพิมพ์ใหญ่) จำลองนี้ที่จริงการกดปุ่ม Home และ End และการทำงานดังกล่าวจะอยู่ในทุบตีเป็นกลุ่ม ฯลฯ
หากต้องการข้ามไปมาระหว่างคำและจุดเริ่มต้น / สิ้นสุดของบรรทัดใน iTerm2 ให้เลือกหนึ่งในสองวิธีด้านล่าง
หากคุณไม่ต้องการใช้การตั้งค่าล่วงหน้า "การแก้ไขข้อความตามธรรมชาติ" ที่กล่าวถึงข้างต้นคุณสามารถแมปคีย์ที่คุณต้องการได้ด้วยตนเอง:
[+]
ไอคอนเลื่อนเคอร์เซอร์ไปทางซ้ายหนึ่งคำ
0x1b 0x62
เลื่อนเคอร์เซอร์ไปทางขวาหนึ่งคำ
0x1b 0x66
เลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัด
0x01
เลื่อนเคอร์เซอร์ไปที่ท้ายบรรทัด
0x05
ลบคำ
0x1b 0x08
ลบบรรทัด
0x15
เลิกทำ
0x1f
อย่าลืมลบการผูกก่อนหน้านี้ :
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
ฉันเห็นมัน คงจะดีที่รู้ในกรณีที่คนไม่ต้องการลบสิ่งนี้
ฉันเห็นว่ามีคำตอบที่ดีอยู่แล้ว แต่สิ่งนี้ควรให้ฟังก์ชั่น OSX ดั้งเดิมที่ใกล้เคียงที่สุดเท่าที่จะเป็นไปได้ในมากกว่าเชลล์ของคุณ ฉันตรวจสอบว่ามันใช้งานได้ใน ZSH, Bash, node, python -i, iex และ irb / pry เซสชัน (ใช้ rb-readline gem สำหรับ readline แต่ควรใช้ได้กับทุกคน)
เปิดการตั้งค่า iTerm ⌘+ ,และไปที่Profiles
แท็บ ( Keys
สามารถใช้แท็บได้ แต่การเพิ่มการเชื่อมโยงคีย์ไปยังโปรไฟล์ของคุณช่วยให้คุณสามารถบันทึกโปรไฟล์ของคุณและซิงค์กับคอมพิวเตอร์หลายเครื่อง) และkeys
แท็บย่อยและป้อนต่อไปนี้:
ลบอักขระทั้งหมดทางซ้ายของเคอร์เซอร์
⌘+←Deleteส่งรหัส Hex:
0x15
ใช้งานร่วมกันได้มากกว่า แต่บางครั้งการทำงานคือการลบทั้งบรรทัดแทนที่จะเป็นเพียงตัวอักษรทางด้านซ้ายของเคอร์เซอร์ ฉันใช้สิ่งนี้เป็นการส่วนตัวแล้วเขียนทับ bshkey ของฉันสำหรับ^U
เพื่อลบเฉพาะสิ่งที่ด้านซ้ายของเคอร์เซอร์ (ดูด้านล่าง)หรือ
0x18 0x7f
ใช้งานร่วมกันได้น้อยกว่าไม่ทำงานในโหนดและจะไม่ทำงานใน zsh ตามค่าเริ่มต้นดูด้านล่างเพื่อแก้ไข zsh (bash / irb / pry ควรใช้ได้) ทำงานตามที่ต้องการเมื่อใช้งานได้
ลบอักขระทั้งหมดทางด้านขวาของเคอร์เซอร์
⌘+ fn+ ←Deleteหรือ⌘+ Delete→ส่งรหัส Hex:
0x0b
ลบหนึ่งคำทางซ้ายของเคอร์เซอร์
⌥+ ←Deleteส่งรหัส Hex:
0x1b 0x08
หยุดพักใน IEX ของ Elixir ดูเหมือนว่าจะทำงานได้ดีในทุก ๆ ที่หรือ
0x17
ทำงานได้ทุกที่ แต่ไม่หยุดที่คำปกติใน IRB และจะลบแทนจนกว่าจะเห็นพื้นที่ที่แท้จริง
ลบหนึ่งคำทางด้านขวาของเคอร์เซอร์
⌥+ fn←Deleteหรือ⌥+ Delete→ส่งรหัส Hex:
0x1b 0x64
เลื่อนเคอร์เซอร์ไปที่ด้านหน้าของบรรทัด
⌘+ ←ส่งรหัส Hex:
0x01
เลื่อนเคอร์เซอร์ไปที่ท้ายบรรทัด
⌘+ →ส่งรหัส Hex:
0x05
เลื่อนเคอร์เซอร์ไปทางซ้ายหนึ่งคำ
⌥+ ←ส่งรหัส Hex:
0x1b 0x62
เลื่อนเคอร์เซอร์ไปทางขวาหนึ่งคำ
⌥+ →ส่งรหัส Hex:
0x1b 0x66
เลิกทำ
⌘+ zส่งรหัส Hex:
0x1f
การทำซ้ำโดยทั่วไปจะไม่ถูกผูกไว้ใน bash, zsh หรือ readline ดังนั้นเราสามารถตั้งค่าเป็น hexcode ที่ไม่ได้ใช้ซึ่งเราสามารถแก้ไขใน zsh
⇧+ ⌘+ Zหรือ⌘+ yส่งรหัส Hex:
0x18 0x1f
ตอนนี้วิธีการแก้ไขใด ๆ ที่ไม่ทำงาน
สำหรับ zsh คุณสามารถตั้งค่าที่มีผลผูกพันสำหรับการทำงานยังไม่ได้ ⌘+ ←Deleteและ⇧+ ⌘+ Z/ ⌘+ yโดยการทำงาน:
# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc
# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc
# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc
# reload your .zshrc for changes to take effect
$ source ~/.zshrc
ฉันไม่สามารถหาวิธีแก้ปัญหาสำหรับการเพิ่มการทำซ้ำใน bash หรือ readline ดังนั้นหากใครรู้วิธีแก้ปัญหาของทั้งสองโปรดแสดงความคิดเห็นด้านล่างและฉันจะพยายามที่จะเพิ่มพวกเขามา
สำหรับทุกคนที่กำลังมองหาตารางการค้นหาเกี่ยวกับวิธีการแปลงลำดับคีย์เป็นฐานสิบหกฉันพบว่าตารางนี้มีประโยชน์มาก
$
ข้างหน้าecho
(แค่ลบออก?) นอกจากนั้นมันสมบูรณ์แบบ ขอบคุณ.
bindkey | grep "\^\[b"
และจะแจ้งให้คุณทราบหากมีสิ่งอื่นเขียนทับทับหลังจากตั้งค่าแล้ว มันควร#=> "^[b" backward-word
เท่านั้นกลับ หากมีการเขียนทับคุณจะต้องค้นหาตำแหน่งที่ถูกเขียนทับและนำออก หากไม่สามารถทำได้คุณสามารถรันecho 'bindkey "^[b" backward-word' >> ~/.zshrc
ได้โดยจะเพิ่มลงในบรรทัดสุดท้ายของคุณ.zshrc
จากนั้นรีสตาร์ท iTerm และควรใช้งานได้
keys
แท็บในการตั้งค่า iTerm เพื่อดูว่ามันเป็นแผนที่⌥
+ ←
กับบางสิ่งบางอย่าง ถ้าเป็นเช่นนั้นลบออก คุณสามารถทดสอบว่าคุณb
ทำงานอย่างถูกต้องได้อย่างรวดเร็วโดยการกดปล่อยแล้วกดesc
b
ที่ควรข้ามคำไปทางซ้าย หรือคุณสามารถ map ⌥
+ ←
แม่มดหรือ0x1b 0x42
0x1b 0x5b 0x31 0x3b 0x35 0x44
ฉันตรวจสอบแล้วว่าสิ่งเหล่านี้ทำงานได้ทั้งสองอย่างสำหรับฉัน ฉันคิดว่าคุณมี⌥
+ ←
ถูกเขียนทับใน iTerm ทั้งในprofile
keys
แท็บหรือkeys
แท็บของคุณ
ทำตามกวดวิชาที่คุณระบุไว้ข้างต้นสำหรับการตั้งค่าการตั้งค่าที่สำคัญของคุณในiterm2
ใน iTerm 3.0.12 คุณสามารถเปลี่ยนเป็นการNatural Text Editing
ตั้งค่าล่วงหน้า:
iTerm →การตั้งค่า→โปรไฟล์→กุญแจ
คำเตือนเนื่องจากเป็นค่าที่ตั้งล่วงหน้าจึงสามารถแทนที่ปุ่มที่คุณผูกไว้ก่อนหน้านี้ ดังนั้นจะเป็นการดีกว่าที่จะบันทึกการเชื่อมโยงคีย์ปัจจุบันของคุณก่อนที่จะใช้การตั้งค่าล่วงหน้า
สำหรับการอ้างอิงอย่างรวดเร็วของทุกคนที่ต้องการไปที่จุดสิ้นสุดของบรรทัดหรือจุดเริ่มต้นของบรรทัดใน iTerm2 ลิงค์ด้านบน http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- in-iterm.html บันทึกไว้ใน iTerm2:
ฉันใช้คำตอบของเทรวิสและฉันสร้างโปรไฟล์แบบไดนามิกที่คุณสามารถนำเข้าได้ตามคำแนะนำ
GabLeRoux / iterm2-MacOS ไดนามิกรายละเอียด
คำแนะนำอยู่ใน readme และเร็วกว่าที่จะนำเข้าสิ่งนี้มากกว่าที่จะเพิ่มด้วยตนเองทั้งหมด ฉันทำสิ่งนี้เป็นคำตอบตามคำขอ @ gooli เพราะสิ่งนี้ซ่อนอยู่ในความคิดเห็น หวังว่าคุณจะสนุกกับเรื่องนี้ 🍻
เพียงเพื่อช่วยเหลือผู้ที่มีปัญหาเดียวกัน แต่ใช้เชลล์ Zsh กับ iTerm 2 โดยเฉพาะปรากฎว่า Zsh อ่านไม่/etc/inputrc
ถูกต้องและไม่เข้าใจการเชื่อมโยงคีย์ใด ๆ ที่คุณตั้งค่าผ่านการตั้งค่า!
ในการแก้ไขปัญหานี้คุณต้องเพิ่มการเชื่อมโยงคีย์ใน.zshrc
ไฟล์ของคุณเช่น:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
สังเกตเครื่องหมายแบ็กสแลชในตัวอย่างด้านบนก่อน "e" บทความที่ลิงก์ไม่แสดงดังนั้นให้เพิ่มลงใน.zshrc
ไฟล์ของคุณเมื่อเพิ่มการเชื่อม
การผูก emacs แบบเก่ายังคงสามารถทำงานได้ในเทอร์มินัล iterm2 และ os x:
การตั้งค่า -> โปรไฟล์ -> คีย์ (แท็บย่อยในโปรไฟล์)
Left/Right option <kbd>⌥</kbd> key acts as +Esc
(คล้ายกันใน os x terminal)สิ่งนี้ควรเปิดใช้งานalt- fและalt- bสำหรับการย้ายคำด้วยคำพูด (ยังctrl- aและctrl- eทำงานตามปกติเสมอ)
หากตั้งค่าเป็นการmeta
เชื่อมโยงเก่าเหล่านั้นจะทำงานในขณะที่การเชื่อมโยง iterm2 บางรายการไม่พร้อมใช้งาน
ตามที่อธิบายไว้ที่นี่คุณสามารถทำได้ด้วยขั้นตอนง่าย ๆ :
ตามค่าเริ่มต้นการข้ามคำ (ตัวเลือก + →หรือ←) และการลบคำ (ตัวเลือก + แบ็กสเปซ) ไม่ทำงาน หากต้องการเปิดใช้งานเหล่านี้ให้ไปที่ "iTerm →การตั้งค่า→โปรไฟล์→คีย์→โหลดที่ตั้งไว้ล่วงหน้า ... →การแก้ไขข้อความตามธรรมชาติ→บูม! หัวระเบิด"
สิ่งเดียวที่ทำงานเพื่อย้ายไปยังจุดเริ่มต้นและจุดสิ้นสุดคือ
⌘← "SEND ESC SEQ" OH
- เพื่อเลื่อนไปยังจุดเริ่มต้นของบรรทัด
⌘→ "SEND ESC SEQ" OF
- เพื่อเลื่อนไปยังจุดสิ้นสุดของบรรทัด
bind -p
จะแสดงรายการของคีย์ Escape ที่ถูกผูกไว้ในเชลล์ของคุณซึ่งอาจช่วยให้คุณมีแนวคิด / คำค้นหาเพิ่มเติม
bind -p
จะทำงานเฉพาะในบอร์นหอย (ทุบตีดวลจุดโทษ) สำหรับ zsh, tcsh csh bindkey
ใช้
อธิบายไว้ใน https://aaronaddleman.com/articles/hexcodes-and-iterm/
คุณสามารถใช้xxd -psd
เพื่อรับรหัสฐานสิบหกที่สำคัญ
สำหรับฉันชุดค่าผสมต่อไปนี้ใช้ได้:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |