¿Hay alguna manera de repetir un personaje mientras está en el modo de inserción de Vim? Por ejemplo, digamos que me gustaría insertar 80 guiones, en algo como emacs escribiría:
Ctrl+U 8 0 -
La única forma en que sé cómo hacerlo en VIM es salir del modo normal para el argumento de repetición, luego volver al modo de inserción para escribir el guión, luego salir para insertar los guiones reales, Y luego volver al modo de inserción para continuar mecanografía. La secuencia es muy larga:
Esc 8 0 a - Esc a
Sería bueno no entrar y salir de los modos.
<C-o>
es la abreviatura deCtrl
+o
.:normal
comando que le permite emitirlos desde el símbolo del sistema. Ocasionalmente bastante útil.Escnic Esc Esc.
Por ejemplo, Esc4iJEsc Escsaldrá
JJJJ
.fuente
fuente
A través de una sola repetición:
Más detalles sobre la repetición única:
:help .
fuente
También puedes hacer, Escnihello there EscEsc
donde, n es el número de repeticiones.
p.ej, Esc5ihello there EscEsc
fuente
Esc
dos veces después. Gracias @prashantHay muchas otras formas, pero AFAIK, la que usted describe es la más corta. En vim , se supone que debes pasar tu tiempo en modo comando, por lo que serían solo 3 pulsaciones de teclas + el número de repeticiones (80i-).
Sin embargo, si descubres que a menudo utilizas esta repetición, puedes convertirte en una función o macro para ese fin; tal vez algo como:
fuente
Dijiste que sería 'agradable' permanecer en el modo 'Insertar', sin embargo, en el Modo Comando, el siguiente método evitaría tu segundo ESC:
Si bien sé que esta publicación es antigua, parece una pena perderse la obvia opción 'Cortar / Copiar y Pegar' ...
x ...cortar
80 ...número de copias
p Pegar
Nota: Esto es similar al método sugerido por Martin Beckett, sin embargo, recibo un retraso al emitir ese comando, tal vez porque cambia de modo varias veces, este comando se ejecuta instantáneamente.
fuente
v
y
para ingresar al modo visual, luego tirar, luego80
p
pegarlo 80 veces. ¿Me estoy perdiendo algo o olvidaste un paso?Respuesta tardía, pero para lo que vale, si quieres enviarle correo no deseado, puedes usar el comando "repetir último comando":
.
i"Frase" Esc -
i to insert, enter phrase/character, esc to go normal mode
. -
Spam till you are satisfied. Will repeatedly input the phrase you typed (it repeats your last command).
Esto me resulta especialmente útil cuando no sé exactamente cuántas repeticiones quiero hacer, pero sé visualmente cuánto tiempo quiero que sea. Básicamente explotar
.
hasta que mis ojos estén contentos.fuente
Me sorprende que nadie haya sugerido esto todavía:
En el modo Insertar, use
<C-r>=repeat('-', 80)<CR>
Es decir:
repeat('-', 80)
Funciona para repetir cualquier personaje cualquier cantidad de veces.
Esto usa más teclas que la respuesta de @ romainl, pero no deja el modo Insertar en absoluto.
fuente
Además de la función de escritura que repetirá el texto varias veces, puede usar <C-x><C-l>: si ya tiene una línea que contiene 80 guiones, escribir algunos guiones al comienzo de la nueva línea y luego presionar <C-x><C-l>completará las líneas que comienzan con estos pocos guiones que Es probable que la línea con 80 guiones. Solía escribir líneas horizontales (78 guiones) en los archivos de ayuda de esa manera.
fuente
Para una tarea tan fácil
abbreviation
debería hacer el truco. Agregue lo siguiente a su.vimrc
y a partir de ahora, cuando escribe
--
seguido de un espacio (mientras está en modo de inserción),--
se convertirá automáticamente a-
80 veces.Al usar la función
repeat
, puede repetir la cadena tantas veces como lo desee.Tenga en cuenta que puede probarlo antes de actualizar
.vimrc
ingresando encommand
modo y luego emitiendo lo siguiente:iab <expr> -- repeat('-', 80)
fuente
Hice esto sin salir del modo INSERTAR usando los pasos a continuación.
-- (insert) VISUAL --
modo)i
-
Ctrl+o
v
y
Ctrl+o
80
p
Esto imprimirá todos los guiones horizontalmente en una sola línea.
fuente