Automatiska par och smart indrag¶
Medan du skriver stänger redigeraren parenteser och citattecken åt dig, behåller ditt indrag på nya rader, öppnar block mellan klamrar, och tillämpar en enda sammanhängande indragsenhet (tabbar eller blanksteg) på Tab-tangenten, på utdrag med backsteg och på det automatiska indraget. Allt här är en inbyggd funktion i redigeraren; de tillhörande menykommandona och inställningen för indragsstil kommer från den medföljande insticksmodulen Indrag.
Det är tänkt att vara osynligt — det agerar bara på det tecken du just skrev, och håller sig undan där det skulle vara i vägen (inuti kommentarer och strängar, framför befintliga ord, med fel partnertecken).
Automatiska par av parenteser och citattecken¶
Att skriva en öppnande parentes eller ett öppnande citattecken infogar dess partner och lämnar markören mellan de två:
| Du skriver | Du får | Markör |
|---|---|---|
( |
() |
emellan |
[ |
[] |
emellan |
{ |
{} |
emellan |
" |
"" |
emellan |
' |
'' |
emellan |
Några regler hindrar detta från att bli irriterande:
- Skriva över. Att skriva ett stängande tecken när samma tecken redan står
till höger om markören kliver över det i stället för att infoga ett andra — så
att skriva rakt genom
()eller""lämnar ett enda, balanserat par. - Inget par framför ett ord. En öppnare kompletteras bara när nästa tecken är
blanksteg, en stängare eller radslut — så att lägga till
(strax före befintlig text injicerar ingen vilsen)mitt i den. - Citattecken som känner igen apostrofer. Ett
'som skrivs direkt efter en bokstav (som idon't) behandlas som en apostrof och paras inte. Citattecken paras bara automatiskt i ett neutralt sammanhang (början av en symbol, efter blanksteg eller en operator). - Vinkelparenteser bara i uppmärkning.
<…>paras bara automatiskt i HTML/XML-dokument, där<öppnar en tagg. Överallt annars är<en jämförelse- eller skiftoperator och lämnas i fred.
Omsluta en markering (skriv-för-att-omsluta)¶
Med text markerad ersätter en öppnare inte markeringen — den omsluter den:
- Fungerar med
([{"'(inte<— utanför uppmärkning är det en operator). - Den inre texten förblir markerad efteråt, så omslutningar kan kedjas: skriv
(och sedan"så får du("value"). - Med flera markörer omsluts varje markering för sig — och hela operationen är ett ångrasteg.
Radera ett par¶
Att trycka på Backsteg med markören mellan ett tomt automatiskt infogat par
((|), [|], {|}, "|", '|', eller <|> i uppmärkning) raderar båda
tecknen i ett steg, så du kan ångra ett automatiskt par med en enda
tangenttryckning. När det finns innehåll mellan paret beter sig Backsteg normalt.
Smart indrag vid Enter¶
Att trycka på Enter för med sig den aktuella radens inledande blanksteg till den nya raden, så att du stannar på samma djup utan att skriva om tabbar eller blanksteg:
- Behåll indrag. Den nya raden börjar med samma indrag som raden du lämnade.
- Öppna en nivå. Om raden du lämnade slutar med en öppnare (
{,[,() dras den nya raden in en nivå extra. - Öppna ett block. Om markören står mellan en öppnare och dess matchande stängare fälls blocket ut: den nya raden dras in en nivå djupare och stängaren faller ned på en egen rad på öppnarens djup.
Indragsstil — tabbar, blanksteg eller automatiskt¶
En enda indragsenhet styr Tab-tangenten, utdrag med backsteg och det automatiska indraget ovan, så att de alltid är överens. Välj den i Inställningar ▸ Insticksmoduler ▸ Indrag:
| Stil | Beteende |
|---|---|
| Tabbar (standard för nya filer) | En nivå är ett verkligt tabbtecken; Blanksteg per indragsnivå bestämmer dess visuella bredd. |
| Blanksteg | En nivå är så många blanksteg som Blanksteg per indragsnivå anger. |
| Automatiskt (utläs ur dokumentet) | Redigeraren läser av dokumentets befintliga indrag och följer det — en fil med tabbindrag fortsätter använda tabbar, en fil med 2 blanksteg fortsätter använda två blanksteg. En fil som ännu inte har något indrag faller tillbaka på standardvärdet (tabbar). |
Nya, namnlösa filer har Tabbar, bredd 4, som standard.
Justera indraget för hand¶
Insticksmodulen Indrag lägger till två kommandon (även under Redigera ▸ Indrag) som drar in eller ut varje rad som markeringen berör — eller markörens rad när inget är markerat:
| Kommando | Kortkommando |
|---|---|
| Öka indraget | Ctrl+] |
| Minska indraget | Ctrl+[ |
Klistra in ett kodblock¶
Kopiera några rader som bär sitt eget indrag — säg tre rader som var och en börjar med tolv blanksteg — och klistra in dem vid en indragen markör. Inklistrade ordagrant skulle den första raden hamna på ditt indrag plus blockets tolv blanksteg (långt ut till höger) och varje följande rad på kolumn 0 plus tolv, så att du fick dra in alltihop på nytt för hand.
OctoEdit drar i stället in blocket åt dig: det indrag som blockets rader har gemensamt tas bort, den första raden hamnar där markören redan står, och varje följande rad får markörradens indrag plus det indrag den hade inuti blocket. Blockets inre struktur behålls exakt; tabbar förblir tabbar och blanksteg förblir blanksteg.
Endast det inledande indraget ersätts: blocket behåller sina egna indragstecken, så ett block med blankstegsindrag som klistras in i ett dokument med tabbindrag förblir indraget med blanksteg inuti. Att konvertera blockets inre indrag till dokumentets stil är ett möjligt framtida alternativ — redigeraren gör det inte i dag.
Detta gäller bara en inklistring som otvetydigt är ett block:
- urklipp innehåller mer än en rad;
- det finns en markör och ingen rektangulär (kolumn-)markering;
- det finns inget annat än blanksteg mellan radens början och markören — att klistra in mitt i en rad är en insplitsning och lämnas ordagrant.
Allt annat klistras in precis som förut. Hela inklistringen är ett enda Ångra-steg, och en markering ersätts som vanligt.
Stäng av det med Dra om inklistrade rader till markörens indrag i Inställningar ▸ Insticksmoduler ▸ Indrag (på som standard).
Klistra in som Markdown (Ctrl+Shift+V) går genom samma regel. Den
konverterade texten är ett block som börjar i kolumn 0 med sina nästlade
listposter indragna i förhållande till det, så vid en indragen markör får
varje rad markörens indrag och nästlingen bevaras exakt. Se
Redigera för vad kommandot gör.
Standardvärden per språk¶
Vissa språk har en nästan universell indragskonvention, och redigeraren levererar den som språkets standard — en nyöppnad fil av den typen dras in korrekt helt utan konfiguration:
| Språk | Standard |
|---|---|
| Python | 4 blanksteg (PEP 8) |
| Rust | 4 blanksteg (rustfmt) |
| Markdown | 4 blanksteg (nästlade listor) |
| YAML | 2 blanksteg (tabbar är inte tillåtna) |
| JSON | 2 blanksteg |
| Go | tabbar (gofmt) |
| C / C++ | tabbar |
Varje annat språk bär medvetet ingen standard och följer din globala indragsinställning. Att byta ett dokuments språk för hand (menyn Språk) tillämpar den matchande standarden på nytt direkt.
Standarden bor i språkets definitionsfil
(colorizers/<id>.json, nyckeln "indent": { "style": "tabs|spaces", "width": N }).
En avancerad användare kan ändra en medföljande standard genom att lägga en
redigerad kopia av den filen i användarens åsidosättningsmapp — katalogen ersätter
definitioner efter id.
Planerat: åsidosättningar per språk i Inställningar
En inställningstabell för att åsidosätta dessa standardvärden per språk (utan att röra någon JSON) är utformad och planerad som nästa steg för den här funktionen; tills den kommer är JSON-åsidosättningen ovan och lagren nedan sätten att styra indraget.
Var indragsenheten kommer ifrån (företräde)¶
När flera källor har en åsikt om indraget löser redigeraren dem på ett ställe och tillämpar vinnaren, högsta företräde först:
- Projektets
.editorconfig— när den finns och «Tillämpa .editorconfig-inställningar» är på, vinner ett projektsindent_style/indent_size/tab_widthför matchande filer. - Språkets medföljande standard — tabellen ovan, när dokumentets språk deklarerar en.
- Din globala indragsinställning — valet Tabbar / Blanksteg / Automatiskt ovan.
Ett projekt som levererar en .editorconfig åsidosätter alltså allt för det
projektets filer; en Python-fil utanför ett sådant projekt dras in med PEP 8-
blanksteg även när din globala inställning är tabbar; och allt annat följer din
globala inställning. Du kan alltid ändra ett dokuments indrag för hand efteråt.
Företrädet gäller i samma stund något ändras: att tillämpa ett annat val Tabbar /
Blanksteg / Automatiskt i Inställningar löser om det öppna dokumentet direkt, så
att en fil som styrs av en .editorconfig eller en språkstandard behåller sitt
indrag utan att du behöver byta flik.
Flera markörer¶
Allt ovanstående gäller vid varje markör när du redigerar med
flera markörer: att skriva ( infogar () vid var och en,
Enter behåller varje rads indrag, och Backsteg mellan tomma par raderar båda
tecknen vid var och en. Ett enda Ångra återställer hela ändringen med flera
markörer i ett steg.
Backsteg vid blandade markörer
Backsteg raderar bara par när varje markör står mellan ett tomt par. Om några markörer står någon annanstans faller Backsteg tillbaka på sitt normala beteende vid dem alla, så den raderar aldrig en vilsen stängare vid en markör medan du redigerar ett ord vid en annan.
I kommentarer och strängar¶
När en syntax-colorizer är aktiv håller sig de automatiska paren och den
klammerstyrda blocköppningen undan inuti kommentarer och sträng- eller
teckenliteraler — där är ett { eller ett " vanlig text, inte kod, så
redigeraren lämnar det exakt som skrivet. Vanligt indrag (att föra med sig
föregående rads blanksteg) fungerar ändå. I ett dokument med ren text utan
colorizer finns inget att undertrycka, så paren beter sig likadant överallt.
Relaterat¶
- Insticksmodulen Indrag — inställningen för indragsstil och kommandona Öka/Minska.
- EditorConfig — indrag per projekt som åsidosätter din globala inställning.
- Redigering med flera markörer — att placera och redigera med flera markörer samtidigt.