¿Por qué p pegó una línea copiada después de la línea actual, en lugar de después de la palabra actual?

12

Supongamos que tengo las siguientes cuatro líneas:

line1
line2
line3
line4

Ahora, si voy line1y hago una yycopia de la línea y luego comienzo line3y pego usando 'p', obtendría

...
line3
line1
line4
....

¿Por qué se pegó line1después line3en una nueva línea?

Sin embargo, mi inicial fue porque el carácter de nueva línea $ se adjuntó a la línea 3 y que cuando presioné pvim se consideró line3$como una palabra, por lo que se pegó después line3$. Sin embargo, parece que entendí mal. Porque si hago esto line3 $y luego hago un pal comienzo de la línea, obtengo el mismo resultado.

¿Por qué pcrear una nueva línea y pegar en una nueva línea después line3?

James Franco
fuente

Respuestas:

21

Cuando haya eliminado el uso de la línea dd, que ha realizado un linewise borrar.

El pcomando pega después de la posición del cursor. Dado que el registro predeterminado se rellenó con contenido en línea, eso significa que se pegará después de la línea en la que se encuentra el cursor.

Si, en cambio, hubiera eliminado el contenido de la línea de una manera con caracteres (por ejemplo, 0D), entonces el registro habría sido con caracteres y, por lo tanto, pegado después del carácter en el que estaba el cursor.

En general, el comportamiento debe seguir lo que se espera de una eliminación / extracción y pegado. Sin embargo, es posible modificar la -wiseness de un registro usando getreg () / setreg () .

Pero ten cuidado al hacer eso. Dado su ejemplo inicial, simplemente cambiar el registro para que tenga carácter no elimina la nueva línea que fue parte de la eliminación. Simplemente cambia la forma en que ocurre la pasta.


Para obtener recomendaciones sobre el escenario específico de eliminar una línea completa pero pegarla en forma de caracteres, consulte esta publicación .

jamessan
fuente