Considerar:
apple
pear
Coloque el cursor en la primera línea y escriba Yp, produciendo:
apple
apple
pear
Coloque el cursor en la pearlí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 Yppara producir:
apple
apple
pear
pear
Ofc que no funcionará, se repite pdos veces. Pero la idea sería "repetir la secuencia de los últimos 2 comandos".
Sé que puedo qgrabar 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
Ypcombo 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
]dasignació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 agregarya lacpoptionsopción:que le permite repetir el último tirón y el último cambio.
Pero eso no cambia nada a su problema porque
Yptodaví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
mappara lograr este efecto. Por ejemplo:Luego, presionar
F12repetidamente se ejecutará,YpYpYpetc. 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\):YpYank y poner / pegar la líneaapple,jMueve hacia abajo una línea para que el cursor esté ahora en lapearlínea,\Dolvida eljcomando2\.Repita los dos comandosYypfuente