Rebinding Hồi rõ ràng nhắc nhở trong mutt


9

Theo mặc định, khi nhập thông tin tại dấu nhắc lệnh trong mutt, bạn có thể xóa lời nhắc với Ctrlg, như được mô tả trong hướng dẫn :

^ G n / a phá thai

Tôi đã cố gắng để liên kết chức năng này với Escape. Thật không may, abortkhông được liệt kê trong các chức năng có sẵn, trong hướng dẫn hoặc trong nguồn .

Tôi đã thử sử dụng điều này trong .muttrc:

trình soạn thảo liên kết <esc> hủy bỏ

nhưng nó ném một lỗi:

Lỗi trong /home/jason/.mutt/muttrc, dòng 143: hủy bỏ: không có chức năng như vậy trong bản đồ

Tôi đã thử sử dụng một bản đồ khác, như ( generic) và thử nghiệm các chức năng hư cấu khác, như clear, không có kết quả.

Làm thế nào tôi có thể liên kết Escapeđể xóa dòng nhắc nhở?


1
Thoát ràng buộc không phải là một ý tưởng hay vì ký tự thoát (được gửi khi nhấn thoát) cũng là tiền tố cho các chuỗi thoát được gửi bởi tất cả các phím chức năng như mũi tên, del, F1 ...
Stéphane Chazelas

Đó là một điểm tốt mà tôi đã không xem xét. Kiểm tra nó, Escape cần phải được gửi hai lần để gửi một chữ, ^[vì vậy nó có thể không phải là một showstopper (dù sao tôi cũng không sử dụng bất kỳ ràng buộc nào dựa vào nó).
jasonwryan

Esc, Escsẽ gửi hai ký tự ESC. Bạn cũng có thể nhấn Escmột lần và đợi khoảng một giây (thời gian chờ mặc định chờ phần còn lại của chuỗi thoát).
Stéphane Chazelas

Đúng. Đầu tiên tôi phải tìm ra cách liên kết nó :)
jasonwryan

Câu trả lời:


5

Không thể với các ràng buộc chính. Ctrl-Gđược mã hóa cứng trong mutt ở mức thấp hơn so với xử lý macro hoặc keybinding (xem mutt_getch()trong mã nguồn của mutt, ở lõi của tất cả đầu vào của người dùng trong mutt trả về lỗi ^G).

macro editor \e '^G'

cũng không hoạt động.

Những gì bạn có thể làm là cấu hình thiết bị đầu cuối của bạn để gửi ^Gkhi nhấnEscape

Với xterm:

xterm -xrm 'XTerm.VT100.translations: #override <KeyPress> Escape: string(0x7)'

Nếu bạn đang sử dụng screen, bạn cũng có thể làm

screen -X bindkey $'\e' stuff $'\a'

trước khi gọi mutt và khôi phục nó sau đó (thật không may, dường như bạn không thể có các ràng buộc phím cửa sổ màn hình trong màn hình). Ngoài ra, sẽ có vấn đề nếu trình chỉnh sửa email của bạn là vi.


Upvote: bởi vì nó trả lời câu hỏi (nghĩa là không thể). Bạn có thể vui lòng giải thích về "mã hóa cứng ... ở cấp độ thấp hơn". Và trong khi cách giải quyết là khéo léo, nó không thực sự khả thi khi tôi sử dụng Escape trong rất nhiều chương trình thiết bị đầu cuối khác - do đó mong muốn ràng buộc nó ở đây.
jasonwryan

Tôi đã chỉnh sửa câu trả lời của mình với nhiều chi tiết hơn. Tôi ngạc nhiên khi bạn bị ràng buộc bởi Esc trong các chương trình khác vì nó thường không có trong các ứng dụng mà tôi biết vì lý do được đề cập trong các bình luận ở trên.
Stéphane Chazelas

2

Có vẻ như đó là một ý tưởng thực sự tồi tệ đối với tôi để trói buộc trốn thoát ControlG. Tôi đến đây để tìm kiếm một giải pháp mutt, nhưng vì dường như không có, tôi sẽ đưa ra câu trả lời từ những gì tôi đang làm cho bất kỳ ai tình cờ vấp phải điều này. Nó không tối ưu nhưng nó sẽ không ảnh hưởng đến bất kỳ chương trình nào khác:

macro editor \e "<enter><shell-escape>xdotool key control+g<enter>"

hoặc là

macro editor \e "<enter><shell-escape>xsendkey Control+g<enter>"

Sử dụng một cái gì đó như xdotool hoặc xsendkey để kiểm soát giả + g hoạt động và không gây rối khi thoát ra ở mọi nơi khác. Có một độ trễ hình ảnh đối với tôi để nó thoát khỏi trình chỉnh sửa dòng, nhưng các ràng buộc chỉ mục sẽ hoạt động ngay lập tức và độ trễ hình ảnh sẽ biến mất ngay khi bạn sử dụng liên kết chỉ mục. Nhập đầu tiên là cần thiết để mutt sẽ không gõ "...." và biến nó thành tiêu đề hoặc cụm từ tìm kiếm hoặc một cái gì đó.


0

Giải pháp này tệ đến mức tác giả thích chỉnh sửa mã nguồn của Mutt để thoát khỏi ^ G

Cảnh báo: Giải pháp này có vẻ không tương thích với OSX, Emacs và các ứng dụng khác sử dụng Ctrl+G

Sau ngày đầu tiên ở Mutt, tôi gần như sử dụng ^ G in Vim do nhầm lẫn ... Sau đó, tôi đã thử một thứ dường như hoạt động ở đây, trong trình quản lý cửa sổ i3xfce-terminal .

Đã thêm dòng này vào ~/.i3/config:

bindsym --release Escape exec --no-startup-id xvkbd -xsendevent -text "\[Escape]\[Control]\[g]"

Phải sử dụng "\[Escape]\[Control]\[g]"vì chỉ "\[Control]\[g]"làm cho nó ngừng hoạt động trong Vim.

Nếu bạn không sử dụng i3, tôi nghĩ bạn có thể sử dụng xbindkey để chạy xvkbd -xsendevent -text "\[Escape]\[Control]\[g]"khi Escđược nhấn.

Đó không phải là một giải pháp đẹp ... Nó có thể làm cho Esckhóa của bạn không thể sử dụng được trong một số chương trình, nhưng ít nhất ở đây có vẻ ổn.

BIÊN TẬP:

Bây giờ tôi thấy phần Ctrl+ Glàm cho Vim hiển thị vị trí trong tệp. Không có gì quá ấn tượng, bây giờ.

Liên kết này dường như có một giải pháp tốt hơn, nhưng đối với urxvt : http://www.unixli.com/q/answers-urxvt-map-esc-key-to-key- resultence-83211.html

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.