Automatische paren en slimme inspringing¶
Terwijl u typt sluit de editor haakjes en aanhalingstekens voor u, behoudt hij uw inspringing op nieuwe regels, opent hij blokken tussen accolades en past hij één samenhangende inspringeenheid (tabs of spaties) toe op de Tab-toets, op het uitspringen met backspace en op de automatische inspringing. Alles hier is een ingebouwde functie van de editor; de bijbehorende menuopdrachten en de instelling voor de inspringstijl komen van de meegeleverde Inspringing-plug-in.
Het is bedoeld om onzichtbaar te zijn — het handelt alleen op het teken dat u zojuist typte, en houdt zich afzijdig waar het in de weg zou zitten (binnen commentaar en tekenreeksen, vóór bestaande woorden, bij het verkeerde partnerteken).
Haakjes en aanhalingstekens automatisch paren¶
Een openend haakje of aanhalingsteken typen voegt de partner in en laat de cursor tussen beide staan:
| U typt | U krijgt | Cursor |
|---|---|---|
( |
() |
ertussen |
[ |
[] |
ertussen |
{ |
{} |
ertussen |
" |
"" |
ertussen |
' |
'' |
ertussen |
Een paar regels voorkomen dat dit vervelend wordt:
- Overheen typen. Een sluitend teken typen terwijl hetzelfde teken al
rechts van de cursor staat, stapt eroverheen in plaats van een tweede in te
voegen — zo laat rechtdoor typen door
()of""één enkel, sluitend paar achter. - Geen paar vóór een woord. Een opener wordt alleen aangevuld wanneer het
volgende teken witruimte, een sluiter of het einde van de regel is — zodat een
(toevoegen vlak voor bestaande tekst daar geen verdwaalde)middenin injecteert. - Aanhalingstekens die apostrofs herkennen. Een
'die direct na een letter wordt getypt (zoals indon't) wordt als apostrof behandeld en niet gepaard. Aanhalingstekens paren alleen automatisch in een neutrale context (begin van een symbool, na witruimte of een operator). - Punthaken alleen in opmaak.
<…>paren alleen automatisch in HTML/XML-documenten, waar<een tag opent. Overal elders is<een vergelijkings- of verschuivingsoperator en wordt hij met rust gelaten.
Een selectie omhullen (typ-om-te-omhullen)¶
Met tekst geselecteerd vervangt het typen van een opener de selectie niet — het omhult die:
- Werkt met
([{"'(niet met<— buiten opmaak is dat een operator). - De binnentekst blijft daarna geselecteerd, zodat omhullingen aaneenschakelen:
typ
(en dan"en u krijgt("value"). - Met meerdere cursors wordt elke selectie afzonderlijk omhuld — en de hele bewerking is één stap ongedaan maken.
Een paar verwijderen¶
Backspace indrukken met de cursor tussen een leeg automatisch ingevoegd
paar ((|), [|], {|}, "|", '|', of <|> in opmaak) verwijdert beide
tekens in één stap, zodat u een automatisch paar met één toetsaanslag ongedaan
kunt maken. Zodra er inhoud tussen het paar staat, gedraagt Backspace zich
normaal.
Slimme inspringing bij Enter¶
Enter indrukken neemt de witruimte aan het begin van de huidige regel mee naar de nieuwe regel, zodat u op dezelfde diepte blijft zonder tabs of spaties opnieuw te typen:
- Inspringing behouden. De nieuwe regel begint met dezelfde inspringing als de regel die u verliet.
- Eén niveau openen. Als de regel die u verliet eindigt op een opener (
{,[,(), springt de nieuwe regel één niveau extra in. - Een blok openen. Staat de cursor tussen een opener en de bijbehorende sluiter, dan vouwt het blok open: de nieuwe regel springt één niveau dieper in en de sluiter zakt naar een eigen regel op de diepte van de opener.
Inspringstijl — tabs, spaties of automatisch¶
Eén inspringeenheid stuurt de Tab-toets, het uitspringen met backspace en de automatische inspringing hierboven aan, zodat ze het altijd eens zijn. Kies die in Voorkeuren ▸ Plug-ins ▸ Inspringing:
| Stijl | Gedrag |
|---|---|
| Tabs (standaard voor nieuwe bestanden) | Eén niveau is een echt tabteken; Spaties per inspringniveau bepaalt de zichtbare breedte ervan. |
| Spaties | Eén niveau is het aantal spatietekens uit Spaties per inspringing. |
| Automatisch (uit het document afleiden) | De editor bekijkt de bestaande inspringing van het document en volgt die — een met tabs ingesprongen bestand blijft tabs gebruiken, een bestand met 2 spaties blijft twee spaties gebruiken. Een bestand dat nog geen inspringing heeft valt terug op de standaard (tabs). |
Nieuwe, naamloze bestanden staan standaard op Tabs, breedte 4.
Inspringing met de hand bijstellen¶
De Inspringing-plug-in voegt twee opdrachten toe (ook onder Bewerken ▸ Inspringing) die elke regel die de selectie raakt laten inspringen of uitspringen — of de regel van de cursor wanneer er niets geselecteerd is:
| Opdracht | Sneltoets |
|---|---|
| Inspringing vergroten | Ctrl+] |
| Inspringing verkleinen | Ctrl+[ |
Een codeblok plakken¶
Kopieer een paar regels die hun eigen inspringing dragen — bijvoorbeeld drie regels die elk met twaalf spaties beginnen — en plak ze bij een ingesprongen cursor. Letterlijk geplakt zou de eerste regel op uw inspringing plus de twaalf spaties van het blok belanden (ver naar rechts) en elke volgende regel op kolom 0 plus twaalf, waarna u het geheel met de hand opnieuw zou moeten laten inspringen.
OctoEdit laat het blok in plaats daarvan voor u opnieuw inspringen: de inspringing die de regels van het blok gemeen hebben wordt verwijderd, de eerste regel belandt waar de cursor al staat, en elke volgende regel krijgt de inspringing van de cursorregel plus de inspringing die hij binnen het blok had. De binnenstructuur van het blok blijft precies behouden; tabs blijven tabs en spaties blijven spaties.
Alleen de voorafgaande inspringing wordt vervangen: het blok houdt zijn eigen inspringtekens, dus een met spaties ingesprongen blok dat in een met tabs ingesprongen document wordt geplakt blijft binnenin met spaties ingesprongen. De binneninspringing van het blok naar de stijl van het document omzetten is een mogelijke optie voor later — de editor doet dat vandaag niet.
Dit geldt alleen voor een plakactie die ondubbelzinnig een blok is:
- het klembord bevat meer dan één regel;
- er is één cursor en geen rechthoekige (kolom-)selectie;
- er staat niets dan witruimte tussen het begin van de regel en de cursor — midden in een regel plakken is een inlassing en blijft letterlijk.
Al het overige plakt precies zoals voorheen. De hele plakactie is één stap Ongedaan maken, en een selectie wordt zoals gebruikelijk vervangen.
Zet het uit met Geplakte regels opnieuw laten inspringen volgens de inspringing van de cursor in Voorkeuren ▸ Plug-ins ▸ Inspringing (standaard aan).
Plakken als Markdown (Ctrl+Shift+V) volgt dezelfde regel. De
geconverteerde tekst is een blok dat in kolom 0 begint, met de geneste
lijstitems ingesprongen ten opzichte daarvan, dus bij een ingesprongen cursor
krijgt elke regel de inspringing van de cursor en blijft de nesting exact
behouden. Zie Bewerken voor wat de opdracht
doet.
Standaarden per taal¶
Sommige talen hebben één vrijwel universele inspringafspraak, en de editor levert die als standaard voor die taal mee — een vers geopend bestand van dat type springt correct in, geheel zonder configuratie:
| Taal | Standaard |
|---|---|
| Python | 4 spaties (PEP 8) |
| Rust | 4 spaties (rustfmt) |
| Markdown | 4 spaties (geneste lijsten) |
| YAML | 2 spaties (tabs zijn niet toegestaan) |
| JSON | 2 spaties |
| Go | tabs (gofmt) |
| C / C++ | tabs |
Elke andere taal draagt bewust geen standaard en volgt uw globale inspringinstelling. De taal van een document met de hand wisselen (het menu Taal) past de bijbehorende standaard meteen opnieuw toe.
De standaard staat in het definitiebestand van de taal
(colorizers/<id>.json, sleutel "indent": { "style": "tabs|spaces", "width": N }).
Een gevorderde gebruiker kan een meegeleverde standaard wijzigen door een bewerkte
kopie van dat bestand in de overschrijvingsmap van de gebruiker te plaatsen — de
catalogus vervangt definities op id.
Gepland: overschrijvingen per taal in Voorkeuren
Een instellingentabel om deze standaarden per taal te overschrijven (zonder aan JSON te komen) is ontworpen en gepland als de volgende stap van deze functie; totdat die er is, zijn de JSON-overschrijving hierboven en de lagen hieronder de manieren om de inspringing te sturen.
Waar de inspringeenheid vandaan komt (voorrang)¶
Wanneer meerdere bronnen een mening over de inspringing hebben, lost de editor ze op één plek op en past hij de winnaar toe, de hoogste voorrang eerst:
- De
.editorconfigvan het project — indien aanwezig en «.editorconfig-instellingen toepassen» aan staat, winnen deindent_style/indent_size/tab_widthvan een project voor de bijbehorende bestanden. - De meegeleverde standaard van de taal — de tabel hierboven, wanneer de taal van het document er een verklaart.
- Uw globale inspringinstelling — de keuze Tabs / Spaties / Automatisch hierboven.
Een project dat een .editorconfig meelevert overschrijft dus alles voor de
bestanden van dat project; een Python-bestand buiten zo'n project springt in met
PEP 8-spaties, zelfs wanneer uw globale instelling tabs is; en al het overige
volgt uw globale instelling. U kunt de inspringing van een document achteraf altijd
met de hand wijzigen.
De voorrang geldt op het moment dat er iets verandert: een andere keuze Tabs /
Spaties / Automatisch toepassen in Voorkeuren lost het geopende document meteen
opnieuw op, zodat een bestand dat door een .editorconfig of een taalstandaard
wordt geregeerd zijn inspringing houdt zonder dat u van tabblad hoeft te wisselen.
Meerdere cursors¶
Al het bovenstaande geldt bij elke cursor wanneer u met
meerdere cursors bewerkt: ( typen voegt bij elke cursor ()
in, Enter behoudt de inspringing van elke regel, en Backspace tussen lege paren
verwijdert bij elke cursor beide tekens. Eén keer Ongedaan maken draait de hele
bewerking met meerdere cursors in één stap terug.
Backspace bij gemengde cursors
Backspace verwijdert alleen paren wanneer elke cursor tussen een leeg paar staat. Staan sommige cursors elders, dan valt Backspace bij allemaal terug op het normale gedrag, zodat hij nooit een verdwaalde sluiter bij de ene cursor verwijdert terwijl u bij de andere aan een woord werkt.
In commentaar en tekenreeksen¶
Wanneer er een syntaxis-colorizer actief is, houden het automatisch paren en het
door accolades gestuurde openen van een blok zich afzijdig binnen commentaar en
tekenreeks- of tekenliteralen — daar is een { of " gewone tekst, geen code,
dus laat de editor hem precies zoals getypt. Gewone inspringing (het meenemen van
de witruimte van de vorige regel) werkt nog steeds. In een document met platte
tekst zonder colorizer valt er niets te onderdrukken, dus het paren gedraagt zich
overal hetzelfde.
Verwant¶
- Inspringing-plug-in — de instelling voor de inspringstijl en de opdrachten Vergroten/Verkleinen.
- EditorConfig — inspringing per project die uw globale instelling overschrijft.
- Bewerken met meerdere cursors — meerdere cursors tegelijk plaatsen en ermee bewerken.