A menudo me encuentro escribiendo comandos como gg"+yGo ggdGy 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`my nunca pensé en esto. Gracias, esto va bien en el .vimrc.C-odos veces para regresar.Otra solución es usar un complemento llamado vim-textobj-Entire . Por defecto, este complemento proporciona el objeto de texto
aepara todo el búfer,iepara 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, porquefnormalmente se usa para pasar al siguiente personaje buscado en la línea. Por ejemplo,fiirá al siguienteien 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
yYydDpara 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