Mam plik z tych linii:Duplikat każda linia w VI
aa
bb
cc
dd
chcę przekonwertować to do:
aa
aa
bb
bb
cc
cc
dd
dd
Jest to możliwe w VI?
Mam plik z tych linii:Duplikat każda linia w VI
aa
bb
cc
dd
chcę przekonwertować to do:
aa
aa
bb
bb
cc
cc
dd
dd
Jest to możliwe w VI?
Spróbuj proste:
:g/^/norm yyp
jeszcze jeden (krótsza):
:%s/.*/&\r&
inny:
:%!sed p
Dzięki. Zadziałało. – arunmoezhi
Dzięki za opcję, ponieważ chciałem zrobić to dla wizualnej selekcji i to zadziałało dla mnie. – mmarchin
Użyj globalnego polecenia g
do działania na każdy wiersz w pliku:
:g/^/norm yyp
Polecenie g
będzie działać na wszystkich liniach pasujących do wzorca. ^
to wzór, który będzie pasował do dowolnej linii. norm
wykonuje polecenie yyp
, które zrywa bieżący wiersz i wkleja go. :g/^/norm Yp
będzie również działać.
Więcej informacji na temat polecenia można uzyskać pod adresem :help global
. Zobacz także tę stronę vim wiki pod adresem g
.
Dzięki za wyjaśnienie – arunmoezhi
Lub po prostu ':% norm Yp' – Conner
@Conner: To nie działa, ponieważ% iteruje w oryginalnym zakresie, ale polecenie dodaje linie. Potrzebujesz tutaj "logika pierwszego, potem iteruj" ': global'. –
Lubię g/^/t.
Komenda g
(dla global
) będzie szukał wszelkich liniach pasujących do wzorca.
Podany wzór to ^
, który będzie pasował do wszystkich linii. t
skopiuje i wklei, a na koniec dot
mówi, że należy wkleić poniżej.
Czy wygrywam dla zwięzłości?
+1 Zbyt wiele sposobów. To chyba najkrótsza. – kev
Dzięki za odpowiedź. Wzmocniłem to – arunmoezhi
to jest to, z czego zwykle używam – sehe
Prawdopodobnie interesujące dla wielu osób: http://stackoverflow.com/q/29368158/812102 –
Użyj atomowego kolesia !! :). Możesz to zrobić za pomocą Cmd + Shift + D (lub Ctrl + Shift + D) –