2010-08-19 19 views
16

Quiero trazar mi F2 para nerdtree con la siguiente entrada:teclas de función de mapeo en vim

map <F2> :NERDTreeToggle<CR> 

Pero incluso antes de eso, y después de guardar el vimrc, cada vez que presiono F2, sólo cambian el caso de las letras en las que el cursor está presente. Más tarde descubrió que cualquier tecla de función lo hace. F5 interruptores caso de 5 caracteres y así sucesivamente. ¿Esto se debe a algún otro plugin? Actualmente uso c.vim, snippetsEmu, surround, nerdtree y minibufexpl

No hay keymappings en ninguna tecla de función en mi vimrc.

Respuesta

17

Su problema es que vim no sabe qué emiten los terminales cuando presiona <F2>. En algunos terminales emite algo como <Esc>[12~, por lo que el vim sale del modo actual (o simplemente emite un pitido si no puede) (<ESC>), no hace nada ([1: debe haber alguna clave después de [, pero no 1, por lo que no hace nada) y cambia el caso de dos letras (2~). Por lo tanto, debe abrir .vimrc y escribir allí lo siguiente:

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

donde < C-v > <F2> significa que debe presionar <C-v> y luego <F2>. Esta línea debe indicarle a Vim la secuencia exacta de códigos que emite el terminal cuando presiona <F2>. Después de eso, use noremap <F2> whatever y debería funcionar. Si no es el único terminal que está utilizando, entonces es posible que desee poner if $TERM==#"<C-r>=$TERM<CR>" antes de esta línea y endif después.

+0

@Mlkhail ¿Has leído lo que he escrito? – ZyX

+0

oops. Me perdí la parte superior la última vez. Está funcionando ahora. Gracias. También, ¿no es necesario hacer mapas? – woodstok

+2

@Mlkhail Como 'map', pero evita el uso de otras asignaciones de usuario.Por ejemplo, si tiene 'imap a b' y' imap b c', entonces presionar 'a' dará como resultado' c'. Si tiene 'inoremap a b' entonces presionar' a' dará como resultado 'b' no importa si' b' se reasigna o no. Recomiendo nunca usar '? Map' a menos que sepa que necesita reasignar (por ejemplo, con las asignaciones' '). – ZyX

5
:map <F2> :NERDTreeToggle<CR> 

Después de iniciar Vim se puede ver con

:map <F2> 

lo F2 se asigna a. Es posible que los complementos cambien la asignación (no visible en .vimrc)

+0

intenté eso .. dice que no se encontró el mapeo .btb, para especificar F2, ¿has oprimido "F" y "2", ¿verdad? o ¿tenemos que usar ctrl + v? intenté ambos ... todavía no funcionaba. También estoy usando SSH Secure Shell Client para iniciar sesión en un servidor de FreeBSD. – woodstok

+0

Puede intentar cargar vim sin ninguna configuración gvim -u NONE -U NONE -N y luego en el modo de inserción vea lo que sucede cuando presiona las teclas de función debe insertar . A continuación, se puede intentar algo más simple a f2 por ejemplo : mapa "+ yy (tirón línea actual para pegar buffer) También puede asignar cualquier tecla de función (sí lo hace el tipo F y 2) – zzapper

+0

también escribe para ver? qué y dónde f2 piensa que está configurado en : mapa detallado zzapper

Cuestiones relacionadas