iTerm 2: Làm cách nào để đặt phím tắt để nhảy đến đầu / cuối dòng?


395

Tôi có thể thấy rằng Ctrl+ left/ rightnhảy đến đầu / cuối dòng. Làm thế nào để thay đổi điều này thành Cmd+ left/ right arrow?

Để có được Alt+ left/ hoạt right arrowđộng chính xác cho nhảy từ, hãy theo dõi bài viết này .



1
Nếu bạn cũng muốn các phím tắt này hoạt động trong VIM, hãy xem câu trả lời sau: stackoverflow.com/a/9611698/991068
Razvan Grigore

Câu trả lời:


735

Thêm vào iTerm2 các phím tắt hồ sơ sau đây

FOR  ACTION         SEND
⌘←  "SEND HEX CODE"      0x01 
⌘→  "SEND HEX CODE"      0x05
⌥←  "SEND ESC SEQ"  b
⌥→  "SEND ESC SEQ"  f

Đây là một hình ảnh cho những người cần nó

iTerm thêm hình ảnh quan trọng


3
Bạn có biết mã / chuỗi cho Command + Delete là gì không? (xóa lời nhắc)
Steven Lu

10
Tôi đã trả lời nhận xét đầu tiên của mình ở nơi khác, về cơ bản mã hex 0x15 cung cấp cho Ctrl + U để xóa dòng. Tuy nhiên, tôi đang tìm 0x01 Ctrl + A để can thiệp vào việc sử dụng Tmux. Do đó, tôi dự định ánh xạ nó vào phím Home (cùng chức năng với Fn + Left trên bàn phím Mac).
Steven Lu

7
Trình tự thoát cho Trang chủ là [1 ~ và trình tự thoát cho Kết thúc là [4 ~
Steven Lu

3
Hoạt động như một sự quyến rũ, tuyệt vời!
Juto

25
Ràng buộc chính xác là ⌘← "SEND ESC SEQ" OHdành cho Gia đình và ⌘→ "SEND ESC SEQ" OFKết thúc (đó là chữ hoa 'không phải là số không). Điều này mô phỏng thực sự nhấn phím Home và End, và như vậy sẽ hoạt động trong bash, vim, v.v.
Timothy Zorn

433

Để chuyển giữa các từ và bắt đầu / kết thúc dòng trong iTerm2, chọn một trong hai giải pháp bên dưới.

1. Giải pháp đơn giản (khuyên dùng)

  1. Mở tùy chọn
  2. Nhấp vào tab "Hồ sơ"
  3. Chọn một cấu hình trong danh sách bên trái (ví dụ: "Mặc định") và nhấp vào tab "Phím"
  4. Nhấp vào phần hạ xuống "Cài đặt sẵn" và chọn "Chỉnh sửa văn bản tự nhiên"

nhập mô tả hình ảnh ở đây


2. Phím ánh xạ thủ công (Nâng cao)

Nếu bạn không muốn sử dụng cài đặt trước "Chỉnh sửa văn bản tự nhiên" được đề cập ở trên, bạn có thể ánh xạ các phím bạn cần theo cách thủ công:

  1. Mở tùy chọn
  2. Nhấp vào tab Phím Keys
  3. Nhấp vào [+]biểu tượng

Bây giờ bạn có thể thêm các phím tắt sau:

Di chuyển con trỏ một từ trái

  • Phím tắt: +
  • Hành động: Gửi mã Hex
  • Mã số: 0x1b 0x62

nhập mô tả hình ảnh ở đây

Di chuyển con trỏ một từ phải

  • Kết hợp bàn phím: +
  • Hành động: Gửi mã Hex
  • Mã số: 0x1b 0x66

Di chuyển con trỏ đến đầu dòng

  • Kết hợp bàn phím: +
  • Hành động: Gửi mã Hex
  • Mã số: 0x01

Di chuyển con trỏ đến cuối dòng

  • Kết hợp bàn phím: +
  • Hành động: Gửi mã Hex
  • Mã số: 0x05

Xóa từ

  • Kết hợp bàn phím: +←Delete
  • Hành động: Gửi mã Hex
  • Mã số: 0x1b 0x08

Xóa dòng

  • Kết hợp bàn phím: +←Delete
  • Hành động: Gửi mã Hex
  • Mã số: 0x15

Hoàn tác

  • Kết hợp bàn phím: +z
  • Hành động: Gửi mã Hex
  • Mã số: 0x1f

Đừng quên xóa các ràng buộc trước đó :

  • Mở tab Hồ sơ cá nhân
  • Nhấp vào tab phụ Phím Keys
  • Xóa ánh xạ cho các tổ hợp phím + +

2
Điều này làm việc tốt cho tôi trong iTerm2 và rất dễ theo dõi, cảm ơn!
Natetronn

3
Chỉ cần làm rõ các ràng buộc ban đầu cho ⌥ ← làm gì? Tôi nhìn thấy nó Says send Hex Codes: 0x1b 0x1b 0x5b 0x44. Sẽ là tốt để biết trong trường hợp mọi người không muốn loại bỏ điều này.
Tháng Tám

5
Nhảy đến đầu và cuối dòng không hoạt động với tôi bằng zsh. Sử dụng "Mã Hex" "0x01" / "0x05", như được đề xuất bởi câu trả lời hàng đầu làm việc cho tôi.
Lật

2
Nhảy đến đầu và cuối dòng cũng không hiệu quả với tôi. Câu trả lời hàng đầu đã làm việc.
herabimbola

3
ITerm có cách nào để gói chúng vào một cài đặt trước mà chúng ta có thể tải không? Có vẻ khó chịu khi gõ thủ công nhưng điều này làm việc cho tôi và thật tuyệt vời. Cảm ơn một lto!
Tháng Tám

259

Tôi thấy đã có rất nhiều câu trả lời hay, nhưng điều này sẽ cung cấp gần nhất với chức năng OSX gốc nhất có thể không chỉ trong vỏ của bạn. Tôi đã xác minh rằng điều này hoạt động trong các phiên ZSH, Bash, nút, python -i, iex và irb / pry (sử dụng đá quý rb-readline cho readline, nhưng nên hoạt động cho tất cả).

Mở tùy chọn iTerm + ,và điều hướng đến Profilestab ( Keyscó thể sử dụng tab, nhưng việc thêm keybinding vào hồ sơ của bạn cho phép bạn lưu hồ sơ của mình và đồng bộ hóa nó với nhiều máy tính) và keystab phụ và nhập thông tin sau:

Xóa tất cả các ký tự bên trái của con trỏ

+ ←DeleteGửi mã Hex:

0x15Tương thích hơn, nhưng chức năng đôi khi là xóa toàn bộ dòng thay vì chỉ các ký tự bên trái của con trỏ. Cá nhân tôi sử dụng cái này và sau đó ghi đè lên ràng buộc zsh của tôi ^Uđể chỉ xóa những thứ ở bên trái của con trỏ (xem bên dưới).

hoặc là

0x18 0x7fÍt tương thích hơn, không hoạt động trong nút và sẽ không hoạt động trong zsh theo mặc định, xem bên dưới để sửa zsh (bash / irb / pry sẽ ổn), thực hiện chức năng mong muốn khi nó hoạt động.

Xóa tất cả các ký tự bên phải của con trỏ

+ fn+ ←Deletehoặc + Delete→Gửi mã Hex:0x0b

Xóa một từ bên trái của con trỏ

+ ←DeleteGửi mã Hex:

0x1b 0x08 Phá vỡ trong IEX của Elixir, dường như hoạt động tốt ở mọi nơi khác

hoặc là

0x17 Hoạt động ở mọi nơi, nhưng không dừng lại ở các từ ngắt thông thường trong IRB và thay vào đó sẽ xóa cho đến khi nó nhìn thấy một không gian theo nghĩa đen.

Xóa một từ bên phải con trỏ

+ fn←Deletehoặc + Delete→Gửi mã Hex:0x1b 0x64

Di chuyển con trỏ đến phía trước của dòng

+ Gửi mã Hex:0x01

Di chuyển con trỏ đến cuối dòng

+ Gửi mã Hex:0x05

Di chuyển con trỏ một từ trái

+ Gửi mã Hex:0x1b 0x62

Di chuyển con trỏ một từ phải

+ Gửi mã Hex:0x1b 0x66

Hoàn tác

+ zGửi mã Hex:0x1f

Làm lại thường không bị ràng buộc trong bash, zsh hoặc readline, vì vậy chúng ta có thể đặt nó thành một hexcode không sử dụng mà sau đó chúng ta có thể sửa trong zsh

+ + Zhoặc + yGửi mã Hex:0x18 0x1f

Bây giờ làm thế nào để sửa bất kỳ cái nào không hoạt động

Đối với zsh, bạn có thể thiết lập ràng buộc cho chức năng + ←Delete+ + Z/ + chưa hoạt động ybằng cách chạ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

Tôi không thể tìm thấy giải pháp để thêm làm lại trong bash hoặc readline, vì vậy nếu có ai biết giải pháp cho một trong những giải pháp đó, vui lòng bình luận bên dưới và tôi sẽ cố gắng thêm chúng vào.

Đối với bất cứ ai đang tìm kiếm bảng tra cứu về cách chuyển đổi các chuỗi chính thành hex, tôi thấy bảng này rất hữu ích.


2
Điều đó thực sự hữu ích, tạo ra nhiều sự khác biệt! Tôi muốn chỉ ra rằng một số người có thể bị nhầm lẫn với $phía trước echo(chỉ cần loại bỏ nó?). Ngoài ra, nó hoàn hảo. Cảm ơn bạn.
edmundo

1
@Christophe Vì vậy, có vẻ như ràng buộc chính là như vậy. Hoặc bạn đã mắc lỗi khi thêm các giá trị hex vào hoặc liên kết phím cho từ lạc hậu đang bị ghi đè. Chạy bindkey | grep "\^\[b"và điều đó sẽ cho bạn biết nếu có thứ gì khác ghi đè lên nó sau khi nó được đặt. Nó chỉ nên trở lại #=> "^[b" backward-word. Nếu nó bị ghi đè, bạn sẽ phải tìm nơi bị ghi đè và xóa nó. Nếu điều đó là không thể, bạn có thể chạy echo 'bindkey "^[b" backward-word' >> ~/.zshrcnó sẽ thêm nó vào dòng cuối cùng của bạn .zshrc, sau đó khởi động lại iTerm và nó sẽ hoạt động
Travis

2
@Christophe kiểm tra keystab trong tùy chọn iTerm để xem liệu nó cũng ánh xạ + tới thứ gì đó. Nếu vậy hãy loại bỏ nó. Bạn có thể kiểm tra xem máy của bạn bcó hoạt động chính xác hay không bằng cách nhấn nhanh vào escphát hành, sau đó nhấn b. Điều đó sẽ nhảy một từ sang trái. Ngoài ra, bạn có thể ánh xạ + thành hex 0x1b 0x42 hoặc 0x1b 0x5b 0x31 0x3b 0x35 0x44 . Tôi xác nhận rằng cả hai đều làm việc cho tôi. Tôi thực sự nghĩ rằng bạn đã + bị ghi đè trong iTerm, hoặc trongprofile keys tab hoặc tabkeys .
Travis

3
Kinh ngạc! Chỉ cần tìm hiểu về Undo cộng với Redo ràng buộc từ đây.
ecbrodie

3
Tôi đã làm điều này bằng tay và tôi nghĩ tại sao tôi không thể nhập một hồ sơ để làm điều này? Sau đó, tôi đã tạo GabLeRoux / iterm2-macos-Dynamic-profile dựa trên các hướng dẫn này. Nó hoạt động hoàn hảo, cảm ơn 🍻
GabLeRoux

48

Thực hiện theo hướng dẫn bạn đã liệt kê ở trên để thiết lập tùy chọn chính của mình trong iterm2 .

  1. Tạo một phím tắt mới
  2. Chọn "Gửi chuỗi thoát" làm hành động
  3. Sau đó, để đặt cmd-left , trong văn bản bên dưới:
    • Nhập [Hđể bắt đầu dòng
      HOẶC
    • Nhập [Fcho cuối dòng

1
F chỉ nhảy một từ trong iterm2 của tôi
Matthias

1
ITerm => Tùy chọn => Phím
pfrank

Thích cái này! các giải pháp khác không làm việc cho tôi. Tôi dành hàng giờ bực bội rằng tôi không thể sử dụng ctrl + a và ctrl + e trong iterm2. Nhưng tôi không muốn từ bỏ cá vì nó. Điều này hoàn toàn làm việc cảm ơn bạn!
FLY

Các giải pháp khác cũng không hiệu quả với tôi, nhưng giải pháp này đã làm được.
Braham Snyder

42

Trong iTerm 3.0.12, bạn có thể chuyển sang Natural Text Editingcài đặt trước:

nhập mô tả hình ảnh ở đây

iTerm → Tùy chọn → Cấu hình → Phím

Cảnh báo Vì là cài đặt sẵn, nó có thể ghi đè các khóa bạn đã liên kết trước đó. Vì vậy, tốt hơn là lưu các ràng buộc chính hiện tại của bạn trước khi áp dụng một cài đặt trước.


2
Bạn có thể giải thích thêm câu trả lời của bạn? Như trong, những gì mà cài đặt trước bao gồm và có thể ghi đè?
Carles Alcolea

Cảm ơn câu trả lời. Cũng chiming trong đó là thực tế có lẽ là tốt nhất để áp dụng điều này để cấu hình tùy chỉnh của riêng bạn mà cách bạn không chỉnh với giá trị mặc định và có thể chuyển đổi hồ sơ cá nhân như một văn bản tự nhiên chỉnh sửa "chế độ"
Tháng Tám

29

Để tham khảo nhanh về bất cứ ai muốn đi đến cuối dòng hoặc bắt đầu dòng trong iTerm2, liên kết trên http://hackaddict.blogspot.com/2007/07/skip-to-next-or-preingly-word- in-iterm.html lưu ý rằng trong iTerm2:

  • Ctrl+ A, nhảy đến đầu dòng, trong khi
  • Ctrl+ E, nhảy đến cuối dòng.

Tại sao câu trả lời này không đứng đầu?
Gangadhar JANNU

1
@GangadharJannu: Hoàn toàn đồng ý. Nó đi thẳng đến ans. Nên ở trên đỉnh.
Catbuilts

10

Tôi đã sử dụng câu trả lời của Travis và tôi đã tạo một hồ sơ động mà bạn có thể nhập dựa trên hướng dẫn của nó.

GabLeRoux / iterm2-macos-động-hồ sơ

Các hướng dẫn có trong readme và việc nhập này nhanh hơn rất nhiều so với việc thêm tất cả chúng theo cách thủ công. Tôi đã đưa ra câu trả lời theo yêu cầu của @ gooli's vì điều này bị ẩn trong một bình luận. Hy vọng bạn sẽ thích này 🍻


2
Đã trở lại đây một năm sau và rất vui khi tìm thấy điều này!
elifiner 17/03/19

9

Chỉ để giúp đỡ bất cứ ai gặp vấn đề tương tự nhưng cụ thể là sử dụng Zsh shell với iTerm 2. Hóa ra Zsh không đọc /etc/inputrcđúng cách và vì vậy không hiểu bất kỳ ràng buộc chính nào bạn thiết lập thông qua các tùy chọn!

Để khắc phục điều này, bạn cần thêm một số ràng buộc chính vào .zshrctệp của mình , chẳng hạn như:

# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line

Lưu ý dấu gạch chéo ngược trong ví dụ trên trước "e", bài viết được liên kết không hiển thị chúng, vì vậy hãy thêm chúng vào .zshrctệp của bạn khi thêm liên kết.


4

Các ràng buộc emacs thời trang cũ vẫn có thể hoạt động trong iterm2 và os x terminal:

Tùy chọn -> Cấu hình -> Phím (tab phụ trong cấu hình)

  • Đặt Left/Right option <kbd>⌥</kbd> key acts as +Esc(tương tự trong thiết bị đầu cuối os x)

Điều này sẽ cho phép alt- falt- bđể di chuyển các từ bằng từ. (Vẫn ctrl- actrl- eluôn hoạt động như bình thường)

Nếu được đặt là metacác ràng buộc cũ sẽ hoạt động trong khi một số ràng buộc iterm2 không có sẵn.


2

Như giải thích ở đây , bạn có thể làm điều đó với một bước đơn giản:

Theo mặc định, nhảy từ (tùy chọn + → hoặc ←) và xóa từ (tùy chọn + backspace) không hoạt động. Để bật các tính năng này, hãy chuyển đến "iTerm → Tùy chọn → Cấu hình → Phím → Tải đặt trước ... → Chỉnh sửa văn bản tự nhiên → Boom! Đầu phát nổ"


2

Điều duy nhất hoạt động để di chuyển đến đầu và cuối dòng là

⌘← "SEND ESC SEQ" OH- để di chuyển đến đầu dòng
⌘→ "SEND ESC SEQ" OF- để di chuyển đến cuối dòng


1

bind -p sẽ hiển thị danh sách các khóa thoát bị ràng buộc trong vỏ của bạn, điều đó có thể giúp cung cấp cho bạn nhiều ý tưởng / cụm từ tìm kiếm hơn.


5
bind -pchỉ hoạt động trong shell Bourne (bash, sh) cho zsh, csh tcsh, sử dụng bindkey.
Travis


0

Đối với tôi, sự kết hợp sau đây đã làm việc:
| Key Action Esc+ End result | |-----------------------------------------------------| | Send Escape Sequence a Send ^[ a | | Send Escape Sequence e Send ^[ e |

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.