Ràng buộc Fn-Delete trong zsh trên Mac OS X


22

Trong zsh, bất cứ khi nào tôi nhấn Fn + Delete (đó là xóa chuyển tiếp), một dấu ngã (~) sẽ được chèn. Điều này cho thấy zsh không có ràng buộc chính.

Làm cách nào để liên kết nó và khiến nó hoạt động bình thường (xóa trước con trỏ)?

Câu trả lời:


20

Đầu tiên hãy tìm ra trình tự nó tạo ra.

echo "CtrlVFnDelete" | od -c

Sau đó liên kết chuỗi đó bằng cơ chế liên kết zsh bình thường.


1
~> echo "~" | od -c 0000000 ~ \ n 0000002 ~> Tôi phải làm gì với thông tin này bây giờ?
Thomas R

10
@rixth: Nó không thực sự chỉ xuất ra một dấu ngã. Bạn không thể sử dụng echo "~", bạn phải thực sự làm theo chỉ dẫn mà Ignacio đã đưa cho bạn. Trên hệ thống của tôi, nó ^[[3~(hoặc là odđầu ra 033 [ 3 ~:). Vì vậy, lệnh sẽ là bindkey "^[[3~" delete-chartrong đó sẽ đi trong của bạn ~/.zshrc.
Tạm dừng cho đến khi có thông báo mới.

2
Để làm rõ ở trên, ctrl-vlà một chuỗi thoát đặc biệt có nghĩa là "chèn ký tự tiếp theo tôi nhấn như một ký tự không được giải nghĩa theo nghĩa đen, thay vì làm bất cứ điều gì nó thường làm." Có nghĩa là nó không được chuyển đổi thành ~, nhưng vẫn là chuỗi thoát.
NHDaly

Tôi không hiểu làm thế nào để sử dụng đầu ra ở trên để lấy ra bindkey. Đầu ra của tôi là 0000000 C t r l V F n D e l e t e \n 0000016.
Oliver Joseph Ash

4

Đối với tôi, ở trên đã không thực hiện được mẹo nên tôi đã thêm ràng buộc khóa sau vào ~/.zshrc:

bindkey "\e[3~" delete-char

FYI: Tôi đang dùng Mac (High Sierra).


Và làm thế nào để biết mã cho bất kỳ khóa nào khác mà tôi muốn liên kết, ví dụ Fn + F1? để tôi có thể đặt mã tương ứng trong ~/.zshrc.
alexventuraio

1
Bạn có thể gõ catvà sau đó gõ các phím. Fn+F1cho tôi ^[OPví dụ.
LordTribual

1

bindkey 'CtrlvFnDelete' delete-char

Điều này sẽ liên kết Fn+ Deleteđể xóa chuyển tiếp một ký tự. Nếu những điều trên không rõ ràng, bạn cần gõ Ctrl+ v, Fn+ Deletegiữa việc gõ dấu ngoặc kép. Ctrl+ vcho phép bạn nhập chuỗi thoát thoát theo nghĩa đen của bất kỳ khóa nào xuất hiện sau nó.

Bạn có thể đặt dòng này trong ~/.zshrctập tin của bạn .

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.