&Anders.Lund; &Anders.Lund.mail;
&Dominik.Haumann; &Dominik.Haumann.mail;
&Tom.Albers;&Natalie.Koning;&Freek.de.Kruijf;

# Geavanceerde hulpmiddelen voor bewerking

## Commentaar toevoegen/verwijderen

Met de commando's Commentaar en Commentaar verwijderen in het menu Hulpmiddelen kunt u commentaarmarkering aan geselecteerde regels toevoegen of eruit verwijderen, mits commentaren door het bestandsformaat waar u aan werkt worden ondersteund. Als er geen tekst geselecteerd is wordt de huidige regel gebruikt.

De regels over de wijze waarop commentaar ingevoegd wordt, zijn vastgelegd in de syntaxisdefinities. Als syntaxisaccentuering niet gedefinieerd is, zal commentaar invoegen/verwijderen niet mogelijk zijn.

Sommige syntaxisdefinities definiëren commentaarmarkeringen per regel, sommige definiëren markeringen die over meedere regels kunnen lopen, en sommige definiëren beide. Indien er per regel gemarkeerd wordt, is het niet mogelijk om een selectie te markeren waarvan de laatste regel niet volledig is geselecteerd.

Wanneer commentaarmarkering per regel mogelijk is, dan zal dit de voorkeur hebben. Het voorkomt namelijk problemen met genest commentaar (commentaar binnen commentaar).

Wanneer commentaar verwijderd wordt, mogen er geen regels geselecteerd zijn die geen commentaar bevatten. Wanneer er commentaar dat over meerdere regels loopt verwijderd wordt, zullen eventuele spaties aan het begin en einde genegeerd worden.

Om een gedeelte te markeren als commentaar kiest u het menu Hulpmiddelen Commentaar. U kunt ook de sneltoets gebruiken, de standaard is &Ctrl;D.

Om commentaar te verwijderen kiest u het menu Hulpmiddelen Commentaar verwijderen. U kunt ook de sneltoets gebruiken, de standaard is &Ctrl;&Shift;D.

## De commandoregel in de editor

De editor-component van &kappname; beschikt over een interne commandoregel, zodat u diverse commando's direct, zonder uitgebreide GUI, kunt uitvoeren. De commandoregel bevindt zich onder het editor-gedeelte. Om hiermee te werken gebruikt u het menu Beeld Overschakelen naar commandoregel of drukt u op F7. De commando's van de editor worden hieronder beschreven, extra commando's kunnen door plugins geleverd worden.

Om een commando uit te voeren, typt u het commando en daarna drukt u op de Enter-toets. Op de commandoregel verschijnt een melding over het al dan niet slagen van de opdracht. Als u de commandoregel via F7 geopend hebt, zal deze automatisch na een paar seconden verdwijnen. Om de melding te verwijderen en een nieuw commando te typen drukt u nogmaals op F7.

Typ `help` om de ingebouwde help van de commandoregel te zien. Typ `help list` om een lijst met beschikbare commando's te zien. Om de help voor een specifiek commando te zien, typt u `help commando`.

De commandoregel houdt de geschiedenis van ingetypte commando's bij in een lijst, zodat u eerder getypte commando's opnieuw kunt gebruiken. Gebruik de toetsen Pijl omhoog en Pijl omlaag om door de lijst te navigeren. Wanneer een commando uit de lijst getoond wordt, is het argument-gedeelte geselecteerd, zodat u dit gemakkelijk kunt overschrijven.

### Standaard commandoregel opdrachten

#### Argumenttypen

BOOLEAN

  Dit wordt gebruikt met commando's die iets aan- of uitzetten. Toegestane waarden zijn `on`, `off`, `true`, `false`, `1` of `0`.

INTEGER

  Een geheel getal.

STRING

  Een tekenreeks, omgeven door quotes (') of aanhalingstekens (") wanneer deze spaties bevat.

#### commando's om de editor in te stellen

Deze commando's worden door de editor-component geleverd en maken het mogelijk om instellingen voor het actieve document en het beeld te maken. Dit kan nuttig zijn als u andere dan de standaardinstellingen wilt gebruiken, bijvoorbeeld voor het inspringen.

    set-tab-widthINTEGER width

  Stelt de tablengte in op `width`.

    set-indent-widthINTEGER width

  Stelt de breedte voor het inspringen in op `width`. Gebruik dit alleen als u met spaties inspringt.

    set-word-wrap-columnINTEGER width

  Stelt de regellengte in op `width`. Dit wordt gebruikt als u tekst automatisch laat afbreken.

    set-icon-borderBOOLEAN enable

  Toont of verbergt de pictogramrand.

    set-folding-markersBOOLEAN enable

  Toont of verbergt de vouwmarkeringen.

    set-line-numbersBOOLEAN enable

  Toont of verbergt de regelnummering.

    set-replace-tabsBOOLEAN enable

  Als deze optie ingeschakeld is, worden tabs door spaties vervangen terwijl u typt.

    set-remove-trailing-spaceBOOLEAN enable

  Als deze optie ingeschakeld is, wordt witruimte aan het einde van de regel verwijderd als de cursor naar een andere regel gaat.

    set-show-tabsBOOLEAN enable

  Als deze optie ingeschakeld is, worden tabs en spaties aan het einde van de regel zichtbaar gemaakt door middel van een punt.

    set-show-indentBOOLEAN enable

  Als deze optie ingeschakeld is, wordt inspringen zichtbaar gemaakt door middel van een verticale lijn van puntjes.

    set-indent-spacesBOOLEAN enable

  Als deze optie ingeschakeld is, zal de editor elk inspringniveau met `indent-width` spaties laten inspringen in plaats van met tabs.

    set-mixed-indentBOOLEAN enable

  Als deze optie ingeschakeld is, zal &kappname; tabs en spaties gebruiken voor het inspringen. Elk inspringniveau zal het aantal spaties hebben dat bij `indent-width` is ingesteld en meerdere inspringniveaus zullen geoptimaliseerd worden door zoveel mogelijk tabs te gebruiken.

  Wanneer dit commando uitgevoerd wordt, zal ook het inspringen met spaties ingeschakeld worden. Als de inspringbreedte niet gespecificeerd is, zal deze op de helft van `tab-width` voor het document ingesteld worden.

    set-word-wrapBOOLEAN enable

  Schakelt dynamische regelafbreking in of uit, afhankelijk van `enable`.

    set-replace-tabs-saveBOOLEAN enable

  Als deze optie ingeschakeld is, zullen tabs vervangen worden door spaties zodra het document opgeslagen wordt.

    set-remove-trailing-space-saveBOOLEAN enable

  Als deze optie ingeschakeld is, zullen spaties aan het einde van elke regel verwijderd worden zodra het document opgeslagen wordt.

    set-indent-modeSTRING name

  Stelt de automatische inspringmodus in op `naam`. Als `naam` onbekend is, wordt "none" (geen) gebruikt. Geldige modi zijn 'none', 'normal', 'cstyle', 'haskell', 'lilypond', 'lisp', 'python', 'ruby' en 'xml'.

    set-auto-identBOOLEAN script

  Automatisch inspringen in- of uitschakelen.

    set-highlightSTRING highlight

  Stelt de accentuering van syntaxis in voor het document. Het argument moet een geldige naam zijn, zoals die in het menu Hulpmiddelen Accentueringmodus staat. Bij dit commando is automatische aanvulling beschikbaar voor het argument.

    reload-scripts

  Alle door Kate gebruikte JavaScript-scripts herladen, inclusief indenteerders en commandoregelscripts.

    set-modeSTRING modus

  Het bestandstypeschema voor het huidige document kiezen.

    nn[oremap]STRING original STRING mapped

  Laat de `originele` toetsenreeks overeenkomen met de `overeenkomstige`.

#### Bewerkcommando's

Deze commando's wijzigen het huidige document.

    indent

  Laat de geselecteerde regels of de huidige regel inspringen.

    unindent

  Verwijdert de inspringing van de geselecteerde regels of van de huidige regel.

    cleanindent

  Schoont de inspringing van de geselecteerde regels of van de huidige regels op, in overeenstemming met de instellingen in het document.

    comment

  Voegt commentaarmarkeringen aan de geselecteerde regels of aan de huidige regel toe, in overeenstemming met de tekstopmaak zoals die gedefinieerd is voor de syntaxisaccentuering van het document.

    uncomment

  Verwijdert commentaarmarkeringen van de geselecteerde regels of van de huidige regel, in overeenstemming met de tekstopmaak zoals die gedefinieerd is voor de syntaxisaccentuering van het document.

    kill-line

  Verwijdert de huidige regel.

    replace STRING pattern STRING replacement

  Vervangt tekst die overeenkomt met `pattern` door `replacement`. Als u spaties in `pattern` wilt gebruiken, moet u om `pattern` en om `replacement` enkele of dubbele aanhalingstekens zetten. Als er geen aanhalingstekens om de argumenten staan, wordt het eerste woord als `pattern` gebruikt en de rest als `replacement`. Als `replacement` geen tekens bevat, wordt elk gevonden `pattern` verwijderd.

  U kunt extra opties aan de zoekopdracht meegeven door een dubbele punt toe te voegen, gevolgd door één of meer letters die elk een optie vertegenwoordigen. De zoekopdracht krijgt de vorm `replace:options pattern replacement`. Beschikbare opties zijn:

  `b`

    Zoek achterwaarts.

  `c`

    Zoek vanaf de cursorpositie.

  `e`

    Zoek alleen in de geselecteerde tekst.

  `r`

    Gebruik een reguliere expressie in de zoekopdracht. In dit geval kunt u ook `N` gebruiken, N is een getal dat het aantal overeenkomsten in de vervangende tekenreeks vertegenwoordigt.

  `s`

    De zoekopdracht is hoofdlettergevoelig.

  `p`

    Vraag om toestemming om de volgende overeenkomst te vervangen.

  `w`

    Zoek alleen naar hele woorden.

    dateSTRING format

  Voegt een datum/tijd in volgens de gespecificeerde `format`, of in de opmaak yyyy-MM-dd hh:mm:ss als er geen opmaak gespecificeerd is. De mogelijke vormen van `format` en de resulterende interpretatie:

  `d` | De dag als een getal zonder voorloopnul (1-31).
  `dd` | De dag als een getal met voorloopnul (01-31).
  `ddd` | De verkorte gelokaliseerde dagnaam ('Ma'..'Zo').
  `dddd` | De lange gelokaliseerde dagnaam ('Maandag'..'Zondag').
  `M` | De maand als een getal zonder voorloopnul (1-12).
  `MM` | De maand als een getal met voorloopnul (01-12).
  `MMMM` | De lange gelokaliseerde maandnaam (bijv. 'januari'..'december').
  `MMM` | De verkorte gelokaliseerde maandnaam ('Jan'..'Dec').
  `yy` | Het jaar als een getal van twee cijfers (00-99).
  `yyyy` | Het jaar als een getal van vier cijfers (1752-8000).
  `h` | Het uur zonder voorloopnul (0..23 of 1..12 als AM/PM gebruikt wordt).
  `hh` | Het uur met voorloopnul (00..23 of 01..12 als AM/PM gebruikt wordt).
  `m` | De minuut zonder voorloopnul (0..59).
  `mm` | De minuut met voorloopnul (00..59).
  `s` | De seconde zonder voorloopnul (0..59).
  `ss` | De seconde met voorloopnul (00..59).
  `z` | De milliseconden zonder voorloopnul (0..999).
  `zzz` | De milliseconden met voorloopnul (000..999).
  `AP` | Gebruik AM/PM. AP wordt vervangen door "AM" of "PM".
  `ap` | Gebruik am/pm. ap wordt vervangen door "am" of "pm".

    charSTRING identifier

  Met behulp van dit commando kunt u tekens invoegen door het intypen van een decimaal, octaal of hexadecimaal getal. Open het dialoogvenster "Bewerkcommando's" en typ `char: [number]` in het invoerveld, klik daarna op OK.

  ##### `char` voorbeelden

  Invoer: `char:234`

  Uitvoer: `ê`

  Invoer: `char:0x1234`

  Uitvoer: `ሴ`

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

  Dit commando voert een zoeken/vervangen-opdracht op de manier van sed uit op de huidige regel of in het gehele bestand (`%s///`).

  Kort gezegd gebeurt er het volgende: In de tekst wordt naar de eerstvolgende overeenkomst met het zoekpatroon gezocht, de reguliere expressie tussen de eerste en de tweede slash, en wanneer een overeenkomst gevonden is, wordt het overeenkomende gedeelte van de tekst vervangen door de expressie tussen de tweede en de laatste slash. Haakjes in het zoekpatroon (search pattern) vertegenwoordigen terugverwijzingen, dit betekent dat het commando onthoudt welk gedeelte overeenkomt met het gedeelte tussen de haakjes; deze tekenreeksen kunnen opnieuw in de vervangende tekst gebruikt worden, `\1` verwijst naar de eerste set haakjes, `\2` naar de tweede set, enzovoort.

  Om naar een `(` of `)` te zoeken moet u het teken vooraf laten gaan door een backslash: `\(\)`

  Als u een `i` aan het einde van de expressie toevoegt, maakt de zoekopdracht geen verschil tussen hoofd- en kleine letters. Als u een `g` aan het einde toevoegt, worden alle overeenkomsten met het zoekpatroon vervangen, anders wordt alleen de eerste overeenkomst in een regel vervangen.

  ##### Tekst vervangen in de huidige regel

  Uw aardige compiler is zojuist gestopt met de mededeling dat de class `myClass` in regel 3902 in uw bronbestand niet gedefinieerd is.

  "Kreukels nog an toe!" denkt u, het is natuurlijk `MyClass`. U gaat naar regel 3902 en in plaats van te proberen het woord in de tekst te vinden, opent u het dialoogvenster "Bewerkcommando's", u typt `s/myclass/MyClass/i`, klikt op OK, slaat het bestand op en compileert – ditmaal zonder fouten.

  ##### Tekst vervangen in het gehele bestand

  Stel dat u aan een bestand werkt waarin de naam Anna Jensen verscheidene keren voorkomt. Dan hoort u van iemand dat ze pasgeleden getrouwd is met Harry Jones. U wilt natuurlijk overal in het bestand Anna Jensen vervangen door Anna Jones-Jensen.

  Open de commandoregel en typ `%s/Anna Jensen/Anna Jones-Jensen/` en druk op de Enter-toets; dat was alles.

  ##### Een iets ingewikkelder voorbeeld

  In dit voorbeeld gebruiken we zowel terugverwijzingen als teken-class (als u niet weet wat dit is, lees dan de uitleg hieronder).

  Stel dat u de volgende regel hebt:

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

  U bedenkt dat dit geen nette code is en besluit dat u het sleutelwoord `const` wilt gebruiken voor alle adressen van argumenten, herkenbaar aan de operator & voor de naam van het argument. U wilt ook de witruimte (de spaties of tabs) aanpassen, zodat er overal slechts één witruimteteken tussen de woorden staat.

  Open het dialoogvenster "Bewerkcommando's" en typ: `s/\s+(\w+)\s+(&)/ const \1 \2/g`, klik daarna op OK. De `g` aan het einde van de expressie zorgt ervoor dat de reguliere expressie voor elke overeenkomst opnieuw opgebouwd wordt om de terugverwijzingen te behouden.

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

  Taak volbracht! Wat is er nu gebeurd? We hebben gezocht naar witruimte (`\s+`) gevolgd door één of meer lettertekens (`\w+`) gevolgd door nog meer witruimte (`\s+`) gevolgd door een ampersand, en tegelijkertijd hebben we de lettertekens en de ampersand opgeslagen voor hergebruik bij het vervangen. Daarna hebben we het overeenkomende gedeelte van de regel vervangen door één spatie gevolgd door const gevolgd door één spatie gevolgd door de opgeslagen lettertekens (`\1`) gevolgd door één spatie gevolgd door de opgeslagen ampersand (`\2`).

  Nu waren de lettertekens op sommige plaatsen String, op andere plaatsen int, het gebruik van de tekenklasse `\w` en het bepalingsteken `+` bleek een handig hulpmiddel.

    sort

  De geselecteerde tekst of het gehele document sorteren.

    natsort

  De geselecteerde regels of het gehele document op een natuurlijke manier sorteren.

  ##### `sort` vs. `natsort`

  ``sort`(a10, a1, a2)` resulteert in `a1, a10, a2`

  ``natsort`(a10, a1, a2)` resulteert in `a1, a2, a10`

    moveLinesDown

  Geselecteerde regels omlaag verplaatsen.

    moveLinesUp

  Geselecteerde regels omhoog verplaatsen.

    uniq

  Dubbele regels uit de geselecteerde tekst of het gehele document verwijderen.

    rtrim

  Spaties aan het eind van de regel uit de geselecteerde tekst of het gehele document verwijderen.

    ltrim

  Spaties aan het begin van de regel uit de geselecteerde tekst of het gehele document verwijderen.

    joinSTRING separator

  Geselecteerde regels of het gehele document samenvoegen. Neemt optioneel een parameter die een scheidingsteken definieert, bijvoorbeeld: ``join` ', '`

    rmblank

  Alle spaties uit de geselecteerde tekst of het gehele document verwijderen.

    unwrap

  Alle regelafbrekingen uit de geselecteerde tekst of het gehele document ongedaan maken.

    eachSTRING script

  Met een JavaScript-functie als argument, roep die aan voor de lijst met geselecteerde regels en vervang ze met de terugkeerwaarde van die aanroep.

  ##### Geselecteerde regels samenvoegen

  ``each` 'function(lines){return lines.join(", ")}'`

  Of, korter:

  ``each` 'lines.join(", ")'`

    filterSTRING script

  Met een JavaScript-functie als argument, roep die aan voor de lijst met geselecteerde regels en verwijder ze als de terugkeerwaarde van die aanroep 'false' is.

  ##### Blanco regels verwijderen

  ``filter` 'function(1){return 1.length > 0;}'`

  Of, korter:

  ``filter` 'line.length > 0'`

    mapSTRING script

  Met een JavaScript-functie als argument, roep die aan voor de lijst met geselecteerde regels en vervang de regel met de terugkeerwaarde van die aanroep.

  ##### Blanco regels verwijderen

  ``map` 'function(line){return line.replace(/^s+/,"");}'`

  Of, korter:

  ``map` 'line.replace(/^s+/,"")'`

    duplicateLinesUp

  De geselecteerde regels boven de huidige selectie dupliceren.

    duplicateLinesDown

  De geselecteerde regels onder de huidige selectie dupliceren.

#### Navigatiecommando's

    gotoINT line

  Dit commando plaatst de cursor op de gespecificeerde regel.

    grep STRING pattern

  Doorzoek het document met de reguliere expressie `patroon`. Voor meer informatie, zie

    findSTRING pattern

  Dit commando plaatst de cursor bij de eerstgevonden overeenkost met `pattern`, afhankelijk van de eventuele opties. Volgende overeenkomsten kunnen gevonden worden door het menu Bewerken Volgende zoeken te gebruiken of door op F3 te drukken.

  Het gedrag van de zoekopdracht kan ingesteld worden door een dubbele punt gevolgd door één of meer opties aan het commando toe te voegen: `find:options pattern`. De volgende opties kunnen gebruikt worden:

  `b`

    Zoek achterwaarts.

  `c`

    Zoek vanaf de cursorpositie.

  `e`

    Zoek alleen in de geselecteerde tekst.

  `r`

    Gebruik een reguliere expressie in de zoekopdracht. In dit geval kunt u ook `N` gebruiken, N is een getal dat het aantal overeenkomsten in de vervangende tekenreeks vertegenwoordigt.

  `s`

    De zoekopdracht is hoofdlettergevoelig.

  `w`

    Zoek alleen naar hele woorden.

    ifindSTRING pattern

  Met behulp van dit commando kunt u zoeken terwijl-u-typt. Het gedrag van de zoekopdracht kan ingesteld worden door een dubbele punt gevolgd door één of meer opties aan het commando toe te voegen: `ifind:options patroon`. De volgende opties kunnen gebruikt worden:

  `b`

    Zoek achterwaarts.

  `r`

    Gebruik een reguliere expressie in de zoekopdracht.

  `s`

    De zoekopdracht is hoofdlettergevoelig.

  `c`

    Zoek vanaf de cursorpositie.

#### Opdrachten voor basis functies van de Editor (Deze hangen af van de toepassing waarin de editorcomponent gebruikt wordt)

    w

  Het huidige document opslaan.

    wa

  Alle huidige geopende documenten opslaan.

    q

  Het huidige document sluiten.

    qa

  Sluit alle geopende documenten.

    wq

  Het huidige document opslaan en sluiten.

    wqa

  Alle huidige open documenten opslaan en sluiten.

    x

  Het huidige document alleen opslaan en sluiten als het is gewijzigd.

    x

  Alleen alle huidige geopende documenten opslaan en sluiten als ze zijn gewijzigd.

    bp

  Naar het vorige document in de documentenlijst gaan.

    bn

  Naar het volgende document in de documentenlijst gaan.

    new

  Een nieuw document openen in horizontaal gesplitste weergave.

    vnew

  Een nieuw document openen in verticaal gesplitste weergave.

    e

  Het huidige document herladen als het op de schijf is gewijzigd.

    enew

  Een nieuw document bewerken.

    print

  Het printerdialoogvenster openen om het huidige document af te drukken.

## Code-invouwing gebruiken

Code invouwen stelt u in staat om delen van een document in de editor te verbergen, waarmee het gemakkelijker is om overzicht te houden over grote documenten. In &kappname; worden de invouwbare gebieden berekend met regels gedefinieerd in de definities van syntaxis accentuering en zijn daarom alleen beschikbaar in sommige formaten - typisch broncode van programma's, XML-markup en vergelijkbaar. De meeste definities voor accentuering met ondersteuning van code invouwen laten u ook handmatig invouwbare gebieden definiëren, typisch met de `BEGIN` en `END` sleutelwoorden.

Om de functie codeinvouwen te gebruiken, activeert u de invouwmarkering met het menu-item Beeld Invouwmarkeringen tonen als ze nog niet zichtbaar zijn. Het paneel voor invouwmarkeringen links op het scherm toont een grafische weergave van de invouwgebieden, met driehoekssymbolen om de mogelijke bewerking op een gegeven gebied aan te geven: een naar beneden gerichte driehoek geeft aan dat het gebied niet is ingevouwen, erop klikken zal het gebied invouwen en een naar rechts wijzende driehoek zal in plaats daarvan worden getoond.

Er zijn drie commando's die de status van invouwgebieden veranderen, zie de menudocumentatie.

De ingevouwen regels worden herinnerd wanneer een bestand wordt gesloten, dus bij het opnieuw openen van het bestand zullen de ingevouwen nodes nog steeds ingevouwen zijn. Dit is ook van toepassing bij herladen.

Als u geen gebruik wilt maken van code invouwen, dan kunt u de optie Invouwmarkering tonen (indien beschikbaar) in de pagina Uiterlijk van de editorconfiguratie.