2011-01-25 9 views
38

En Vim, ¿hay alguna forma de repetir el último comando independientemente de si se trata de una edición o no, y sin tener la previsión de grabar primero una macro?¿Cómo repito cualquier comando en Vim, como "C-x z" en emacs?

E.g. digamos que escribo :bn, y quiero volver a hacerlo (era el archivo incorrecto). Presionar . obviamente no lo hace. O tal vez estoy haciendo gE y quiero repetir que (con una sola pulsación de tecla ya que claramente gE es un poco doloroso de escribir).

¿Quizás hay algunos complementos? Similar a this question.

(Incluso más fresco sería para unirse de forma retroactiva una serie de comandos a una macro, por lo que se podría escribir [email protected] o algo para repetir los últimos 5 comandos ...)

Respuesta

50

Para repetir un comando de línea de comandos, intente @:, para repetir un comando/inserción de modo normal, trate de .,

Añadir a continuación la cartografía a su .vimrc si desea acortar el mismo: -

:noremap <C-P> @:<CR> - Esto va a asignar Ctrl + P para comando anterior comando de línea. Puedes mapear cualquier otro combo.

+0

Entonces, ¿qué hay de los comandos de modo normal como "gE"? Hay un comando ": norma" para ejecutar comandos de modo normal desde la línea de comandos, pero no se repite ... – johv

+0

¿Qué hace 'gE' de todos modos? intenté 'dw' borrar una palabra, y luego presioné' .' para eliminar otra palabra – Ravikiran

+0

Es un comando de movimiento, "Hacia atrás hasta el final de WORD", el reverso de E. – johv

12

:help repeating proporcionará los comandos de repetición típicos (como., @ :, etc.). Puede intentar repeat.vim. Eso puede acercarte más a lo que estás buscando.

+0

repeat.vim resuelto mi problema :) –

0

Puede asignar @: a alguna clave para una mayor comodidad:

:map <F2> @: 

y entonces es más fácil de usar con repeticiones.

5

sólo puede utilizar ""

Ejemplo: Tiene "abc" en 10 lugares en su archivo y desea reemplazarlo por "def" en 5 lugares.

Paso 1: Encuentra primera aparición de ABC escribiendo el comando "/ abc"
Paso 2: Una vez que el cursor está en "abc", Reemplazar abc por el comando "CW" para sacar la palabra "abc"
Paso 3 : Escriba "def" como reemplazo y presione enter para ir al modo de comando
Paso 4: Para repetir esta acción simplemente escriba el comando "n" para ir a la siguiente aparición de abc y escriba el comando ".". El comando recuerda que reemplazó "abc" con "def" la última vez y realizará el mismo aquí.

Cuestiones relacionadas