ฉันเห็นว่า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  |