2010-08-19 5 views
16

voglio mappare la mia F2 per nerdtree con la seguente voce:tasti funzione di mappatura in vim

map <F2> :NERDTreeToggle<CR> 

Ma prima ancora, e dopo aver salvato il vimrc, ogni volta che premo F2, passa appena il caso di le lettere su cui è presente il cursore. Più tardi scopri che ogni tasto funzione lo fa. F5 interrompe il caso di 5 caratteri e così via. È questo a causa di qualche altro plugin? Attualmente utilizzo c.vim, snippetsEmu, surround, nerdtree e minibufexpl

Non ci sono keymapping per alcun tasto funzione nel mio vimrc.

risposta

17

Il tuo problema è che vim non sa cosa emette il terminale quando si preme <F2>. Su alcuni terminali emette qualcosa come <Esc>[12~, quindi il vim esce dalla modalità corrente (o semplicemente emette un segnale acustico se non può) (<ESC>), non fa nulla ([1: ci deve essere qualche chiave dopo [, ma non 1, quindi non fa nulla) e cambia caso di due lettere (2~). Quindi, si dovrebbe aprire Vimrc e scrivere lì il seguente:

set <F2>=<C-v><F2>

dove < C-v > <F2> significa che è necessario premere <C-v> e poi <F2>. Questa riga dovrebbe indicare al Vim l'esatta sequenza di codici che viene emessa dal terminale quando si preme <F2>. Successivamente, utilizzare noremap <F2> whatever e dovrebbe funzionare. Se non è l'unico terminale che stai usando, allora potresti voler inserire if $TERM==#"<C-r>=$TERM<CR>" prima di questa riga e endif dopo.

+0

@Mlkhail Hai letto quello che ho scritto? – ZyX

+0

oops. Ho perso la parte superiore dell'ultima ora. Funziona ora. Grazie. Inoltre, Wat non funziona? – woodstok

+2

@Mlkhail Come 'map', ma impedisce l'utilizzo di altri mapping utente.Ad esempio, se hai 'imap a b' e' imap b c', premendo 'a' si otterrà' c'. Se hai 'inoremap a b', premendo' a' risulterà in 'b', non importa se' b' è rimappato o meno. Raccomando di non usare mai '? Map' a meno che non si sappia che è necessario rimappare (ad esempio, con i' '' mapping '). – ZyX

5
:map <F2> :NERDTreeToggle<CR> 

Dopo aver avviato Vim si può guardare con

:map <F2> 

quello F2 viene mappato. È possibile che i plugin cambino la mappatura (non visibile in .vimrc)

+0

ho provato quello .. non dice mappatura found.btb, per specificare F2, devi premere "F" e "2" giusto? o dovremmo usare ctrl + v? Ho provato entrambi ... Ancora non funziona. Inoltre sto usando il client SSH Secure Shell per accedere a un server FreeBSD. – woodstok

+0

Si potrebbe provare a caricare vim senza alcuna impostazione gvim -u NONE -U NONE -N quindi in modalità di inserimento vedere cosa succede quando si preme i tasti funzione deve inserire . quindi provare mappatura qualcosa di più semplice per f2 esempio : mappa "+ aa (tirare linea corrente per incollare buffer) Inoltre si può mappare qualsiasi tasto di funzione (sì lo fai tipo f e 2) – zzapper

+0

tipo anche a vedere? cosa e dove f2 pensa che sia impostato a : verbose map zzapper