Portál AbcLinuxu, 25. května 2024 16:56


Dotaz: VIM a nahrazování textu

16.6.2015 15:56 mhepp | skóre: 22
VIM a nahrazování textu
Přečteno: 226×
Odpovědět | Admin
Ahoj,

mám text, ve kterém bych potřeboval určitá (náhodná, automaticky nepostižitelná slova) upravit. Konkrétně se mi jedná o obalení slova LaTeX značkou.

Takže například mám text:
Nanynka šla do zelí,
natrhala lupení.
a chtěl bych dosáhnout třeba tohoto:
Nanynka {\bf{šla}} do zelí,
natrhala {\bf{lupení}}.
Opakuji, slova jsou ručně vybraná, druhé slovo na řádku je náhoda.

Myslel jsem, že když vyberu pomocí visual určitý text (třeba slovo „šla“) a potom pomocí :
:'<,'>s/\(\%V\)/{\\bf{\1}}
udělá co potřebuji. Ale houby. Různé zkoušené kombinace regulárního výrazu buďto nefungují vůbec, nebo sežerou celý řádek. Potřebuji takhle udělat v textu značky s minimem ruční práce, nejlépe tak, že vyberu určitý text a dám zopakovat jednou zadaný příkaz. Můžete prosím poradit?

Řešení dotazu:


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

Odpovědi

Řešení 1× (mhepp (tazatel))
16.6.2015 16:26 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: VIM a nahrazování textu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Udělej si makro, které nejprve přes "x" smaže vyznačené slovo, pak vloží "{\\bf{", pak příkaz "p" a nakonec string "}}"
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
16.6.2015 16:28 TTTTTTTT
Rozbalit Rozbalit vše Re: VIM a nahrazování textu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevím, jak do patternu dostat vybraný text. Vytvořil bych si makro nebo mapování a pak volal to. Makro dokáže zaznamenat akce a pak je znovu přehrát, nahrává se pomocí qX a spouští @X (X je libovolné písmeno, používám q, aby se mi do dobře mačkalo). Alternativně namapovat si to:

:vmap bf y:s/<C-R>"/{\\bf{\0}}/<cr>

Patrně bych byl ještě o trochu línější a přidal tam i označení slova pod kurzorem. Fajnšmejkr by patrně použil jiný registr než defaultní, aby se mu nepřepisoval.

16.6.2015 20:30 RM
Rozbalit Rozbalit vše Re: VIM a nahrazování textu
Pro jedno slovo v normal módu:

:nnoremap bf Bi{\\bf{^[Ea}}^[l

(^[ jest vrbatim znak CTRL-V ESC)
16.6.2015 16:51 mhepp | skóre: 22
Rozbalit Rozbalit vše Re: VIM a nahrazování textu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kurňa pánové, makro mne nenapadlo... Pořád jsem se motal kolem substituce...

Díky za tip.

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.