Portál AbcLinuxu, 2. května 2025 07:20
neco-1 nejaky-48 kdeco-001a já budu chtít mít tvar [číslo].[text] no a teď jak to udělat v kate? Nejlepší je na to použít zástupné znaky. Nejprve asi bude nejvhodnější sestavit nějaký regulární výraz na nalezení nějakého takového textu, např:
[^0-9]+-[0-9]+tzn. jakýkoliv znak mimo číslo opakovaný alespoň jednou, pomlčka(mínus), alespoň jedno číslo. Tím najdeme každý vždy jeden řádek, ale potřebujeme jej ještě rozdělit na části pomocí kulatých závorek
([^0-9]+)(-)([0-9]+). teď už můžeme použít jako náhradu zástupné znaky
\1
pro první složku (text) \2
pro pomlčku(mínus) a \3
pro číslo.
Takže, pokdu chceme udělat výše uvedenou náhradu, tak do políčka najít dáte:
([^0-9]+)(-)([0-9]+)a do políčka nahradit:
\3.\1Výsledek bude:
1.neco 48.nejaky 001.kdecoExistuje ještě zástupný znak
\0
, který zastupuje celý nalezený výraz, tzn. vše nalezené bez závorek (kompletní shoda). To se může hodit např. při zdvojení či znásobení výskytů, překopírování na jiné místo atd.
Pokud použijete vnořené závorky budou se zástupné znaky počítat takto:
(\1)(\2(\3)(\4(\5))(\6))tedy nezáleží na stupni vnoření, ale čistě na pořadí,
\0
je samozřejmě celý text.
No a to je vše :o) Pokud používáte kate a využívíte nebo neznáte tuto funkci či vám pomohl právě tento blogpost při řešení toho to problému napište pod článek nějaký komentář, klidně napište i lepší regulární výraz pro můj příklad :o)
Tiskni
Sdílej:
Pěkný, připomíná mi to sed -r... Ale absolutně jsem netušil že tohle Kate umí, bude se hodit
Kate != notepad
No, v KDE 4.3 se mi dokonce pokouší o něco jako doplňování kódu
([^0-9]+)-([0-9]+)
za \2.\1
, ale to je jasný.
Možná nepřekáží, ale nejvíce mě štve, že si musím dávat pozor, kde zrovna jsem. Jinak si totiž místo vyhledávání začnu přepisovat text.
1) Ctrl+F - otevře se vyhledávací dialog, vložím text a najdu co potřebuji.
2) Přepnu se jinam a tam s tím něco udělám.
3) Po určité době se přepnu zpět a chci opět něco vyhledat. Dám Ctrl+F a začnu psát. Jenže ouha, "dialog" měl stále fokus a teď jsem se přepnul zpět do textu. Takže text místo do vyhledávacího políčka píši do textu.
4) Nepochopím, proč se v té zjednodušené verzi dialogu neukládá historie hledaných výrazů.
5) Semtam by se mi hodilo, kdyby se někde ve stavovém řádku zobrazovali informace, kolik znaků je ve výběru.
Až bude trochu času, tak se snad dostanu k tomu, abych prohledal bugzillu, jestlo tam tyhle věci už nejsou.
A proč proboha zrušili informaci o tom, kolikrát bylo nahrazení provedeno? OK, nemuselo to být zobrazováno v samostatném informačním okně jako dříve, ale někde by to být mělo - pro mě je to důležité info.
http://bugs.kde.org/show_bug.cgi?id=188430
A tenhle je taky pěkně vypečený: find/replace doesn't care about Block Selection Mode
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.