A menudo me encuentro escribiendo comandos como gg"+yG
o ggdG
y me gustaría una forma más eficiente de hacerlo sin tener que mover el cursor dos veces. ¿Hay algún comando que pueda usar, por ejemplo, y[movement]
para copiar todo el búfer sin mover el cursor?
cut-copy-paste
cursor-motions
custom-text-object
Aleatorio832
fuente
fuente
mmgg"+yG`m
y nunca pensé en esto. Gracias, esto va bien en el .vimrc.C-o
dos veces para regresar.Otra solución es usar un complemento llamado vim-textobj-Entire . Por defecto, este complemento proporciona el objeto de texto
ae
para todo el búfer,ie
para todo el búfer, excepto las líneas vacías iniciales y finales.Este complemento depende de vim-textobj-user del mismo autor, lo que permite a los usuarios definir cualquier objeto de texto cómodamente. Hay muchos complementos que hacen un buen uso de esto.
fuente
No hay ningún objeto de texto para todo el archivo de forma predeterminada, pero es posible crearlos usando
omap
. En este caso, se vería así:Aquí hay un desglose de cómo funciona:
Notas:
Ctrluse puede usar en el modo de línea de comando para eliminar todo a la izquierda de la posición del cursor. La razón por la que se hace esto es porque si ingresa la línea de comando directamente desde el modo visual, se insertará automáticamente
'<,'>
en la línea de comando, y eso no es lo que queremos. También te sugiero que uses algo diferentef
, porquef
normalmente se usa para pasar al siguiente personaje buscado en la línea. Por ejemplo,fi
irá al siguientei
en la línea actual.Temas de ayuda relevantes:
fuente
``
al final devolverá el cursor a la ubicación anterior.Aquí hay algunas asignaciones rápidas y sucias para realizar la tarea:
Ahora puede usar
yY
ydD
para tirar / eliminar respectivamente. No es tan bueno como usar un objeto de texto completo, pero a veces las soluciones más simples son las mejores.Para más ayuda ver:
fuente