2011-08-03 14 views
43

Soy un usuario de emacs que está aprendiendo mucho tiempo Vim. Emacs me permite navegar en el mini-buffer (donde emito comandos como C-x C-s) usando los mismos atajos de teclado de navegación que en cualquier otro buffer. Por ejemplo, puedo navegar hacia adelante un personaje usando C-f, incluso mientras estoy en el mini-buffer. También podría usar las teclas de flecha, pero están demasiado lejos.Navegando en el modo de comando de Vim

¿Hay alguna combinación de teclas para navegar en modo comando de Vim (:), sin utilizar las teclas de flecha - equivalente a emacs C-F, C-b? Gracias.

+0

duplicado posible de [Cómo puedo moverse en la línea de comandos Vim?] (Http://stackoverflow.com/questions/2075569/how-can-i-move-around-in-the-vim-command- línea) –

Respuesta

61

Agregando a la respuesta de Greg Hewgill, puede utilizar q: para abrir la ventana de línea de comandos, donde tienes cualquier poder de edición de Vim en tu mano.

+1

Hola, nunca he usado eso antes. –

+2

Cuando he aprendido una cosa sobre Vim, entonces nunca dejas de aprender alguna característica nueva e increíble ;-) – Boldewyn

+20

Además, si ya estás en la línea de comandos y quieres conservar lo que has escrito y aún entrar en el ventana de línea de comandos, escriba ctrl-F. Por lo tanto, ": " debe lograr lo mismo que "q:". Si no funciona, se configurará 'compatible' o se asignará otra tecla a la opción 'cedit'. Ver: ayuda q: para más detalles :) – bhh1988

7

Con las asociaciones de teclas predeterminadas, vim no ofrece navegación sin teclas de flecha de la edición de línea de comando. Sin embargo, vea :help cmdline-editing para ver un ejemplo de cómo usar el comando :cnoremap para configurar enlaces de teclas alternativos.

27

Algunos del Vim ayuda:

CTRL-B or <Home> 
     cursor to beginning of command-line 
CTRL-E or <End> 
     cursor to end of command-line 
CTRL-H    
<BS>  Delete the character in front of the cursor (see |:fixdel| if 
     your <BS> key does not do what you want). 
<Del>  Delete the character under the cursor (at end of line: 
     character before the cursor). 
CTRL-W  Delete the |word| before the cursor. This depends on the 
     'iskeyword' option. 
CTRL-U  Remove all characters between the cursor position and 
     the beginning of the line. 
+0

Exactamente lo que estaba buscando, ¡gracias Jeet! –

19

Tengo estos en mi .vimrc

cnoremap <C-a> <Home> 
cnoremap <C-e> <End> 
cnoremap <C-p> <Up> 
cnoremap <C-n> <Down> 
cnoremap <C-b> <Left> 
cnoremap <C-f> <Right> 
cnoremap <M-b> <S-Left> 
cnoremap <M-f> <S-Right> 
+0

Esto me hace tan feliz. Para usuarios con problemas, ligue '' vea http://stackoverflow.com/a/27206531/1213041 – cdosborn

Cuestiones relacionadas