Portál AbcLinuxu, 25. května 2024 04:36


Dotaz: Vim nahrazování znaků

15.6.2023 15:39 iq8
Vim nahrazování znaků
Přečteno: 640×
Odpovědět | Admin

Dobrý den

Snažím se nahradit pomocí vim znaky. Nevím ale jestli je možné do nahrazení vložit znak konce řádku. Mám např. takový text:

aaa[pokus]bbbbb[hokus]

Výsledný tvar by měl být:

aaa
[pokus]
bbbbb
[hokus]

Myslel jsem, že použiju nahrazení :%s/[/^[/g a potom :%s/]/^]/g

Jenže to nepracuje tak jak by jsem si představoval. Nevíte prosím někdo jak do nahrazení vložit ten konec řádku?

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

wamba avatar 15.6.2023 16:58 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Vim nahrazování znaků
Odpovědět | | Sbalit | Link | Blokovat | Admin
\r je nový řádek ve Vim tedy třeba
:%s/\ze\[\|\]\zs/\r/g
This would have been so hard to fix when you don't know that there is in fact an easy fix.
15.6.2023 17:16 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Vim nahrazování znaků
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus to takhle :%s/]/]\r/g pak skoč na začátek :1 a pak takhle :%s/\[/\r\[/g

Pamatuj na to, že hranatá závorka má svůj význam. Zadáš-li [a-z] tak to znamená libovolný alfabetický znak od a do z. Proto je třeba „zneutralizovat” tu levou hranatou závorku zpětným lomítkem. Jo a kdybys to chtěl nahradit za windowsí konec řádku, je třeba přidat ještě \n
17.6.2023 20:31 iq8
Rozbalit Rozbalit vše Re: Vim nahrazování znaků
Dobrý den Děkuju. Pomohlo.
22.6.2023 17:42 kvr
Rozbalit Rozbalit vše Re: Vim nahrazování znaků
Odpovědět | | Sbalit | Link | Blokovat | Admin
Alternativně trochu pokročilým regex:

:s/\(\[\@=\|\]\@<=.\@=\)/\r/g

@= a @<= jsou lookahead a lookbehind, které vlastně nic nematchují, ale pouze kontrolují, zda se daný výraz nachází za nebo před aktuálním výrazem (v tomto případě prázdným). V druhé části je ta "." pouze kvůli eliminaci match na konci řádku, teoreticky by se měla přidat i na začátek jako lookbehind, aby se eliminoval další nový řádek na začátku, je-li tam "[" .

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.