Biorąc pod uwagę serię linii, które wyglądają podobnie do tego:
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.
Czy istnieje sposób, w jaki mógłbym złapać te cztery pierwsze znaki (rok) i skopiować je na koniec wiersza, aby wyglądało to tak:
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
mieszać
źródło
źródło
:%g/^\d\{4}\d\@!/s/^\(\d\{4}\).*\zs/ \1/
.Odpowiedzi:
jest jednym ze sposobów, aby to zrobić
\v
magiczna opcja, aby uniknąć konieczności ucieczki przed grupowaniem()
^
początek linii\d{4}
dopasuj dokładnie cztery cyfry.*
reszta linii\1
\2
ma pasujący wzór()
edit: @Jair Lopez wspomina w komentarzach, wyrażenie regularne można ulepszyć:
lub odpowiednik
&
i\0
zawiera cały dopasowany wzórDo dalszego czytania, vimregex i regex FAQ
źródło
:%s/\v^(\d{4}).*/& \1/
byłoby krótszym poleceniem.I rozwiązanie z makrem:
Co znaczy:
Następnie możesz odtworzyć makro tyle razy, ile masz linii
3@a
.Edytuj Ponieważ @evilsoup wspomniał o tym w komentarzach, bardziej skutecznym sposobem wykonania makra na wszystkich liniach bufora jest użycie:
Oczywiście można zastąpić
%
przez zakresu opisujące linie zmodyfikować.źródło
:%normal @q
Oto jak bym to zrobił:
Wyjaśnienie:
źródło
Jeśli masz dostęp do standardowych poleceń UNIX, możesz użyć
AWK
:źródło
:help filter
jest wbudowaną funkcją Vima i biorąc pod uwagę, jak dobrze ta funkcja pozwala Vimowi dopasować się do paradygmatu UNIX, powiedziałbym, że w rzeczywistości jest to bardzo vi / vim.Myślę, że istniejące mechanizmy do tego celu są lepsze, ale można to również zrobić w trybie blokowania wizualnego .
Skopiuj daty:
Wpisz koniec pierwszej linii:
Pasta:
źródło
4l
zamiastllll
Z wiersza polecenia unix (lub systemu Windows, jeśli masz zainstalowane narzędzia wiersza polecenia unix)
źródło