Considerar:
apple
pear
Coloque el cursor en la primera línea y escriba Yp
, produciendo:
apple
apple
pear
Coloque el cursor en la pear
línea y escriba .
para repetir el último comando. Esto repite solo el p
(en lugar de la combinación Yp
), produciendo:
apple
apple
pear
apple
Me gustaría una forma de decir .
que repita los últimos N comandos. Algo así como 2.
repetir la combinación Yp
para producir:
apple
apple
pear
pear
Ofc que no funcionará, se repite p
dos veces. Pero la idea sería "repetir la secuencia de los últimos 2 comandos".
Sé que puedo q
grabar secuencias de comandos y repetirlas con ellas @@
, pero esta solución no es ideal, ya que requiere que hayas estado planeando todo el tiempo, mientras que en la práctica a menudo no te das cuenta de que necesitas repetir algo hasta después. Lo has hecho.
¿Hay alguna forma de lograr lo que quiero?
Premio de consolación: si lo anterior no es posible, ¿hay alguna manera de repetir la última reproducción de macro? Por ejemplo, si escribí @@
para reproducir mi última macro, me gustaría que la siguiente .
sea equivalente a escribir @@
nuevamente, lo cual no es así (por ejemplo, si el resultado @@
depende de la línea en la que se encuentre)
nno <silent> @@ @@:sil! call repeat#set('@@', v:count1)<CR>
pero para que funcione, debe instalar este complemento: github.com/tpope/vim-repeatRespuestas:
Vim solo almacena el último comando ejecutado, y solo eso se repite
.
; En mi opinión, cualquier otra cosa sería difícil de manejar.Si siente la necesidad de repetir el
Yp
combo como una entidad única, debe convertirlo en un solo comando. El complemento repeat.vim de Tim Pope permite hacerlo fácilmente para las asignaciones personalizadas. Por supuesto, si elige una [secuencia] de tecla corta para la asignación, puede.
volver a escribirla rápidamente (en lugar de ) e incluso evitar la integración de repeat.vim.Por cierto, mi complemento LineJuggler proporciona una
]d
asignación para duplicar la línea actual, y admite la repetición a través de repeat.vim.fuente
En
Yp
, el único "cambio" para repetir esp
. La única forma en que sé alterar el comportamiento de.
en modo normal es agregary
a lacpoptions
opción:que le permite repetir el último tirón y el último cambio.
Pero eso no cambia nada a su problema porque
Yp
todavía hay dos comandos: un tirón seguido de un cambio.No creo que pueda obtener lo que quiere sin algunas secuencias de comandos no triviales. ¿Le echó un vistazo a la sección de scripts de vim.org ?
fuente
Con frecuencia uso
map
para lograr este efecto. Por ejemplo:Luego, presionar
F12
repetidamente se ejecutará,YpYpYp
etc. Si desea pasar a la siguiente línea después de cada pegado, asigne una tecla aYp+
.fuente
El notable artilugio que es el complemento RepeatLast (por nuestro propio @joeytwiddle ) proporciona esta funcionalidad, a través del método impuro de grabar todo lo que haces como macro.
Proporciona una serie de nuevas asignaciones, pero, si estoy leyendo la documentación correctamente, para realizar las ediciones que describa, podría usar la secuencia de comandos (suponiendo que esté usando el valor predeterminado
<leader>
de\
):Yp
Yank y poner / pegar la líneaapple
,j
Mueve hacia abajo una línea para que el cursor esté ahora en lapear
línea,\D
olvida elj
comando2\.
Repita los dos comandosY
yp
fuente