Étant donné une série de lignes qui ressemblent à ceci:
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.
Existe-t-il un moyen de saisir ces quatre premiers caractères (l'année) et de les copier à la fin de la ligne, pour que cela ressemble à ceci:
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
cut-copy-paste
replace
repeated-commands
mélanger
la source
la source
:%g/^\d\{4}\d\@!/s/^\(\d\{4}\).*\zs/ \1/
.Réponses:
est une façon de le faire
\v
option magique, pour éviter d'avoir à échapper au groupement()
^
début de ligne\d{4}
correspondre exactement à quatre chiffres.*
reste de ligne\1
\2
a le modèle correspondant dans()
edit: @Jair Lopez mentionne dans les commentaires, l'expression régulière peut être encore améliorée:
ou l'équivalent
&
et\0
contient tout le motif assortiPour plus de lecture, FAQ vimregex et regex
la source
:%s/\v^(\d{4}).*/& \1/
serait une commande plus courte.Et une solution avec une macro:
Ce qui signifie:
Vous pouvez ensuite rejouer la macro autant de fois que vous le souhaitez
3@a
.Modifier Comme @evilsoup l'a mentionné dans les commentaires, un moyen plus efficace d'exécuter la macro sur toutes les lignes du tampon est d'utiliser:
Vous pouvez bien sûr le remplacer
%
par une plage décrivant les lignes à modifier.la source
:%normal @q
Voici la façon dont je le ferais:
Explication:
la source
Si vous avez accès aux commandes UNIX standard, vous pouvez utiliser
AWK
:la source
:help filter
c'est une fonctionnalité Vim intégrée et considérant à quel point cette fonctionnalité permet à Vim de s'intégrer dans le paradigme UNIX, je dirais que c'est très vi / vim, en fait.Je pense que les mécanismes existants pour ce faire sont meilleurs, mais il est également possible de le faire en utilisant le mode bloc visuel .
Copiez les dates:
Remplissez la fin de la première ligne:
Pâte:
la source
4l
place dellll
Depuis une ligne de commande Unix (ou Windows si vous avez installé des outils de ligne de commande Unix)
la source