Tại sao ánh xạ khóa nnoremap <SCk>: w <CR> không hoạt động?


8

Tôi đang cố gắng để làm cho nó có thể ghi một bộ đệm vào đĩa bằng một lần nhấn phím.

(Lưu ý bên lề: lý tưởng nhất là tôi muốn nó hoạt động ở tất cả các chế độ, nhưng hiện tại, khi bắt đầu, tôi chỉ cố gắng để nó hoạt động ở chế độ bình thường. )

Trên wiki Vim có ghi ...

Hỗ trợ Vim đại diện ký tự điều khiển sử dụng ký hiệu mang tính biểu tượng như <F1>, <C-W>, <C-S-F1>vv

Và cũng ...

Một khóa với công cụ Ctrlsửa đổi khóa được biểu diễn bằng <C-key>ký hiệu. Ví dụ Ctrl-Rđược đại diện bằng cách sử dụng <C-R>. Một khóa với công cụ sửa đổi phím Shift được biểu diễn bằng <S-key>ký hiệu. Ví dụ Shift-F2được đại diện bằng cách sử dụng <S-F2>. Một khóa với công cụ Altsửa đổi khóa được biểu diễn bằng cách sử dụng <A-key>hoặc <M-key>ký hiệu. Bạn có thể kết hợp một hoặc nhiều sửa đổi quan trọng. Ví dụ, để đại diện cho Ctrl+Shift+F3bạn có thể sử dụng <C-S-F3>.

Điều đó dường như đang nói rằng nếu tôi đặt cái này vào .vimrcthì nó sẽ hoạt động ...

 nnoremap <S-C-k> :w<CR>

Nhưng nó không có tác dụng. Khi tôi tải lại .vimrcvà nhấn shift+ control+, Kkhông có [File] writtenthông báo nào xuất hiện ở khu vực phía dưới.

Tôi cũng đã thử cái này nhưng rồi option+ Kcũng không có tác dụng ...

 nnoremap <M-k> :w<CR>

Không có thông báo lỗi.

Tôi đang dùng OS X.


CẬP NHẬT

Ok tôi vừa thử điều này ...

inoremap <M-s> Hey whats up

Sau đó, khi tôi chuyển sang chế độ chèn và nhấn option+ S, Vim xuất ra ...

ß

OS X có chặn các tổ hợp phím của tôi trước khi Vim thậm chí nhận được chúng không? Có phải đó là lý do tại sao điều này không hoạt động?

Nếu vậy, có cách nào để khiến nó ngừng làm việc đó ngoài việc mua một máy tính khác không?


5
Lưu ý rằng ánh xạ phím Control + Shift + tách biệt với phím Control + không hoạt động. Xem: Tôi có thể ánh xạ Ctrl + chữ in hoa riêng biệt với Ctrl + chữ thường không? (các phím như F1 là trường hợp đặc biệt). Điều đó đang được nói, bản đồ có vẻ tốt. Vim nào đang sử dụng? MacVim?
Martin Tournoij

Ok, cảm ơn đã cho tôi biết. Tôi sẽ thử sử dụng <M>thay vì <S-C>. Tôi không sử dụng MacVim. Tôi đang sử dụng Vim 7.4.1129 thường xuyên được cài đặt qua MacPorts.
Ethan


4
OS X sẽ hiểu Option-S là ß. Để ánh xạ nó trong Vim, bạn cần phải làm :inoremap ß Hey whats up.
Amadan

1
<S-C-k>là ba tổ hợp phím. Chỉ cần nói.
Antony

Câu trả lời:


1

Phản ứng bàn phím của bạn có thể khác hơn bạn mong đợi. Ví dụ, nó có thể cung cấp một số ký tự đặc biệt cho ngôn ngữ của bạn.

Để kiểm tra hệ thống của bạn làm gì bằng cách nhấn bất kỳ kết hợp nào:

ctrl+vtrong chế độ chèn và sau đó option+khoặcalt+k

Sử dụng biểu tượng đầu ra trong ánh xạ vimrc của bạn thay vì <M-k>

CẢNH BÁO: phương pháp này là thô - ký hiệu phụ thuộc vào hệ thống, thiết bị đầu cuối. Vì vậy, bạn phải đặt các điều kiện .vimrc của mình như:

if has("gui_running")
    if has("x11")
        <map_command_here>
    if has("gui_gtk2")
        <map_command_here>

hoặc để phát hiện các hệ thống (OS X) như ở đây


0

Thay đổi nó thành <C-S-k>. Việc này ổn với tôi. Bạn cũng có thể cung cấp một số khóa khác, như <F10>cho:wq!

:map <F10> :wq!<CR>

SCk cũng hoạt động với tôi trong chế độ nnoremap.
SibiCoder

Hệ điều hành và thiết bị đầu cuối nào?
Tom Hale

Linux và vim 7.2
SibiCoder
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.