2015-12-04 20 views
8

Trong Emacs, tôi muốn kết hợp một tổ hợp phím cụ thể với lệnh. Tuy nhiên, vì tôi đang sử dụng Emacs ở chế độ đầu cuối trong phạm vi iTerm2 trên OS X, tôi cần dịch tổ hợp phím thành chuỗi thoát ký tự và đăng ký chuỗi đó với iTerm2 để nó nhận ra tổ hợp phím.Tìm ra chuỗi thoát tương ứng cho một tổ hợp phím đã cho

Nhưng làm cách nào để tìm ra trình tự tương ứng cho một tổ hợp phím? Ví dụ, tôi thấy rằng một cái gì đó giống như ^[[1;8A tương ứng với Ctrl + Alt + lên (nơi tôi đã cấu hình Alt để hoạt động như +Esc trong iTerm2), nhưng tôi không có ý tưởng làm thế nào mà tổ hợp phím chuyển thành này trình tự cụ thể.

Có cách nào tìm kiếm hoặc tìm ra chuỗi thoát cho bất kỳ tổ hợp phím nào không? Ví dụ: chuỗi là Ctrl + Alt + r?

Một câu hỏi liên quan, ai đó có thể giải thích cho tôi mối quan hệ giữa việc thiết lập một phím combo với chuỗi tương ứng của nó trong iTerm2 và làm Emacs dịch một chuỗi thành đại diện chính nội bộ của mình sử dụng input-decode-map bên .emacs (ví dụ (define-key input-decode-map "[escape_sequencehere]" [internal_key_representation_here])? Dường như với tôi rằng thiết lập nó trong một mình chỉ là iTerm2 là đủ để làm cho công việc ràng buộc trong Emacs, vì vậy khi nào và tại sao chúng ta cần phải thiết lập sau trong .emacs? (và có lẽ khi nào chúng ta cần cả hai để làm một cái gì đó hoạt động?)

+0

tôi cho rằng bạn đã đọc qua các tài liệu liên quan như http://www.emacswiki.org/emacs/EmacsForMacOS và http://www.emacswiki.org/emacs/MetaKeyProblems? – jtahlborn

Trả lời

1

Một số tổ hợp phím được gửi trực tiếp đến ứng dụng đang chạy trong iTerm2. Bạn có thể lấy nó

  • bằng cách sử dụng ctrl + v cách tiếp cận (xem In bash, how do I bind a function key to a command?) hoặc

    bash-3.2$ ^[[1;10A (in this case I hit ctrl + v before shift+alt+up) 
    
  • sed -n l (lưu ý đó là chữ thường L). Ví dụ, bạn có thể xem những gì các ứng dụng nhận được nếu bạn gửi (shift + alt + up):

    bash-3.2$ sed -n l 
    ^[[1;10A 
    \033[1;10A$ 
    

Nếu một số tổ hợp phím không vượt qua được, bạn có thể hướng dẫn iTerm2-let it pass và bản đồ nó tổ hợp phím mà bạn có thể phát hiện như được mô tả ở trên.
Ví dụ: bạn có thể gửi qua và bản đồ ctrl + alt + cmd + R đến ESC+sdf và thiết bị đầu cuối của bạn sẽ nhận được ^[sdf mà bạn có thể gán cho lệnh trong Emacs.

Các vấn đề liên quan