Làm cách nào để ánh xạ khóa ALT trong .vimrc?


9

Để có thể thêm các dòng trống mà không cần chuyển sang chế độ chèn, tôi đang cố gắng ánh xạ ALT-oALT-Ođến o<ESC>o<ESC>

Tôi đã thử những điều sau đây trong tôi .vimrc

map <M-o> o<ESC>
map <M-O> O<ESC>

map <ALT-o> o<ESC>
map <ALT-O> O<ESC>

và (như đề xuất dưới đây)

map <A-o> o<ESC>
map <A-O> O<ESC>

nhưng không có việc gì Nó chỉ đưa ra hành vi thông thường, như thể ALT-ochưa được xác định.

Đây là lần đầu tiên tôi thay đổi .vimrctệp và tôi không thể tìm thấy tài liệu cho bạn biết cách chỉ định các khóa khác nhau. Nhưng tôi có thể xác minh rằng .vimrctệp của tôi đang được đọc, bằng cách bao gồm:

map <Enter> ihello<ESC>

Mà thành công ánh xạ <Enter>để chèn hellovà trở về chế độ lệnh.

Tôi đang sử dụng vim với cygwin.


Có vẻ như thiết bị đầu cuối của bạn không vượt qua trình tự alt. Có bất kỳ trình tự được biết đến khác làm việc? Còn việc thử Ctrl thì sao? Bạn đang sử dụng thiết bị đầu cuối nào?
Caleb

Tôi đang sử dụng vim trên cygwin, nhưng tôi đã làm cho các kịch bản khác hoạt động, như chi tiết chỉnh sửa của tôi.
Eric Wilson

Ctrl hoạt động, sắp xếp. Nó dường như không cho phép tôi phân biệt giữa <C-o><C-O>.
Eric Wilson

Câu trả lời của Giles là đúng hướng. Bạn chắc chắn nên chuyển sang một thiết bị đầu cuối có khả năng hơn. Những vấn đề này sẽ biến mất và bạn sẽ lấy lại chìa khóa của mình!
Caleb

Câu trả lời:


10

Để xem thiết bị đầu cuối của bạn đang gửi gì khi bạn nhấn một phím, chuyển sang chế độ chèn, nhấn Ctrl+V, sau đó nhấn phím. Hầu hết các khóa với hầu hết các thiết bị đầu cuối đều gửi một chuỗi thoát trong đó chỉ có ký tự đầu tiên là ký tự điều khiển; Ctrl+Vchèn ký tự tiếp theo theo nghĩa đen, vì vậy bạn có thể chèn toàn bộ chuỗi thoát theo cách đó.

Các thiết bị đầu cuối khác nhau gửi các chuỗi thoát khác nhau cho một số kết hợp chính. Nhiều thiết bị đầu cuối gửi cùng một ký tự ( ^O) cho cả hai Ctrl+OCtrl+Shift+O; nếu đó là trường hợp, Vim sẽ không thể phân biệt giữa chúng.

Bạn đề cập rằng bạn đang sử dụng Cygwin; thiết bị đầu cuối nào bạn đang chạy Vim in là thông tin thích hợp nhất. Nếu bạn đang sử dụng bảng điều khiển Windows gốc, hãy tạo cho mình một thiết bị đầu cuối tốt hơn. Tôi khuyên bạn nên mintty để chạy các ứng dụng chế độ văn bản Cygwin trong một thiết bị đầu cuối trong Windows bên ngoài X, nhưng rxvt Windows bản địa Cygwin và PuTTYcyg cũng rất tốt. (Cũng Console2 để chạy các ứng dụng bảng điều khiển Windows, nhưng điều đó không đúng chủ đề ở đây).


2

Nếu Control+Vtheo sau là ALT-xchương trình ^[x(nhập vào thiết bị đầu cuối), bạn có thể sửa nó bằng tập lệnh nhỏ này từ vim.wikia.com :

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

Thêm vào .vimrc cho tất cả ánh xạ phím alt.


1

Điều này hoạt động với tôi trên thiết bị đầu cuối Ubuntu 16.04 xfce (và thiết bị đầu cuối rỉ sét)

Đặt kích hoạt đoạn mã cực đại thành Meta-/(giống như đoạn mã emacs)

let g:UltiSnipsExpandTrigger="^[/"

Bây giờ tôi gõ ^[/vào vim

Ở chế độ chèn Ctrl-V Alt-/

( MetaAltphím trên bàn phím PC của tôi)


-1

Phím M (eta) là nút cửa sổ. Nó chỉ là <A-o>.


Điều này cũng không hoạt động.
Eric Wilson

Điều này không phải lúc nào cũng đúng, trên các bố cục bàn phím khác nhau và ngôn ngữ địa phương chúng thường khác nhau.
Caleb

@Caleb có tài liệu nào cho việc này không?
Eric Wilson

Tôi đã thử map <A-o> o<ESC>và nó làm việc cho tôi. Nếu bạn đặt nó trong của bạn .vimrc, bạn đã tải lại nó?
Martin Uting

Người hỏi đã nêu trong câu hỏi của họ rằng họ đã xác minh tệp đang được tải. Điều này không liên quan đến người dùng vì chúng ở trên windows, nhưng bạn có thể thấy các cấu hình khóa Meta / Win / Alt khác nhau trong các tệp hình học / ký hiệu / mã khóa xkb. Bạn sẽ nhận thấy ngay cả trong các tùy chọn bố trí bàn phím gnome, có một số cách phổ biến để ánh xạ lại giữa Alt / Win / Meta. Một trong những lý do này tồn tại là do sự chênh lệch trong bố cục cơ sở.
Caleb
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.