2011-03-20 24 views
51
inoremap <Up>  <NOP> 
inoremap <Down> <NOP> 
inoremap <Left> <NOP> 
inoremap <Right> <NOP> 
noremap <Up>  <NOP> 
noremap <Down> <NOP> 
noremap <Left> <NOP> 
noremap <Right> <NOP> 

Esto es lo que uso para desactivar la navegación del cursor, para ayudar a que sacara a hjkl :)VIM: deshabilitar las teclas de cursor/flecha, pero sólo para la navegación

Pero también desactiva el cursor sobre el comando bar ... normalmente las teclas de flecha le permiten recorrer el historial

¿Es posible desactivar las teclas del cursor SÓLO para la navegación y no para el historial?

+4

¡Gracias, esta es la primera vez que recibo la respuesta de la pregunta! –

+0

En el modo de inserción, mis teclas 'up' y' down' aún funcionan. ¿Alguien más tiene este problema? – dylnmc

Respuesta

0

Cambie noremap a nnoremap para aplicar las asignaciones al modo normal, de lo contrario, son asignaciones globales de todos los modos.

+3

-1: No son todos los modos. Solo son asignaciones normales, pendientes de operador, de selección y de modo visual. – ZyX

9

El código que ha publicado no debe deshabilitar la navegación de historial en el modo de línea de comandos, ¿está seguro de que no tiene cnoremap <Up> <Nop> o noremap! <Up> <Nop> en algún lugar? Pruebe verbose cmap <Up>, debería mostrarle si la clave <Up> se redefine para el modo de línea de comando.


Si al decir «barra de comandos» se entiende la ventana de línea de comandos, puede probar lo siguiente:

nnoremap <expr> <Up> ((bufname("%") is# "[Command Line]")?("\<Up>"):("")) 
+0

Gracias por estas respuestas ...... ambas muy útiles, y sí, mi historia SI FUNCIONA realmente con las teclas de flecha - Tuve un problema conflictivo que hizo que pareciera que no :) – user537339

+1

Alternativamente, podría utilice el evento CmdWinEnter autocmd para desasignar teclas de flecha para la ventana de línea de comandos. – graywh

23

Puede desplazarse a través de la historia usando C-n y C-p (Ctrl + N y Ctrl + p, respectivamente).

+3

Esta es la solución correcta. Si quiere mantener sus manos en la fila de inicio, ¡mantenga sus manos allí! – progo

+1

@misha Quiero repetir "Deje de ser estúpido" al usar las teclas de flecha junto con la desactivación de esas teclas. ¿Puede decirme qué debo poner en .vimrc? No sé VimScript. – AbhimanyuAryan

+1

@AbhimanyuAryan viste esa charla, ¿verdad? :) de todos modos, la línea que estás buscando es algo así como: 'map : echoerr" Deja de ser estúpido "' – janosrusiczki

26

Añadir lo siguiente en su .vimrc archivo:

" Disable Arrow keys in Escape mode 
map <up> <nop> 
map <down> <nop> 
map <left> <nop> 
map <right> <nop> 

" Disable Arrow keys in Insert mode 
imap <up> <nop> 
imap <down> <nop> 
imap <left> <nop> 
imap <right> <nop> 
0

Uso q: para abrir una ventana dividida de su línea de comando. Puede navegar dentro de él normalmente, ya que es una ventana de vim normal que usa hjkl y los otros movimientos de vim habituales, y pulsa enter para ejecutar el comando debajo del cursor.

No utilice las teclas de flecha para navegar en el historial de línea de comandos.

Por cierto, también puede acceder a su historial de búsqueda usando q/ o q?.

0

También puede considerar reasignarlos para moverse entre las ventanas divididas. Esto desactiva las teclas de flecha para el movimiento direccional dentro del archivo, pero le permite moverse entre las ventanas divididas.

noremap <up> <C-w><up> 
noremap <down> <C-w><down> 
noremap <left> <C-w><left> 
noremap <right> <C-w><right> 
Cuestiones relacionadas