iTerm - ไปหนึ่งคำไปข้างหน้าและข้างหลัง


164

เป็นไปได้ไหมที่จะกำหนดค่า iTerm 2 ให้ย้อนกลับและส่งต่อหนึ่งคำผ่านข้อความที่อยู่ในบรรทัดคำสั่งโดยใช้แป้นพิมพ์ลัด?


14
สิ่งนี้ไม่ได้ตอบคำถามจริงๆ แต่เกี่ยวข้องกัน: คุณสามารถเลือก + คลิกที่ใดก็ได้ในบรรทัดคำสั่งเพื่อเลื่อนเคอร์เซอร์ไปที่นั่น
David Winiecki

downvoting ไม่ยอมรับคำตอบที่ถูกต้อง
Pi-

@ Pi- ทำไมคุณคิดว่าคำตอบที่ยอมรับไม่ใช่คำตอบที่ถูกต้อง? 1. ปรากฏเกือบ 3 ปีก่อนที่จะมีคะแนนมากที่สุด 2. นำเสนอโซลูชันที่ไม่สามารถใช้งานได้ตามค่าเริ่มต้น
syntagma

คำตอบ:


47

Ctrl-[ bกระโดดกลับคำ คุณยังสามารถใช้EscแทนหรือCtrl-[และfเพื่อไปข้างหน้า

นั่นคือCtrl+ [เปิดตัวแล้วหรือb fหรือEscและหรือbf

ข้อมูลเพิ่มเติมสามารถดูได้ที่การสนทนาอื่น ๆ นี้ใน AskDifferent


3
สิ่งนี้จะดีกว่าถ้ามีวิธีการย้อนกลับคำศัพท์จำนวนมากอย่างรวดเร็วในขณะที่กดปุ่มค้างไว้โดยไม่ต้องพิมพ์ลำดับของคีย์สำหรับแต่ละคำ
user1717828

"Ctrl- [" คืออะไร?
Shihao Xu

ด้วย "Ctrl- [" ฉันหมายถึงการกดปุ่ม "Ctrl" และ "[" พร้อมกัน
Volsk

321

ฆ่าแมลงวันด้วยปืนใหญ่:

  • ไปที่การตั้งค่า ... > โปรไฟล์ > คีย์
  • กดโหลดล่วงหน้า
  • เลือกการแก้ไขข้อความธรรมดา

จากนั้นคุณสามารถย้ายคำถอยหลังใช้Option ⌥+ และส่งต่อคำโดยใช้Option ⌥+ ย้ายไปยังจุดเริ่มต้นของสายโดยใช้fn+ และจุดสิ้นสุดของบรรทัดกับ+fn นอกจากนี้คุณสามารถลบคำถอยหลังใช้Option ⌥+ ลบทั้งบรรทัดใช้+Command ⌘

หากค่าที่ตั้งไว้ไม่ปรากฏให้ติดตั้ง iTerm2 ใหม่ หากคุณติดตั้งโดยใช้ Homebrew + Cask:

brew cask reinstall iterm2

48
นี่ควรเป็นคำตอบที่ยอมรับได้!
guyarad

3
มันไม่ได้ผลสำหรับฉัน พารามิเตอร์: iTerm2 3.1.2, macOS 10.12.6, แป้นพิมพ์ภาษาเยอรมัน และฉันไม่ได้อยู่คนเดียว ...
t0r0X

2
นี่เป็นสิ่งที่ยอดเยี่ยมและจะเพิ่มความต้องการส่วนใหญ่ของคุณ อย่างไรก็ตามไม่ได้เพิ่ม 'ไปที่จุดเริ่มต้น / สิ้นสุดของบรรทัดผ่าน CMD + ลูกศรซ้าย / ลูกศรขวา' สำหรับการกระทำดังกล่าวโปรดดูที่: stackoverflow.com/questions/6205157/…
MikeyN0

35
ชีวิตของฉันเปลี่ยนไปหลังจากที่ฉันเห็นคำตอบนี้ ฉันหย่าภรรยาของฉันตอนนี้ฉันอยู่ใน Lambo กับนางแบบ
Dragos Rizescu

12
โปรดทราบว่านี่คือค่ากำหนด > โปรไฟล์ > คีย์> โหลดค่าที่ตั้งไว้ล่วงหน้าไม่ใช่ค่ากำหนด> คีย์> โหลดค่ากำหนด
kevin

148

ฉันชอบการตั้งค่าต่อไปนี้

  1. ค่ากำหนด> คีย์ (หรือค่ากำหนด> โปรไฟล์> คีย์)
  2. คลิกเครื่องหมายบวก

เลื่อนไปข้างหน้าหนึ่งคำ

option+right
send escape sequence
f

ย้อนกลับไปหนึ่งคำ

option+left
send escape sequence
b

ลบถึงจุดเริ่มต้นของคำ ( เครดิต )

option+delete
send hex code
0x1B 0x08

ลบไปยังจุดสิ้นสุดของคำ

fn+option+delete
send escape sequence
d

(ฉันจำไม่ได้แน่นอน แต่ฉันคิดว่าฉันคัดลอกคำตอบนี้จากคำตอบของ jherran ด้านล่างและเพิ่มเข้าไปอีกฉันควรเพิ่มข้อมูลเพิ่มเติมในความคิดเห็นหรือการแก้ไขที่แนะนำในคำตอบนั้นฉันไม่ทราบวิธีการปรับปรุง สถานการณ์ แต่ตอนนี้มันเป็นที่รู้จัก)


2
ใน MacOS 10.12 ฉันต้องใช้รหัสฐานสิบหก 0x17 เพื่อลบจุดเริ่มต้นของคำ
midopa

ใช้งานได้ดีกับ macOS 10.12 และ zsh
Sébastien

1
คำตอบที่ดีที่สุดที่คุณเคยมีเบียร์จากฉัน :)
อินฟินิตี้

1
ลองพิจารณาคำตอบของ jherran ฉันคิดว่าฉันเพิ่งปรับปรุงคำตอบของพวกเขาเพียงเล็กน้อยและน่าจะแนะนำให้แก้ไขแทนที่จะสร้างคำตอบของฉันเอง ฉันรู้สึกเหมือนฉันขโมยมัน
David Winiecki

อ้างอิงสิ่งนี้ : เพื่อทำ Esc-b ฉันต้องส่ง0x1b 0x42และสำหรับ Esc-f ฉันต้องส่ง0x1b 0x46: D
เมเรดิ ธ

36

เพื่อไปข้างหน้า (Alt-f), ย้อนกลับ (Alt-b) และลบ (Alt-d) Word

  1. เปิด iTerm
  2. ไปที่ iTerm> ค่ากำหนด ... > โปรไฟล์> คีย์
  3. ใต้คีย์ลัดโปรไฟล์คลิกเครื่องหมาย +
  4. พิมพ์คีย์ลัดของคุณ (ตัวเลือก -b ตัวเลือก -f ตัวเลือก -d ตัวเลือกซ้าย ฯลฯ )
  5. สำหรับการดำเนินการเลือกส่งลำดับหนี
  6. เขียน b, d หรือ f ในฟิลด์อินพุต

วิธีนี้ใช้ได้ผลกับ bash เป็นอย่างน้อย สำหรับ zsh มีวิธีอื่นในการนำทาง


2
ฉันพยายามเพิ่มตัวเลือก + ทางลัดที่ถูกต้องและได้รับข้อความเตือนเกี่ยวกับข้อขัดแย้งเนื่องจากฉันไม่ทราบว่าคุณสามารถกำหนดค่าคีย์ได้ทั้งในการตั้งค่า> คีย์> คีย์ลัดทั่วโลกและการตั้งค่า> โปรไฟล์> คีย์> คีย์ลัดของโปรไฟล์ การกำหนดค่าในโปรไฟล์เริ่มต้นทำงานได้
David Winiecki

1
มันใช้ได้กับ zsh ด้วย!
Andrii Abramov

2
ฉันคิดว่าคำตอบของคุณ (สำหรับโซลูชันเดียวกัน) เป็นวิธีที่ง่ายที่สุดในการเข้าใจ +1
nzaleski

1
คำอธิบายที่มีประโยชน์มาก
Conti

สมบูรณ์ คุณยังสามารถใช้ Command + F ฯลฯ เพื่อให้ปุ่ม "Alt" อยู่ในตำแหน่งเดียวกันและไม่จำเป็นต้องทำการปรับเปลี่ยนใด ๆ เมื่อสลับระหว่างพีซีและ Mac
friederbluemle

11

คล้ายกับคำตอบอื่น ๆ แต่สำหรับ Zsh ฉันใช้เวลาสักครู่เพื่อค้นหาสิ่งนี้:

หากคุณใช้ Zsh เช่น Oh My Zsh ใน iTerm ให้ไปที่: การตั้งค่า> โปรไฟล์ > เมนูย่อยของ Keys

คลิก + เครื่องหมาย

เพิ่มคอมโบลัดของคุณเลือก "ส่งลำดับหนี"

อินพุตสำหรับซ้ายและขวาด้านล่าง

ซ้าย:

[1;5D

ขวา:

[1;5C

1
คุณช่วยชีวิตคู่ของฉัน
thibaut noah

นี่เป็นทางออกเดียวที่เหมาะกับฉัน
Bryji

ในที่สุดโซลูชันง่ายๆที่ใช้งานได้: D ขอบคุณที่แบ่งปันกับเรา!
Periback

นี่ควรเป็นคำตอบ upvoted
ehime

2

คุณสามารถตั้งค่าเทอร์มินัลในโหมด vi ด้วยset -o viเพื่อให้สามารถใช้คำสั่งการเคลื่อนไหว vi ปกติ (เพิ่มบรรทัดใน.bash_profileเพื่อจัดเก็บการตั้งค่าอย่างถาวร)

ดังนั้นราวกับว่าใน vi คุณสามารถกดEscแล้วbเลื่อนหนึ่งคำไปข้างหลังย้อนกลับ ( wไปข้างหน้า) ไปที่จุดเริ่มต้นของบรรทัดด้วย0หรือค้นหาอักขระย้อนกลับด้วยF+ the char

กดiเพื่อกลับไปที่โหมดปกติและใส่

ผู้ที่คุ้นเคยกับ vi สามารถทำได้มากกว่านี้ แผ่นโกงสามารถพบได้ที่นี่


2
เป็นกลุ่มแก้ทุกอย่าง! : D
Breno Salgado

กดปุ่มEscจากนั้นIเพียงแค่ไปหนึ่งครั้งเพื่อเริ่มต้นของบรรทัดเล็กน้อยสะดวกน้อยกว่าCtrl-a- ใช้กรณีนี้เกิดขึ้นบ่อยครั้งเมื่อคุณต้องการเพียงแค่การปรับเปลี่ยนชื่อคำสั่ง ดังนั้นผมจึงใช้โหมด vi มีการเปลี่ยนแปลงบางอย่างในปุ่มลัด iTerm2 เพื่อทำแผนที่และที่คล้ายกันที่จะหลบหนีลำดับCtrl-A Esc+0ด้วยวิธีนี้กรณีเหล่านี้จะเร็วขึ้นเมื่อสิ้นสุดในโหมดแก้ไข
rfabbri

1

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

เปิดการตั้งค่า

กำหนดค่าคีย์ตัวเลือกทางซ้ายขวา (และ / หรือ) เพื่อส่ง Esc +

หากคุณยุ่งกับค่าที่ตั้งไว้ของคุณคุณอาจต้องโหลดค่าเริ่มต้นที่ตั้งไว้ล่วงหน้า (ระวังสิ่งนี้อาจเช็ด keybinds ที่กำหนดเองของคุณ!)

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

หากคุณเห็นอักขระแปลก ๆ หลังจากทำเช่นนี้คุณอาจต้องกำหนดค่า ~ / .inputrc หรือ / etc / inputrc ของคุณ

เพิ่มสิ่งนี้ใน ~ / .inputrc ของคุณ:

"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

อินพุตตัวอย่างแบบเต็ม:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.

# Be 8 bit clean.
set input-meta on
set output-meta on

# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[7~": beginning-of-line
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif

-1

ด้วย iTerm2 3.1.4 ฉันสามารถตั้งค่าต่อไปนี้โดยไม่ต้องเพิ่มการจับคู่คีย์แต่ละรายการ

  1. ไปที่การตั้งค่า> โปรไฟล์> คีย์
  2. คีย์ซ้าย / ขวา: เลือก Esc +

ด้วยเทอร์มินัลเซสชันใหม่ตอนนี้คุณสามารถใช้:

Option ⌥+ fเพื่อไปข้างหน้า

Option ⌥+ bเพื่อไปข้างหน้า

Option ⌥+ Delete ⌫เพื่อลบ Word


2
สิ่งนี้แตกต่างจากคำตอบที่ได้รับการโหวตอย่างสูงอย่างไร apple.stackexchange.com/a/293988/237
user151019
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.