Dada una serie de líneas que se parecen a esto:
2001 "Some Kind of Title," Author's Name, Publication Name, 1 Mar.
2002 "Some Kind of Title," Author's Name, Publication Name, 12 Oct.
2003 "Some Kind of Title," Author's Name, Publication Name, 8 Apr.
2004 "Some Kind of Title," Author's Name, Publication Name, 3 Jun.
¿Hay alguna manera de que pueda tomar esos primeros cuatro caracteres (el año) y copiarlos al final de la línea, para que se vea así:
2001 "Some Kind of Title," Author's Name, Publication Name, 1 Mar. 2001
2002 "Some Kind of Title," Author's Name, Publication Name, 12 Oct. 2002
2003 "Some Kind of Title," Author's Name, Publication Name, 8 Apr. 2003
2004 "Some Kind of Title," Author's Name, Publication Name, 3 Jun. 2004

:%g/^\d\{4}\d\@!/s/^\(\d\{4}\).*\zs/ \1/.Respuestas:
es una forma de hacerlo
\vopción mágica, para evitar tener que escapar de la agrupación()^inicio de línea\d{4}coincidir exactamente con cuatro dígitos.*resto de línea\1\2tiene el patrón combinado dentro()editar: @Jair Lopez menciona en los comentarios, la expresión regular se puede mejorar aún más:
o el equivalente
&y\0contiene todo el patrón combinadoPara leer más, vimregex y regex FAQ
fuente
:%s/\v^(\d{4}).*/& \1/Sería un comando más corto.Y una solución con una macro:
Lo que significa:
Luego puede reproducir la macro tantas veces como tenga una línea
3@a.Editar Como @evilsoup lo mencionó en los comentarios, una forma más efectiva de ejecutar la macro en todas las líneas del búfer es usar:
Por supuesto, puede reemplazarlo
%por un rango que describa las líneas a modificar.fuente
:%normal @qAquí está la forma en que lo haría:
Explicación:
fuente
Si tiene acceso a comandos UNIX estándar, puede usar
AWK:fuente
:help filteres una función incorporada de Vim y considerando cuán bien esa característica le permite a Vim encajar en el paradigma de UNIX, diría que es muy vi / vim, en realidad.Creo que los mecanismos existentes para hacer esto son mejores, pero también es posible hacerlo usando el modo de bloque visual .
Copia las fechas:
Rellene el final de la primera línea:
Pegar:
fuente
4llugar dellllDesde una línea de comandos de Unix (o Windows si tiene instaladas herramientas de línea de comandos de Unix)
fuente