Gå til innhold

Automatiske par og smart innrykk

Mens du skriver, lukker redigereren parenteser og anførselstegn for deg, beholder innrykket ditt på nye linjer, folder ut blokker mellom klammer og bruker én ensartet innrykksenhet (tabulatorer eller mellomrom) på Tab-tasten, på det å oppheve innrykk med Backspace og på det automatiske innrykket. Alt her er en innebygd funksjon i redigereren; de tilsvarende menykommandoene og innstillingen for innrykksstil kommer fra det medfølgende Innrykk-programtillegget.

Det er ment å være usynlig — det virker bare på det tegnet du nettopp skrev, og trer til side der det ville være i veien (inne i kommentarer og tekststrenger, foran eksisterende ord, med feil partnertegn).

Automatiske par av parenteser og anførselstegn

Skriver du en åpnende parentes eller et åpnende anførselstegn, settes partneren inn, og markøren blir stående mellom de to:

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

Noen få regler gjør at dette ikke blir irriterende:

  • Overskriving. Skriver du et lukkende tegn når det samme tegnet allerede står til høyre for markøren, går den over det i stedet for å sette inn ett til — så det å skrive rett gjennom () eller "" etterlater ett enkelt, balansert par.
  • Ingen paring foran et ord. En åpner fullføres bare når det neste tegnet er et blanktegn, en lukker eller slutten på linjen — så det å legge til en ( rett foran eksisterende tekst skyter ikke inn en løs ) midt inni den.
  • Anførselstegn som kjenner apostrofen. En ' som skrives rett etter en bokstav (som i don't), behandles som en apostrof og pares ikke. Anførselstegn pares bare av seg selv i en nøytral sammenheng (i begynnelsen av et element, etter et blanktegn eller en operator).
  • Vinkelparenteser bare i oppmerking. < … > pares bare i HTML- og XML-dokumenter, der < åpner en tagg. Alle andre steder er < en sammenlignings- eller skiftoperator og lar den være i fred.

Å omslutte en merking (skriv for å omslutte)

Med tekst merket erstatter det ikke merkingen å skrive en åpner — det omslutter den:

select value  then type (        →   (value)
  • Virker med ( [ { " ' (ikke < — utenfor oppmerking er det en operator).
  • Teksten inni forblir merket etterpå, så omslutninger kan kjedes: skriv ( og så ", og du får ("value").
  • Med flere markører omsluttes hver merking for seg — og hele handlingen er ett angretrinn.

Å slette et par

Trykker du Backspace med markøren mellom et tomt par som er satt inn av seg selv ((|), [|], {|}, "|", '|' eller <|> i oppmerking), slettes begge tegnene i ett steg, så du kan angre et automatisk par med ett tastetrykk. Når det først er innhold mellom paret, oppfører Backspace seg som vanlig.

Smart innrykk ved Enter

Et trykk på Enter tar med seg den gjeldende linjens innledende blanktegn over på den nye linjen, så du blir stående på samme dybde uten å skrive tabulatorer eller mellomrom på nytt:

  • Behold innrykket. Den nye linjen begynner med det samme innrykket som den linjen du forlot.
  • Åpne ett nivå. Slutter linjen du forlot, med en åpner ({, [, (), rykkes den nye linjen ett nivå ekstra inn.
  • Åpne en blokk. Står markøren mellom en åpner og den lukkeren som hører til, foldes blokken ut: den nye linjen rykkes ett nivå lenger inn, og lukkeren faller ned på sin egen linje på åpnerens dybde.
if (cond) {|}        Enter        if (cond) {
                     ───────►          |
                                   }

Innrykksstil — tabulatorer, mellomrom eller automatisk

Én innrykksenhet styrer Tab-tasten, det å oppheve innrykk med Backspace og det automatiske innrykket ovenfor, så de alltid er enige. Velg den under Innstillinger ▸ Programtillegg ▸ Innrykk:

Stil Oppførsel
Tabulatorer (standard for nye filer) Ett nivå er et virkelig tabulatortegn; Mellomrom per innrykksnivå angir den visuelle bredden.
Mellomrom Ett nivå er Mellomrom per innrykksnivå mellomromstegn.
Automatisk (finn ut fra dokumentet) Redigereren ser på dokumentets eksisterende innrykk og følger det — en fil som er rykket inn med tabulatorer, fortsetter å bruke tabulatorer, og en fil med 2 mellomrom fortsetter å bruke to mellomrom. En fil helt uten innrykk faller tilbake på standarden (tabulatorer).

Nye filer uten navn bruker som standard tabulatorer med bredde 4.

Å justere innrykket for hånd

Innrykk-programtillegget legger til to kommandoer (også under Rediger ▸ Innrykk) som rykker hver linje merkingen berører, inn eller ut — eller markørens linje når ingenting er merket:

Kommando Hurtigtast
Øk innrykket Ctrl+]
Reduser innrykket Ctrl+[

Å lime inn en blokk kode

Kopier noen linjer som bærer sitt eget innrykk — for eksempel tre linjer som hver begynner med tolv mellomrom — og lim dem inn ved en innrykket markør. Limt inn ordrett ville den første linjen havne på ditt innrykk pluss blokkens tolv mellomrom (langt ute til høyre) og hver følgende linje på kolonne 0 pluss tolv, og du måtte rykke det hele inn på nytt for hånd.

OctoEdit rykker blokken inn på nytt for deg i stedet: det innrykket blokkens linjer har til felles, fjernes, den første linjen havner der markøren allerede er, og hver følgende linje får markørlinjens innrykk pluss det innrykket den hadde inne i blokken. Blokkens indre struktur beholdes nøyaktig; tabulatorer forblir tabulatorer, og mellomrom forblir mellomrom.

Bare det innledende innrykket erstattes: blokken beholder sine egne innrykkstegn, så en blokk med mellomromsinnrykk som limes inn i et dokument med tabulatorinnrykk, beholder mellomromsinnrykket inni. Å gjøre blokkens indre innrykk om til dokumentets stil er et mulig framtidig valg — redigereren gjør det ikke i dag.

Dette gjelder bare en innliming som utvetydig er en blokk:

  • utklippstavlen inneholder mer enn én linje;
  • det er én markør og ingen rektangulær merking (kolonnemerking);
  • det er ingenting annet enn blanktegn mellom begynnelsen av linjen og markøren — å lime inn midt i en linje er en skjøt, og lates ordrett.

Alt annet limes inn nøyaktig som før. Hele innlimingen er ett enkelt Angre-trinn, og en merking erstattes som vanlig.

Slå det av med Gi innlimte linjer innrykk etter markørens innrykk under Innstillinger ▸ Programtillegg ▸ Innrykk (på som standard).

Lim inn som Markdown (Ctrl+Shift+V) går gjennom den samme regelen. Den konverterte teksten er en blokk som starter i kolonne 0, med de nestede listeelementene rykket inn i forhold til den, så ved en innrykket markør får hver linje markørens innrykk, og nestingen beholdes nøyaktig. Se Redigering for hva kommandoen gjør.

Standarder per språk

Noen språk har én nesten allmenn innrykkskonvensjon, og redigereren leverer den som det språkets standard — en nyåpnet fil av typen rykkes riktig inn helt uten oppsett:

Språk Standard
Python 4 mellomrom (PEP 8)
Rust 4 mellomrom (rustfmt)
Markdown 4 mellomrom (nøstede lister)
YAML 2 mellomrom (tabulatorer er ikke tillatt)
JSON 2 mellomrom
Go tabulatorer (gofmt)
C / C++ tabulatorer

Hvert annet språk bærer med vilje ingen standard og følger den globale innrykksinnstillingen din. Bytter du et dokuments språk for hånd (menyen Språk), tas den tilhørende standarden i bruk med det samme.

Standarden ligger i språkets definisjonsfil (colorizers/<id>.json, nøkkelen "indent": { "style": "tabs|spaces", "width": N }). En erfaren bruker kan endre en medfølgende standard ved å legge en endret kopi av den filen i mappen for brukeroverstyringer — katalogen erstatter definisjoner etter id.

Planlagt: overstyringer per språk under Innstillinger

En innstillingstabell for å overstyre disse standardene per språk (uten å røre noen JSON) er utformet og planlagt som neste steg av denne funksjonen; inntil den kommer, er JSON-overstyringen ovenfor og lagene nedenfor måtene å styre innrykket på.

Hvor innrykksenheten kommer fra (rekkefølgen)

Når flere kilder har en mening om innrykket, avgjør redigereren dem på ett sted og bruker vinneren, med den høyeste forrangen først:

  1. Prosjektets .editorconfig — når den finnes og «Bruk .editorconfig-innstillinger» er på, vinner et prosjekts indent_style, indent_size og tab_width for filer som passer.
  2. Språkets medfølgende standard — tabellen ovenfor, når dokumentets språk erklærer en.
  3. Din globale innrykksinnstilling — valget mellom tabulatorer, mellomrom og automatisk ovenfor.

Så et prosjekt som leverer en .editorconfig, overstyrer alt for det prosjektets filer; en Python-fil utenfor et slikt prosjekt rykkes inn med PEP 8-mellomrom selv om den globale innstillingen din er tabulatorer; og alt annet følger den globale innstillingen din. Du kan alltid endre et dokuments innrykk for hånd etterpå.

Rekkefølgen holder i det øyeblikket noe endrer seg: tar du i bruk et annet valg mellom tabulatorer, mellomrom og automatisk under Innstillinger, avgjøres det åpne dokumentet på nytt med det samme, så en fil som styres av en .editorconfig eller en språkstandard, beholder innrykket sitt uten at du må bytte fane.

Flere markører

Alt det ovenstående gjelder ved hver markør når du redigerer med flere markører: skriver du (, settes () inn ved hver av dem, Enter beholder hver linjes innrykk, og Backspace mellom tomme par sletter begge tegnene ved hver. Én Angre tar hele endringen med flere markører tilbake i ett steg.

Backspace når markørene står ulikt

Backspace sletter bare par når hver markør står mellom et tomt par. Står noen markører andre steder, faller Backspace tilbake på sin vanlige oppførsel ved dem alle, så den sletter aldri en løs lukker ved én markør mens den redigerer et ord ved en annen.

I kommentarer og tekststrenger

Når en syntaksfargelegger er aktiv, trer de automatiske parene og den klammedrevne blokkåpningen til side inne i kommentarer og tekst- og tegnstrenger — der er en { eller en " alminnelig tekst og ikke kode, så redigereren lar den stå nøyaktig slik den ble skrevet. Det alminnelige innrykket (å ta med den forrige linjens blanktegn) virker fortsatt. I et rent tekstdokument uten en fargelegger er det ingenting å undertrykke, så paringen oppfører seg likt overalt.

Beslektet