ALT + mũi tên di chuyển giữa các từ trong zsh và iTerm2


19

Tôi đã đăng nhập vào một trong các máy chủ của nhà cung cấp dịch vụ lưu trữ và nhận thấy ALT + trái và ALT + phải di chuyển giữa các từ trong dấu nhắc shell trong GNU Screen.

Tôi cần cấu hình loại ràng buộc chính nào và nơi nhận hành vi này với OS X zsh cục bộ của tôi đang chạy trong iTerm2?


Những người quan tâm đến câu hỏi này cũng có thể quan tâm để biết rằng các từ zsh không phải là các từ bash. FOO=BARlà một từ để zsh và 2 từ để bash. Tương tự, nếu bạn đặt con trỏ ở cuối foo --barvà thực hiện alt + backspace, trong bash bạn sẽ có foo --và trong zsh bạn sẽ có foo . Zsh thêm rất nhiều tính năng cho bash, nhưng nó cũng có nhiều mặc định điên rồ để ghi đè.
weberc2

Câu trả lời:


28

Tôi tìm thấy giải pháp ở đây: https://coderwall.com/p/h6yfda . Sẽ sao chép các phần quan trọng nhất của nó, trong trường hợp liên kết đi xuống.

  1. Chuyển đến Tùy chọn, Hồ sơ, Phím.
  2. Đặt phím trái của bạn để hoạt động như một ký tự thoát.
  3. Xác định vị trí phím tắt hiện tại cho ⌥ ← hoặc tạo một phím tắt mới, với các cài đặt sau:
    • Phím tắt: ⌥ ←
    • Hành động: Gửi chuỗi thoát
    • Esc +: b
  4. lặp lại cho phím tắt ⌥ → với các cài đặt sau:
    • Phím tắt: ⌥ →
    • Hành động: Gửi chuỗi thoát
    • Esc +: f

1
Điều đáng nói là nó đặc trưng cho một trình giả lập thiết bị đầu cuối cụ thể - không nói chung với zsh.
Hi-Angel

6

Bạn đang tìm kiếm các từ khóa backward-wordforward-word. Vì vậy, nếu bạn đang ở trên một vỏ mà các tổ hợp phím không hoạt động hãy thử bindkey -L | grep backward-wordđể kiểm tra xem chúng có được cấu hình hay không. Có nhiều thông tin hơn về điều này trong zshzle (1) .

Bạn có thể tự cài đặt phím bấm bằng cách nhập nội dung như sau:

bindkey ' Ctrl+ v Alt+ Right' chuyển tiếp từ

bindkey ' Ctrl+ v Alt+ Left' từ lạc hậu

Tôi cũng gặp một số rắc rối với các phím bấm và vấn đề gần như là phím Tùy chọn / Alt đã gửi một cái gì đó khác với Meta / Escape dự kiến.


Bạn cũng có thể sử dụng emacs-forward-wordemacs-backward-word. Sự khác biệt là bạn nhảy về phía trước của từ và lùi về phía trước của từ thay vì nhảy luôn ở đầu từ.
Aalex Gabi

Đây là một giải pháp mạnh mẽ và sạch sẽ nhất. Nó có thể thích ứng với các loại ánh xạ khóa khác nhau và / hoặc tất cả các loại kết hợp ssh-tmux-zsh. Các giải pháp khác liên quan đến chuỗi thoát mã hóa cứng chỉ giải quyết một số trường hợp trong một số hệ thống cụ thể.
HKTonyLee

3

Tôi không thể nói cho iTerm nhưng đây là những yếu tố chính tôi đã sử dụng để giải quyết vấn đề này trong Gnome Terminal, trên Fedora 19, chạy ZSH 5.0.7 với Oh-my-zsh:

bindkey "\e[1;3C" forward-word
bindkey "\e[1;3D" backward-word

trong đó \e== Chuỗi thoát khóa (như được ghi trong mục 4.1.1 )

[== O(chữ hoa O; như được ghi trong mục 4.2.1 ), trong một số trường hợp. Ví dụ, theo tmuxsự thay thế này là cần thiết đối với tôi, tuy nhiên không có tmuxyêu cầu thì không có sự thay thế nào được thực hiện và [==[

Các mã khóa cho một chuỗi có thể được lấy bằng cách sử dụng catvà nhấn vào chuỗi mong muốn. Ví dụ, kết quả của việc nhấn <Alt+Right>nên được diễn giải như vậy:

$ cat
^[[1;3C

^[== \e== Chuỗi khóa thoát

[== [không có tmuxOR [== O(chữ hoa o) vớitmux

1;3 == Tôi không chắc về cái này, nhưng nó có nghĩa logic <Alt>

C == Phím mũi tên phải

Sau đó, chuỗi này được đưa vào bindkeytrong ~/.zshrctệp để duy trì, như là đối số đầu tiên và bị ràng buộc , có nghĩa là tổ hợp phím trong đối số sẽ thực thi một lệnh soạn thảo cụ thể (hoặc tiện ích theo thuật ngữ zsh), cho tiện ích đầu tiên dòng của ví dụ trên là forward-word.

Các ~/.zshrccần được tái nguồn gốc sau khi hai lệnh dưới đây được nối thêm vào nó với:

$ source ~/.zshrc

Bây giờ một điều khó chịu trên hệ thống của tôi là sự kết hợp đặc biệt này đã khiến trình giả lập thiết bị đầu cuối phát ra tiếng bíp mỗi khi lệnh được ban hành, điều này tôi đã khắc phục bằng cách vô hiệu hóa

'Edit'->'Profile Preferences'->'Terminal Bell' hộp kiểm.


1

Điều làm việc tốt nhất với tôi liên quan đến việc làm cho điều hướng dòng lệnh của iTerm2 trở nên trực quan hơn đối với tôi (Tôi là một người trẻ không lớn lên trên dòng lệnh, nhưng tôi đã dành nhiều thời gian cho các trình soạn thảo văn bản và IDE) đến:

  • Chuyển đến Tùy chọn -> Hồ sơ -> Phím
  • Trong danh sách Ánh xạ khóa, có một hộp để thêm / xóa hoặc tải Presets (hộp tổ hợp)
  • Chọn Natural Text Editingtùy chọn trong thả xuống Presets.

Điều này mặc định các khóa của trình soạn thảo để sắp xếp chuẩn hơn mà không cần tôi phải sửa đổi từng tùy chọn riêng lẻ.


0

Tôi đề nghị bạn sử dụng zkbdđể cấu hình keybindings. Tôi sử dụng nó và Alt+ Left/ Alt+ Righthoạt động tốt trên iTerm2. Xem zshcontrib(1)để biết chi tiết về zkbd.

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.