vim: ¿Puedo hacer * solo * y realizar una copia?


11

Estoy aprendiendo a que me guste vim, pero una cosa que aún no he aceptado completamente es la situación de copiar y pegar. En un editor de texto muggle Ctrl, Ccopiaría un fragmento de texto y luego editaría / eliminaría y luego pegaría el texto en otro lugar. Sin embargo, en vim no puedo hacer esto porque después de copiar el texto y, la modificación del texto a menudo implica dy xborra mi texto original.

¿Hay alguna forma de hacer dy xno copiar el texto? O de lo contrario, ¿cómo debo usar estas características de vim?

Respuestas:


16

Los 9 yanks anteriores se guardan en registros llamados a 1través 9. Puede recuperar el penúltimo tirón con "1p, el anterior con "2py así sucesivamente. El comando :regmuestra los registros que están disponibles para pegar.

Si desea que un tirón dure más, use un registro de letras .

Para los comandos más oscuros relacionados con el tirón, comience a leer :help "en el manual.


2
Además, el registro 0 contiene el último texto extraído (en lugar de eliminado). Entonces, volviendo a la pregunta original, puede tirar y, continuar editando incluyendo dy x, y pegar el texto arrancado con"0p
Nefrubyr

@Nefrubyr, su comentario anterior es en realidad la respuesta más simple, pero no se menciona en ninguna de las tres respuestas existentes. ¿Quizás deberías agregarlo? (Puedo si no lo haces.)
Comodín

9

Los comandos de los que habla utilizan el denominado registro "sin nombre". Está destinado solo para uso a muy corto plazo. "Voy a tirar de esto desde aquí y ponerlo por allá" tipo de cosas.

Cuando desee aferrarse a algo durante más de unos segundos mientras va y hace otra cosa, debe usar registros con nombre.

Por ejemplo, " a y ytirará de la línea en la que se encuentra el cursor en el aregistro. Nada lo golpeará accidentalmente, a menos que escriba otro comando que involucre el aregistro. Minutos, horas, incluso días después, puede escribir " a ppara soltar esa copia arrancada de la línea del aregistro debajo del que está el cursor.

(Para que esto funcione realmente bien, debe tener una línea como set viminfo='50,\"1000en su ~/.vimrcarchivo, para decirle que recuerde cosas como registrar contenidos en las sesiones de Vim. ¡Luego puede irse de vacaciones entre tirar y poner!)

Hay 26 registros con nombre (az). Si los da en mayúsculas en lugar de como se muestra arriba, agrega los contenidos del registro actual en lugar de reemplazarlos. Por lo tanto, puede construir algo realmente complejo, por ejemplo, registrar huna pieza a la vez, y luego dejarlo todo de una vez con " h p.

Tenga en cuenta que el nombre del registro es opcional. Esto implica que puede haber muchos comandos que ya conoce y usa donde podría estar usando registros con nombre. Digamos :help registersen Vim para tener una idea de las posibilidades.

Además, consigue una taza Vi .


1

Si necesita eliminar texto con d sin alterar su registro de extracción (por ejemplo, ya ha introducido texto que no está listo para pegar antes de eliminar algún otro texto, por ejemplo), puede utilizar el registro de agujero negro _ .

Si lo hace, "_ddpor ejemplo, la línea actual se eliminará inmediatamente y se olvidará.

En realidad, no uso este registro muy a menudo. No requiere menos pulsaciones de teclas que guardar en un registro de propósito general (cualquier registro de letras) y si guarda en un registro de propósito general, al menos, las líneas que ha eliminado aún están disponibles hasta que sobrescriba el registro, si surge la necesidad.

Si se tiende a olvidar de utilizar otro registro al borrar, puede definir una macro envoltorio para dd, por ejemplo, así: :noremap dd "add.


0

Como se señaló en los comentarios a la respuesta aceptada (actual), la forma canónica de hacerlo es usar el registro cero ( "0). El registro cero siempre contiene el último yank, y no se sobrescribirá con dy x, por "0plo tanto, siempre coloca lo que haya quitado, independientemente de lo que se haya editado mientras tanto.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.