Gå til indholdet

Automatiske par og intelligent indrykning

Mens du skriver, lukker editoren parenteser og anførselstegn for dig, bevarer din indrykning på nye linjer, åbner blokke mellem tuborgklammer, og anvender én sammenhængende indrykningsenhed (tabulatorer eller mellemrum) på Tab-tasten, på udrykning med backspace og på den automatiske indrykning. Alt her er en indbygget funktion i editoren; de tilhørende menukommandoer og indstillingen for indrykningsstil kommer fra det medfølgende Indrykning-udvidelsesmodul.

Det er tænkt til at være usynligt — det handler kun på det tegn, du lige skrev, og holder sig tilbage, hvor det ville være i vejen (inde i kommentarer og strenge, foran eksisterende ord, med det forkerte partnertegn).

Automatiske par af parenteser og anførselstegn

At skrive en åbnende parentes eller et åbnende anførselstegn indsætter dets partner og efterlader markøren mellem de to:

Du skriver Du får Markør
( () imellem
[ [] imellem
{ {} imellem
" "" imellem
' '' imellem

Et par regler forhindrer, at dette bliver irriterende:

  • Skriv henover. At skrive et lukkende tegn, når samme tegn allerede står til højre for markøren, træder henover det i stedet for at indsætte endnu et — så at skrive lige igennem () eller "" efterlader ét enkelt, afbalanceret par.
  • Intet par foran et ord. En åbner fuldføres kun, når det næste tegn er blanktegn, en lukker eller linjeslut — så at tilføje en ( lige før eksisterende tekst indsprøjter ikke en forvildet ) midt i den.
  • Anførselstegn, der genkender apostroffer. En ' skrevet lige efter et bogstav (som i don't) behandles som en apostrof og pares ikke. Anførselstegn pares kun automatisk i en neutral sammenhæng (begyndelsen af et symbol, efter blanktegn eller en operator).
  • Vinkelparenteser kun i opmærkning. < … > pares kun automatisk i HTML/XML-dokumenter, hvor < åbner et tag. Alle andre steder er < en sammenlignings- eller skifteoperator og lades i fred.

At omslutte en markering (skriv-for-at-omslutte)

Med tekst markeret erstatter en åbner ikke markeringen — den omslutter den:

select value  then type (        →   (value)
  • Virker med ( [ { " ' (ikke < — uden for opmærkning er det en operator).
  • Den indre tekst forbliver markeret bagefter, så omslutninger kan kædes: skriv ( og derefter ", og du får ("value").
  • Med flere markører omsluttes hver markering for sig — og hele handlingen er ét fortrydelsestrin.

At slette et par

At trykke på Backspace med markøren mellem et tomt automatisk indsat par ((|), [|], {|}, "|", '|', eller <|> i opmærkning) sletter begge tegn i ét trin, så du kan fortryde et automatisk par med ét tastetryk. Så snart der er indhold mellem parret, opfører Backspace sig normalt.

Intelligent indrykning ved Enter

At trykke på Enter fører den nuværende linjes indledende blanktegn med over på den nye linje, så du bliver på samme dybde uden at skrive tabulatorer eller mellemrum igen:

  • Bevar indrykning. Den nye linje begynder med samme indrykning som den linje, du forlod.
  • Åbn ét niveau. Slutter den linje, du forlod, med en åbner ({, [, (), rykkes den nye linje ét niveau ekstra ind.
  • Åbn en blok. Står markøren mellem en åbner og dens matchende lukker, foldes blokken ud: den nye linje rykkes ét niveau dybere ind, og lukkeren falder ned på sin egen linje på åbnerens dybde.
if (cond) {|}        Enter        if (cond) {
                     ───────►          |
                                   }

Indrykningsstil — tabulatorer, mellemrum eller automatisk

Én indrykningsenhed styrer Tab-tasten, udrykning med backspace og den automatiske indrykning ovenfor, så de altid er enige. Vælg den i Indstillinger ▸ Udvidelsesmoduler ▸ Indrykning:

Stil Adfærd
Tabulatorer (standard for nye filer) Ét niveau er et reelt tabulatortegn; Mellemrum pr. indrykning bestemmer dets synlige bredde.
Mellemrum Ét niveau er så mange mellemrumstegn, som Mellemrum pr. indrykningsniveau angiver.
Automatisk (registrér ud fra dokumentet) Editoren ser på dokumentets eksisterende indrykning og følger den — en fil med tabulatorindrykning bliver ved med at bruge tabulatorer, en fil med 2 mellemrum bliver ved med at bruge to mellemrum. En fil uden indrykning endnu falder tilbage på standarden (tabulatorer).

Nye, unavngivne filer står som standard på Tabulatorer, bredde 4.

At justere indrykningen manuelt

Indrykning-udvidelsesmodulet tilføjer to kommandoer (også under Rediger ▸ Indrykning), der rykker hver linje, markeringen berører, ind eller ud — eller markørens linje, når intet er markeret:

Kommando Genvejstast
Forøg indrykning Ctrl+]
Formindsk indrykning Ctrl+[

At indsætte en kodeblok

Kopiér et par linjer, der bærer deres egen indrykning — for eksempel tre linjer, der hver begynder med tolv mellemrum — og indsæt dem ved en indrykket markør. Indsat ordret ville den første linje lande på din indrykning plus blokkens tolv mellemrum (langt ude til højre) og hver følgende linje på kolonne 0 plus tolv, så du skulle rykke det hele ind igen manuelt.

OctoEdit rykker i stedet blokken ind for dig: den indrykning, blokkens linjer har til fælles, fjernes, den første linje lander, hvor markøren allerede står, og hver følgende linje får markørlinjens indrykning plus den indrykning, den havde inde i blokken. Blokkens indre struktur bevares præcist; tabulatorer forbliver tabulatorer, og mellemrum forbliver mellemrum.

Kun den indledende indrykning erstattes: blokken beholder sine egne indrykningstegn, så en blok med mellemrumsindrykning indsat i et dokument med tabulatorindrykning forbliver indrykket med mellemrum indvendigt. At konvertere blokkens indre indrykning til dokumentets stil er en mulig fremtidig valgmulighed — editoren gør det ikke i dag.

Dette gælder kun en indsætning, der utvetydigt er en blok:

  • udklipsholderen indeholder mere end én linje;
  • der er én markør og ingen rektangulær (kolonne-)markering;
  • der er intet andet end blanktegn mellem linjens begyndelse og markøren — at indsætte midt i en linje er en indsplejsning og efterlades ordret.

Alt andet indsættes præcis som før. Hele indsætningen er ét Fortryd-trin, og en markering erstattes som sædvanlig.

Slå det fra med Ryk indsatte linjer ind efter markørens indrykning i Indstillinger ▸ Udvidelsesmoduler ▸ Indrykning (slået til som standard).

Sæt ind som Markdown (Ctrl+Shift+V) går gennem den samme regel. Den konverterede tekst er en blok, der starter i kolonne 0, med de indlejrede listeelementer indrykket i forhold til den, så ved en indrykket markør får hver linje markørens indrykning, og indlejringen bevares præcist. Se Redigering for, hvad kommandoen gør.

Standardværdier pr. sprog

Nogle sprog har én næsten universel indrykningskonvention, og editoren leverer den som det sprogs standard — en netop åbnet fil af den type rykkes korrekt ind helt uden konfiguration:

Sprog Standard
Python 4 mellemrum (PEP 8)
Rust 4 mellemrum (rustfmt)
Markdown 4 mellemrum (indlejrede lister)
YAML 2 mellemrum (tabulatorer er ikke tilladt)
JSON 2 mellemrum
Go tabulatorer (gofmt)
C / C++ tabulatorer

Alle andre sprog bærer bevidst ingen standard og følger din globale indrykningsindstilling. At skifte et dokuments sprog manuelt (menuen Sprog) anvender den tilsvarende standard på ny med det samme.

Standarden bor i sprogets definitionsfil (colorizers/<id>.json, nøglen "indent": { "style": "tabs|spaces", "width": N }). En avanceret bruger kan ændre en medfølgende standard ved at lægge en redigeret kopi af den fil i brugerens tilsidesættelsesmappe — kataloget erstatter definitioner efter id.

Planlagt: tilsidesættelser pr. sprog i Indstillinger

En indstillingstabel til at tilsidesætte disse standardværdier pr. sprog (uden at røre nogen JSON) er udformet og planlagt som næste skridt for denne funktion; indtil den kommer, er JSON-tilsidesættelsen ovenfor og lagene nedenfor måderne at styre indrykningen på.

Hvor indrykningsenheden kommer fra (forrang)

Når flere kilder har en mening om indrykningen, løser editoren dem ét sted og anvender vinderen, højeste forrang først:

  1. Projektets .editorconfig — når den findes, og «Anvend .editorconfig-indstillinger» er slået til, vinder et projekts indent_style / indent_size / tab_width for de matchende filer.
  2. Sprogets medfølgende standard — tabellen ovenfor, når dokumentets sprog erklærer en.
  3. Din globale indrykningsindstilling — valget Tabulatorer / Mellemrum / Automatisk ovenfor.

Et projekt, der leverer en .editorconfig, tilsidesætter altså alt for det projekts filer; en Python-fil uden for et sådant projekt rykkes ind med PEP 8-mellemrum, selv når din globale indstilling er tabulatorer; og alt andet følger din globale indstilling. Du kan altid ændre et dokuments indrykning manuelt bagefter.

Forrangen gælder i samme øjeblik noget ændrer sig: at anvende et andet valg Tabulatorer / Mellemrum / Automatisk i Indstillinger løser det åbne dokument på ny med det samme, så en fil, der styres af en .editorconfig eller en sprogstandard, beholder sin indrykning, uden at du skal skifte faneblad.

Flere markører

Alt ovenstående gælder ved hver markør, når du redigerer med flere markører: at skrive ( indsætter () ved hver, Enter bevarer hver linjes indrykning, og Backspace mellem tomme par sletter begge tegn ved hver. Ét Fortryd ruller hele ændringen med flere markører tilbage i ét trin.

Backspace ved blandede markører

Backspace sletter kun par, når hver markør står mellem et tomt par. Står nogle markører andre steder, falder Backspace tilbage på sin normale adfærd ved dem alle, så den sletter aldrig en forvildet lukker ved én markør, mens du redigerer et ord ved en anden.

I kommentarer og strenge

Når en syntaks-colorizer er aktiv, holder de automatiske par og den tuborgklammestyrede blokåbning sig tilbage inde i kommentarer og streng- eller tegnliteraler — der er et { eller et " almindelig tekst, ikke kode, så editoren lader det stå præcis som skrevet. Almindelig indrykning (at føre den forrige linjes blanktegn med) virker stadig. I et dokument med ren tekst uden colorizer er der intet at undertrykke, så parringen opfører sig ens alle steder.

Beslægtet