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 idon'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:
- 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.
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:
- Projektets
.editorconfig— når den findes, og «Anvend .editorconfig-indstillinger» er slået til, vinder et projektsindent_style/indent_size/tab_widthfor de matchende filer. - Sprogets medfølgende standard — tabellen ovenfor, når dokumentets sprog erklærer en.
- 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¶
- Indrykning-udvidelsesmodulet — indstillingen for indrykningsstil og kommandoerne Forøg/Formindsk.
- EditorConfig — indrykning pr. projekt, der tilsidesætter din globale indstilling.
- Redigering med flere markører — at placere og redigere med flere markører på én gang.