Ánh xạ phím Alt trái trong Vim?


12

Tôi có thể ánh xạ tổ hợp phím Right Alt+ Left Arrowvới <a-left>hoặc bằng <m-left>. Nhưng tôi không thể lập bản đồ Left Altchính.

Có cách nào làm được việc này không?

Chỉnh sửa:
Chỉ để rõ ràng <a-left>có nghĩa là Alt+ Left Arrow.
Câu hỏi quan trọng ở đây là sự khác biệt giữa Left AltRight Alttừ quan điểm của keymappings trong Vim là gì?

Câu trả lời:


14

Nếu bạn làm :help key-notationtrong vim, bạn sẽ thấy rằng các sửa đổi duy nhất mà Vim nhận ra là shift, control, alt / meta (được coi là từ đồng nghĩa) và phím lệnh Mac. Bạn có thể dễ dàng sử dụng xmodmap để ánh xạ phím alt bên phải của bạn sang một công cụ sửa đổi mới mà Vim nhận ra, nhưng có lẽ không có công cụ sửa đổi nào hiện không được bạn sử dụng. (Tôi không biết liệu có thể khiến các hệ thống Linux đại diện cho công cụ sửa đổi khóa lệnh Mac khi Vim nhìn thấy hay không.) Không nhìn thấy chúng hoặc ít nhất là không thể ràng buộc chúng.

Một tùy chọn khác là sắp xếp cho Mũi tên Phải-Trái để tạo một chuỗi khóa cụ thể, ví dụ: Esc- [MyUniqueGarbageHere. Điều này chắc chắn là có thể thực hiện được, và sau đó bạn có thể bảo Vim liên kết điều đó với bất kỳ hành động nào bạn thích, khác với phím alt bên trái của bạn bị ràng buộc. Nhược điểm của việc này là bạn cần thực hiện nó cho từng tổ hợp RightAlt + Key riêng lẻ. Nhưng nếu bạn chỉ muốn làm điều này cho một vài phím, điều đó rất khả thi.

Chính xác cách bạn triển khai nó sẽ phụ thuộc vào việc bạn đang nói về việc sử dụng Vim trong X hay trong bảng điều khiển Linux hoặc trong một số môi trường khác. Tôi sẽ cho rằng bạn đang nói về việc sử dụng nó trong X.

  1. Sử dụng xmodmap để liên kết RightAlt với, giả sử, Mod3. Sắp xếp để điều này được chạy một lần khi phiên X của bạn bắt đầu. Một số bản phân phối đã có tệp / etc / X11 / xinit / xinitrc sẽ tải các tệp tại các vị trí cụ thể có chứa các lệnh xmodmap.

    xmodmap -e "remove Mod1 = Alt_R" -e "add Mod3 = Alt_R"
    
  2. Tôi sử dụng thiết bị đầu cuối urxvt. Nó cho phép một người xác định các tổ hợp phím trong tệp loại Xresource. Bạn có thể làm điều đó trong ~ / .config / Xresource; Tôi làm điều đó trong ~ / .config / app-defaults / URxvt. Tôi đã đặt một dòng như thế này trong tệp đó (cú pháp chính xác nhạy cảm với tệp bạn đặt nó vào):

    URxvt.keysym.Mod3-Left:    \033<RAlt-Left>
    

    Bây giờ bắt đầu một thiết bị đầu cuối mới, nhập ctrl-V sau đó nhập RightAlt + Left. Bạn sẽ thấy ở dòng lệnh các ký tự ^ [[<RAlt-Left>. Nó có hoạt động không? Tốt

  3. Trong ~ / .vimrc của bạn, đặt cái này:

    set t_Ff=^[<RAlt-Left>
    

'^ [' Ở đây là một ký tự thoát. Mỗi ký tự khác ('<', 'R', 'A', v.v.) là chính họ. Sử dụng tiền tố khóa "theo nghĩa đen" của vim, theo sau là một lối thoát, để nhập '^ [' (Tôi quên khóa "nghĩa đen" là gì theo mặc định --- cũng có thể là ctrl-V?) . Một cái khác là t_Fg. Bạn có thể sử dụng :set termcaptrong vim để xem các mục thiết bị đầu cuối nào được chỉ định và chỉ sử dụng t_XX cho một số XX không được sử dụng. Thực hiện theo dòng .vimrc được trình bày ở trên với những cái tiếp theo:

    map <t_Ff> whatever-vim-keys-you-want-it-mapped-to
    map! <t_Ff> whatever-vim-keys-you-want-it-mapped-to

Cũng có thể trực tiếp làm:

    map ^[<RAlt-Left> whatever-vim-keys-you-want-it-mapped-to

Tuy nhiên, tôi đã tìm thấy kỹ thuật sử dụng một thiết bị đầu cuối nhàn rỗi để hoạt động đáng tin cậy hơn nhiều.

Tôi đã đưa ra rất nhiều giả định ở đây: rằng bạn đang sử dụng Linux, X, v.v. Nếu bạn đang sử dụng một chương trình thiết bị đầu cuối khác với urxvt, nó có thể hoặc không thể cung cấp các kỹ thuật liên kết phím đủ mạnh để thực hiện những gì tôi đã mô tả. Nếu bạn chọn các khóa ít kỳ lạ hơn, bạn vẫn có thể làm điều gì đó như tôi đã mô tả ở đây. Ví dụ: bạn có thể sắp xếp để RAlt-Left bị ràng buộc với F21 và sau đó đi từ đó. Hãy cho chúng tôi biết yêu cầu của bạn là gì.


Điều này cũng áp dụng cho gvim?
Glyph

Tôi đã tìm thấy điều này đặc biệt hữu ích. Tôi sử dụng lxterminal và muốn ánh xạ khóa alt của mình trong vim. Trong thiết bị đầu cuối, khi tôi gõ Ctrl-V và sau đó là tổ hợp phím mong muốn của tôi (ví dụ Alt-T), nó sẽ nhổ ra ^ [t. Tôi đã sử dụng điều này trong .vimrc của tôi thay vì <At> để thực hiện ánh xạ (^ [tất nhiên là ký tự thoát đơn) và nó thực hiện hoàn hảo. (^ [^ T cũng liên kết chính xác Ctrl + Alt + T)
elynnaie
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.