Pokročilé nástroje pre editovanie
Príkaz pre editovanie
Tento nástroj dostupný z menu NástrojePríkaz pre editovanie poskytuje prístup k malej skupine príkazov v štýle vi/vim. Je určený hlavne pre skúsených používatelov, ale nebojte sa využiť jeho možnosti!
Momentálne sú dostupné tieto príkazy:
čas Tento príkaz vygeneruje aktuálny čas podla počítača vo formáte HH:MM:SS
Spustíte ho pomocou dialógu pre editovací príkaz a zadať do vstupného poľa slovo time znak Tento príkaz umožňuje vložiť rôzne znaky pomocou ich číselnej reprezentácie v desiatkovej, osmičkovej alebo šesťnástkovej sústave. Použijete ho pomocou dialógu pre editovací príkaz a zadaním char:[číslo] do textového poľa. Potom stlačte OK. príklady char Vstup: char:234 Výstup: ê Vstup: char:0x1234 Výstup: ê Vstup: char:1232 Výstup: ê s///[ig] %s///[ig] Tento príkaz robí operáciu hladania/nahradenia podobnú sed na aktuálnom riadku alebo na celom súbore (%s///). V krátkosti, text sa prehladá podla vzorky hladania, regulárneho výrazu medzi prvým a druhým lomítkom a ak sa nejaký text nájde, odpovedajúca časť sa nahratí výrazom medzi stredným a koncom reťazca. Zátvorky vo vzorky vytvárajú spätné referencie, čiže príkaz si zapamätá, ktorá časť odpovedá zátvorkám. Tieto reťazce je potom možné znovu použiť vo vzorke pre nahradenie použitím \1 pre prvý pár zátvoriek, \2 pre druhý atd. Pre hladanie symbolu ( alebo ) ich musíte označiť, (escape) pomocou spätného lomítka: \(\) Ak na koniec výrazu pridáte i, hladanie nebude rozlišovať velkosť písmen. Náhrada textu na aktuálnom riadku Váš prekladač práve skončil a oznámil vám, že mojaTrieda na riadku 3902 nie je vo vašom zdrojovom kóde definovaná. Poviete si: "Ach jo!". Samozrejme, že to je MojaTrieda. Prejdete na riadok 3902 a namiesto hľadania slova v texte, spustíte dialóg pre editovací príkaz a zadáte s/mojatrieda/MojaTrieda/i a stlačíte OK. Uložíte súbor a spustíte kompilátor – a preklad je bez chýb. Náhrada textu v celom súbore Predstavte si, že máte súbor, ktorý hovorí niekoľkokrát o Miss Jensen
. V tom ale niekto príde a oznámi vám, že sa práve vydala za pána Jonesa
. Takže musíte každné Miss Jensen
prepísať na Ms Jones
. Spustíte ho pomocou dialógu pre editovací príkaz. Potom zadajte %s/Miss Jensen/Ms Jones/ a stlačte enter. Zložitejší príklad Tento príklad používa spätné referencie spolu so triedou slov (ak neviete, čo to je, prečítajte si súvisiacu dokumentáciu, ktorá je zmienená dole). Predpokladajme takýto riadok: void MyClass::DoStringOps( String &foo, String &bar String *p, int &a, int &b ) Teraz si uvedomíte, že to nie je pekný kód a rozhodnete sa použiť kľúčové slovo const rpe všetky adresy
argumentov, ktoré sú označené operátorom &. Chceli by ste aj vynechať zbytočné medzery tak, aby medzi každým slovom bola iba jedna medzera. Spustíte dialóg pre editovací príkaz, zadáte s/\s+(\w+)\s+(&)/ const \1 \2/g a stlačíte OK, g na konci výrazu znamená, že sa má regulárny výraz po každom nájdení textu znovu preložiť, aby sa spätná referencia uložila. Výstup: void MyClass::DoStringOps( const String &foo, const String &bar String *p, const int &a, const int &b ) Hotovo! A čo sa vlastne stalo? Hľadali sme medzery (\s+), za ktorými je jeden alebo viac písmen (\w+), za ktorými sú zase nejaké medzery (\s+) ukončené &. Pritom sme uložili písmená a operátor & pre použitie v operácii nahradenia. Potom sme vložili nájdený text s jednou medzerou pred, za ňou sme dali const zase s jednou medzerou a potom nájdené písmená, medzera a náš uložený ampersand (\2). V niektorých prípadoch boli písmená String
, inokedy int
, takže použitím triedy písmen \w a operátora + sa nám naozaj hodilo.
Toto je velmi silný nástroj. Aj ked je možné túto operáciu vrátiť použitím Vrátiť späť odpovedajúcim počtom krát, doporučujem, aby ste si ho najprv trochu natrénovali pre skutočné použitie v prípade, že nemáte moc skústeností s aplikáciou sed alebo regulárnymi výrazmi v jazyku perl.