Mengapa pemetaan kunci nnoremap <SCk>: w <CR> tidak berfungsi?


8

Saya mencoba membuatnya sehingga saya dapat menulis buffer ke disk dengan satu keystroke.

(Catatan: idealnya, saya ingin ini bekerja di semua mode, tetapi untuk saat ini sebagai awal saya hanya mencoba membuatnya bekerja dalam mode normal. )

Di Vim wiki tertulis ...

Mendukung Vim mewakili karakter kontrol menggunakan notasi simbolik seperti <F1>, <C-W>, <C-S-F1>, dll

Dan juga...

Kunci dengan Ctrlpengubah kunci diwakili menggunakan <C-key>notasi. Misalnya Ctrl-Rdiwakili menggunakan <C-R>. Kunci dengan pengubah tombol Shift diwakili menggunakan <S-key>notasi. Misalnya Shift-F2diwakili menggunakan <S-F2>. Kunci dengan Altpengubah kunci diwakili menggunakan <A-key>atau <M-key>notasi. Anda dapat menggabungkan satu atau lebih pengubah kunci. Misalnya, untuk mewakili Ctrl+Shift+F3Anda dapat menggunakan <C-S-F3>.

Itu tampaknya mengatakan bahwa jika saya memasukkan ini ke dalam saya .vimrcitu harus bekerja ...

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

Tapi itu tidak berpengaruh. Ketika saya memuat ulang .vimrcdan menekan shift+ control+ Ktidak ada [File] writtenpesan muncul di area bawah.

Saya juga mencoba yang satu ini tetapi option+ Ktidak berpengaruh ...

 nnoremap <M-k> :w<CR>

Tidak ada pesan kesalahan.

Saya menggunakan OS X.


MEMPERBARUI

Ok saya baru mencoba ini ...

inoremap <M-s> Hey whats up

Lalu ketika saya masuk ke mode insert dan tekan option+ S, keluaran Vim ...

ß

Apakah OS X menyadap penekanan tombol saya sebelum Vim menerimanya? Apakah itu sebabnya ini tidak berhasil?

Jika demikian, adakah cara untuk menghentikannya selain membeli komputer lain?


5
Perhatikan bahwa pemetaan kunci Control + Shift + terpisah dari tombol Control + tidak berfungsi. Lihat: Dapatkah saya memetakan huruf Ctrl + huruf besar secara terpisah dari Ctrl + huruf kecil? (Kunci seperti F1 adalah kasus khusus). Yang sedang berkata, pemetaan tampak baik-baik saja. Vim mana yang digunakan? MacVim?
Martin Tournoij

Ok, terima kasih sudah memberi tahu saya. Saya akan mencoba menggunakan <M>sebagai gantinya <S-C>. Saya tidak menggunakan MacVim. Saya menggunakan Vim 7.4.1129 biasa yang diinstal melalui MacPorts.
Ethan


4
OS X akan menafsirkan Opsi-S sebagai ß. Untuk memetakannya di Vim, Anda perlu melakukannya :inoremap ß Hey whats up.
Amadan

1
<S-C-k>adalah tiga penekanan tombol. Katakan saja.
Antony

Jawaban:


1

Respons keyboard Anda dapat berbeda dari yang Anda harapkan. Misalnya, dapat memberikan beberapa karakter khusus bahasa Anda.

Untuk memeriksa apa yang dilakukan sistem Anda dengan menekan kombinasi apa pun:

ctrl+vdalam mode sisipkan lalu option+kataualt+k

Gunakan simbol output dalam pemetaan vimrc Anda <M-k>

PERINGATAN: metode ini kasar - simbol tergantung pada sistem, terminal dll. Jadi, Anda harus memasukkan .vimrc Anda seperti:

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

atau untuk mendeteksi sistem (OS X) seperti di sini


0

Ubah ke <C-S-k>. Ini bekerja dengan baik untuk saya. Anda dapat memberikan beberapa kunci lain juga, seperti <F10>untuk:wq!

:map <F10> :wq!<CR>

SCk juga berfungsi untuk saya dalam mode nnoremap.
SibiCoder

OS dan terminal apa?
Tom Hale

Linux dan vim 7.2
SibiCoder
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.