2012-06-11 23 views
11

Tôi muốn bản đồ Ctrl - w đến kill-region trong Bash 4.2. Khóa này bị ràng buộc là unix-word-rubout (xóa từ lùi) theo mặc định. Theo hướng dẫn, bạn có thể thực hiện lại bản sao với lệnh bind có các tùy chọnLàm thế nào tôi có thể hủy liên kết và remap C-w trong Bash?

-u chức năng Bỏ liên kết tất cả các khóa được liên kết với hàm được đặt tên.

-r keyseq Xóa mọi ràng buộc hiện tại cho keyseq.

tôi đã cố gắng bind -r "\C-w"bind -u unix-word-rubout nhưng quan trọng là không unset và, như bind -P | grep unix-word-rubout cho thấy, không có sự thay đổi trong các bản đồ.

tôi chơi với bind một chút và tôi có thể unbind phím built-in khác nhưng không Ctrl - w.

Trả lời

13

Ctrl - w được ràng buộc trong stty-werase. Bạn sẽ cần phải unbind nó có đầu tiên.

stty werase undef 
bind '"\C-w":kill-region' 
11

Theo mặc định, cố gắng cố gắng ràng buộc các ký tự điều khiển được điều khiển đặc biệt bởi trình điều khiển đầu cuối của hạt nhân. (Để xem cách thiết bị đầu cuối của bạn được cấu hình, chạy

stty -a 

.) Thiết bị đầu cuối của bạn có lẽ có Ctrl-w thiết lập để werase, vì vậy bash kết nối nó đến unix-word-rubout. Ràng buộc này được ưu tiên hơn bất kỳ khóa phím nào mà bạn chỉ định trong ~/.inputrc.

Để tránh lập bản đồ này, bạn cần phải thiết lập các readline biến bind-tty-special-chars-off trong tập tin ~/.inputrc của bạn:

set bind-tty-special-chars off 
Các vấn đề liên quan