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 .
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 .
Câu trả lời:
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ó
⌘← "SEND ESC SEQ" OH
dành cho Gia đình và ⌘→ "SEND ESC SEQ" OF
Kế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.
Để 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.
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:
[+]
biểu tượngDi chuyển con trỏ một từ trái
0x1b 0x62
Di chuyển con trỏ một từ phải
0x1b 0x66
Di chuyển con trỏ đến đầu dòng
0x01
Di chuyển con trỏ đến cuối dòng
0x05
Xóa từ
0x1b 0x08
Xóa dòng
0x15
Hoàn tác
0x1f
Đừng quên xóa các ràng buộc trước đó :
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.
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 Profiles
tab ( Keys
có 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à keys
tab 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:
0x15
Tươ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áchoặ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 ⌘+ ←Deletevà ⇧+ ⌘+ 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.
$
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.
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' >> ~/.zshrc
nó 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
keys
tab 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 b
có hoạt động chính xác hay không bằng cách nhấn nhanh vào esc
phá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
.
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 .
Trong iTerm 3.0.12, bạn có thể chuyển sang Natural Text Editing
cài đặt trước:
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.
Để 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:
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 🍻
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 .zshrc
tệ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 .zshrc
tệp của bạn khi thêm liên kết.
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)
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- fvà alt- bđể di chuyển các từ bằng từ. (Vẫn ctrl- avà ctrl- eluôn hoạt động như bình thường)
Nếu được đặt là meta
cá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.
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ổ"
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.
bind -p
chỉ hoạt động trong shell Bourne (bash, sh) cho zsh, csh tcsh, sử dụng bindkey
.
được giải thích trong https://aaronaddeld.com/articles/hexcodes-and-iterm/
bạn có thể sử dụng xxd -psd
để lấy mã hex.
Đố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 |