Perché il mapping dei tasti nnoremap <SCk>: w <CR> non funziona?


8

Sto cercando di farlo in modo da poter scrivere un buffer su disco con una sequenza di tasti.

(Nota a margine : idealmente, mi piacerebbe che funzionasse in tutte le modalità, ma per il momento come inizio sto solo cercando di farlo funzionare in modalità normale. )

Sul wiki di Vim dice ...

Supporti Vim che rappresentano i caratteri di controllo utilizzando notazione simbolica come <F1>, <C-W>, <C-S-F1>, etc.

E anche...

Una chiave con il Ctrlmodificatore di chiave viene rappresentata usando la <C-key>notazione. Ad esempio Ctrl-Rè rappresentato usando <C-R>. Un tasto con il modificatore del tasto Maiusc viene rappresentato usando la <S-key>notazione. Ad esempio Shift-F2è rappresentato usando <S-F2>. Una chiave con il Altmodificatore di chiave viene rappresentata usando <A-key>o <M-key>notazione. È possibile combinare uno o più modificatori di tasti. Ad esempio, per rappresentare Ctrl+Shift+F3è possibile utilizzare <C-S-F3>.

Questo sembra dire che se lo metto nel mio .vimrcdovrebbe funzionare ...

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

Ma non ha alcun effetto. Quando ricarico .vimrce premo shift+ control+ Knon [File] writtenappare alcun messaggio nell'area in basso.

Ho anche provato questo, ma poi option+ Knon ha avuto alcun effetto ...

 nnoremap <M-k> :w<CR>

Nessun messaggio di errore

Sono su OS X.


AGGIORNARE

Ok ho appena provato questo ...

inoremap <M-s> Hey whats up

Quindi quando vado in modalità inserimento e premo option+ S, uscite Vim ...

ß

OS X sta intercettando i miei tasti prima che Vim li riceva? È per questo che non funziona?

Se è così, c'è un modo per farlo smettere di farlo oltre all'acquisto di un altro computer?


5
Nota che la mappatura di Control + Shift + tasto separato da Control + tasto non funziona. Vedi: Posso mappare una lettera Ctrl + maiuscole separatamente da Ctrl + lettera minuscola? (tasti come F1 sono casi speciali). Detto questo, la mappatura sembra a posto. Quale Vim sta usando? MacVim?
Martin Tournoij,

Ok, grazie per avermi informato. Proverò a usare <M>invece di <S-C>. Non sto usando MacVim. Sto usando Vim 7.4.1129 normale installato tramite MacPorts.
Ethan,


4
OS X interpreterà Opzione-S come ß. Per mapparlo in Vim, devi farlo :inoremap ß Hey whats up.
Amadan,

1
<S-C-k>sono tre battute. Sto solo dicendo.
Antonio

Risposte:


1

La risposta della tastiera può essere diversa da quella prevista. Ad esempio, può fornire alcuni caratteri speciali della tua lingua.

Per verificare cosa fa il tuo sistema premendo una combinazione qualsiasi:

ctrl+vin modalità inserimento e poi option+koalt+k

Utilizzare il simbolo di output nella mappatura vimrc anziché <M-k>

ATTENZIONE: questo metodo è approssimativo - i simboli dipendono dal sistema, dal terminale ect. Quindi devi inserire le tue condizioni .vimrc come:

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

o per rilevare sistemi (OS X) come qui


0

Modificalo in <C-S-k>. Funziona bene per me. Puoi dare anche qualche altra chiave, come <F10>per:wq!

:map <F10> :wq!<CR>

SCk funziona anche per me in modalità nnoremap.
SibiCoder

Quale sistema operativo e terminale?
Tom Hale,

Linux e vim 7.2
SibiCoder il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.