# Täiustatud redigeerimisvahendid

## Kommentaari lisamine/eemaldamine

Käsud 'Lisa kommentaar' ja 'Eemalda kommentaar', mida saab kasutada menüüst Töövahendid, võimaldavad lisada valitud tekstiosale või kui midagi ei ole valitud, siis parajasti aktiivsele reale kommentaarimärgid või need sealt eemaldada. Seda muidugi juhul, kui parajasti redigeeritava teksti vorming kommentaare üldse kasutada lubab.

Reeglid, mil moel kommentaar välja näeb, on määratud süntaksi definitsioonis, nii et kui süntaksi esiletõstu ei kasutata, ei ole võimalik ka kommentaarimärke lisada või eemaldada.

Mõned vormingud defineerivad ühe rea kommentaarimärgid, mõned lubavad kommenteerida mitut rida korraga ja mõned mõlemat. Kui mitme rea kommentaarimärke ei ole saadaval, siis ei ole võimalik kommenteerida valikut, mille viimane rida ei ole valitud tervikuna.

Kui saadaval on ühe rea kommetaarimärgid, on võimaluse korral mõttekas kommenteerida üksikuid ridasid - nii saab ära hoida näiteks "kommentaari kommentaari sees".

Kommentaarimärkide eemaldamisel ei tohi olla valitud kommenteerimata teksti. Valikult mitmerealise kommentaarimärgistuse eemaldamisel eiratakse iga tühikut väljaspool kommentaarimärgistust.

Kommentaarimärkide lisamiseks kasuta menüükäsku Töövahendid Kommentaar või vastavat kiirklahvikombinatsiooni, mis vaikimisi on &Ctrl;#.

Kommentaarimärkide eemaldamiseks kasuta menüükäsku Tööriistad Kommentaari eemaldamine või vastavat kiirklahvikombinatsiooni, mis vaikimisi on &Ctrl;&Shift;#.

## Redigeerimiskäsk

See tööriist, mille kasutamiseks tuleb valida Tööriistad Redigeerimiskäsk, võimaldab kasutada teksti redigeerimiseks väikest valikut vi/vim-laadseid käske. See ei ole mõeldud sugugi vaid "vanadele kaladele", igaüks võib proovida, kui võimsa ja tubli abilisega tegemist on!

Praegu on võimalik kasutada järgmisi käske:

`time`

- Selle väljundiks on arvuti hetkeaeg kujul TT:MM:SS

  Selle kasutamiseks käivita redigeerimiskäsu dialoog ja kirjuta sisendikasti sõna `time`

`char`

- See võimaldab sisestada tähemärke nende numbrilise koodi kaudu kümnend-, kaheksandik- või kueteistkümnendvormis. Selle kasutamiseks käivita redigeerimiskäsu dialoog, kirjuta sisendikasti `char: [number]` ja vajuta nuppu Olgu.

  ### käsu `char` näited

  Sisend: `char:234`

  Väljund: `ê`

  Sisend: `char:0x1234`

  Väljund: `ê`

  Sisend: `char:1232`

  Väljund: `ê`

`s///[ig]` `%s///[ig]`

- See käsk käivitab sedi-sarnase otsi/asenda operatsiooni aktiivsel real või kogu failis (`%s///`).

  Nii otsitakse tekst läbi, et leida sobivused otsingumustriga, st esimese ja teise kaldkriipsu vahele jääva regulaaravaldisega. Kui sobivus leitakse, asendatakse sobiv tekstiosa avaldisega stringi keskmise ja viimase kaldkriipsu vahel. Sulud otsingumustris tekitavad tagasiviidad, see tähendab, et käsk peab meeles, milline osa sobivusest vastas sulgudes olnule; neid stringe saab otsingumustris uuesti kasutada, viidates neile esimese sulukombinatsiooni puhul kui `\1`, teise puhul kui `\2` jne.

  Otsimaks märki `(` või `)`, tuleb need päästa längkriipsu kasutades: `\(\)`

  Kui sisestada väljendi lõppu `i`, muutub sobivuste otsimine tõstutundetuks.

  ### Teksti asendamine aktiivses reas

  Armas arvuti katkestas just äsja töö ja teatas, et lähtefaili real 3902 mainitud klass `myClass` ei ole defineeritud.

  "Neetud!" mõtled sina: aga muidugi peab see olema `MyClass`. Lähed siis reale 3092 ja selle asemel, et püüda tekstist sõnakest üles leida, käivitad redigeerimiskäsu dialoogi, sisestad seal `s/myclass/MyClass`, vajutad nupule OK, salvestad faili ja kompileerid selle – edukalt ja ilma vigadeta.

  ### Teksti asendamine kogu failis

  Kujuta ette, et sul on fail, kus esineb mitu korda preili Maasikas, ja siis tuleb keegi, kes ütleb, et too neiu äsja abiellus ja kannab nüüd nime proua Vaarikas. On päris mõistetav, et sind tabab võitmatu iha kirjutada kõikjal tekstis preili Maasikas asemele proua Vaarikas.

  Selleks käivita redigeerimiskäsu dialoog, kirjuta sisendikasti: `%s/preili Maasikas/proua Vaarikas/`, vajuta klahvi Enter - ja asendused ongi tehtud.

  ### Nõudlikum näide

  See näide selgitab tagasiviitade ja sõnaklasside kasutamist (kui sa ei tea, mis need on, vaata selgitusi edaspidi viidatud dokumentidest).

  Oletame, et sul on selline rida:

      void MyClass::DoStringOps( String      &foo, String &bar String *p, int  &a, int &b )

  Äkki taipad, et see pole mitte kõige kaunim kood, ja otsustad kasutada võtit `const` kõigi aadressiargumentide puhul (need on need, mille puhul argumendi ees seisab operaator &). Ühtlasi tahad ühtlustada tühikute kasutamist, nii et iga sõna vahel oleks vaid üks tühik.

  Käivita redigeerimiskäsu dialoog ja sisesta sinna: `s/\s+(\w+)\s+(&)/ const \1 \2/g` ning vajuta nuppu OK. Avaldise lõpus paiknev `g` annab regulaaravaldisele korralduse rekompileerida iga sobivus tagasiviitade säilitamiseks.

  Väljund: `void MyClass::DoStringOps( const String &foo, const String &bar String *p, const int &a, const int &b )`

  Ja ongi valmis! Mis siis tegelikult juhtus? Juhtus see, et me otsisime tühikut (`\s+`), millele järgneks üks või enam tähte (`\w+`), millele omakorda järgneks tühik (`\s+`) ja sellele omakorda ja-märk. Otsingu käigus salvestasime tähekombinatsioonid ja ja-märgid edasiseks kasutamiseks asendusoperatsioonis. Seejärel asendasime sobinud kohad tühikuga, millele järgneb const, millele järgneb tühik, millele järgneb meelde jäetud tähekombinatsioon (`\1`, millele järgneb tühik, millele järgneb meelde jäetud ja-märk (`\2`). Lihtne, eks ju?

  Pane tähele, et mõnel juhul oli täheühendiks String, mõnel juhul aga int, nii et märgiklassi `\w` ja kvantori `+` kasutamine oli väga mõistlik tegu.

See on erakordselt võimas võimalus ja kuigi ettevõetud samme saab tühistada, andes nii mitu korda, kui parajasti vaja on, menüüst käsu Võta tagasi, on soovitatav selle käsuga natuke harjutada, enne kui hakata seda kasutama päris-redigeerimisel - seda muidugi juhul, kui sa ei ole juba varasemast tuttav sedi või perli regulaaravaldistega.