Hyppää sisältöön

Automaattiset parit ja älykäs sisennys

Kirjoittaessasi editori sulkee sulkeet ja lainausmerkit puolestasi, säilyttää sisennyksesi uusilla riveillä, avaa lohkot aaltosulkeiden väliin ja käyttää yhtä johdonmukaista sisennysyksikköä sekä Tab-näppäimeen, Backspacen sisennyksen purkuun että automaattiseen sisennykseen. Kaikki tämä on editorin sisäänrakennettu ominaisuus; vastaavat valikkokomennot ja sisennystyylin asetus tulevat mukana tulevasta Sisennys-liitännäisestä.

Sen on tarkoitus olla näkymätön — se toimii vain juuri kirjoittamasi merkin kohdalla ja vetäytyy sivuun kaikkialla, missä se olisi tiellä (kommenttien ja merkkijonojen sisällä, olemassa olevien sanojen edessä, väärän parimerkin kanssa).

Sulkeiden ja lainausmerkkien automaattinen pariuttaminen

Avaavan sulkeen tai lainausmerkin kirjoittaminen lisää sen parin ja jättää kohdistimen näiden kahden väliin:

Kirjoitat Saat Kohdistin
( () välissä
[ [] välissä
{ {} välissä
" "" välissä
' '' välissä

Muutamat säännöt estävät tätä olemasta ärsyttävä:

  • Ylikirjoitus. Sulkevan merkin kirjoittaminen, kun sama merkki on jo kohdistimen oikealla puolella, astuu sen yli sen sijaan että lisäisi toisen — joten suoraan ()- tai ""-parin läpi kirjoittaminen jättää yhden, tasapainoisen parin.
  • Ei pariuttamista sanan edessä. Avaaja täydennetään vain, kun seuraava merkki on tyhjemerkki, sulkeva merkki tai rivin loppu — joten (-merkin lisääminen juuri olemassa olevan tekstin eteen ei ammu irrallista )-merkkiä sen keskelle.
  • Heittomerkin tunnistavat lainausmerkit. Heti kirjaimen jälkeen kirjoitettua '-merkkiä (kuten sanassa don't) käsitellään heittomerkkinä eikä sitä pariuteta. Lainausmerkit pariutuvat itsestään vain neutraalissa yhteydessä (elementin alussa, tyhjemerkin tai operaattorin jälkeen).
  • Kulmasulkeet vain merkkauskielissä. < … > pariutuvat vain HTML- ja XML-asiakirjoissa, joissa < avaa tagin. Kaikkialla muualla < on vertailu- tai siirto-operaattori ja jätetään rauhaan.

Valinnan ympäröiminen (kirjoita ympäröidäksesi)

Kun tekstiä on valittuna, avaajan kirjoittaminen ei korvaa valintaa — se ympäröi sen:

select value  then type (        →   (value)
  • Toimii merkeillä ( [ { " ' (ei < — merkkauskielten ulkopuolella se on operaattori).
  • Sisäteksti pysyy valittuna jälkeenpäin, joten ympäröinnit ketjuuntuvat: kirjoita ( ja sitten ", niin saat ("value").
  • Useilla kohdistimilla jokainen valinta ympäröidään erikseen — ja koko toimenpide on yksi kumoamisaskel.

Parin poistaminen

Backspacen painaminen kohdistimen ollessa tyhjän, automaattisesti lisätyn parin välissä ((|), [|], {|}, "|", '|' tai <|> merkkauskielissä) poistaa molemmat merkit yhdessä askeleessa, joten voit kumota automaattisen parin yhdellä näppäinpainalluksella. Kun parin välissä on sisältöä, Backspace toimii tavalliseen tapaan.

Älykäs sisennys Enterillä

Enterin painaminen vie nykyisen rivin alun tyhjemerkit uudelle riville, joten pysyt samalla syvyydellä kirjoittamatta sarkaimia tai välilyöntejä uudelleen:

  • Säilytä sisennys. Uusi rivi alkaa samalla sisennyksellä kuin rivi, jonka jätit.
  • Avaa yksi taso. Jos rivi, jonka jätit, päättyy avaajaan ({, [, (), uusi rivi sisennetään yhden lisätason verran.
  • Avaa lohko. Jos kohdistin on avaajan ja sitä vastaavan sulkijan välissä, lohko avautuu: uusi rivi sisennetään yhden tason syvemmälle ja sulkija putoaa omalle rivilleen avaajan syvyydelle.
if (cond) {|}        Enter        if (cond) {
                     ───────►          |
                                   }

Sisennystyyli — sarkaimet, välilyönnit tai automaattinen

Yksi sisennysyksikkö ohjaa Tab-näppäintä, Backspacen sisennyksen purkua ja yllä kuvattua automaattista sisennystä, joten ne ovat aina yhtä mieltä. Valitse se kohdassa Asetukset ▸ Liitännäiset ▸ Sisennys:

Tyyli Käyttäytyminen
Sarkaimet (oletus uusille tiedostoille) Yksi taso on todellinen sarkainmerkki; Välilyöntejä sisennystä kohden asettaa sen näkyvän leveyden.
Välilyönnit Yksi taso on Välilyöntejä sisennystä kohti välilyöntimerkkiä.
Automaattinen (tunnista asiakirjasta) Editori tutkii asiakirjan olemassa olevaa sisennystä ja noudattaa sitä — sarkaimilla sisennetty tiedosto käyttää edelleen sarkaimia, kahden välilyönnin tiedosto käyttää edelleen kahta välilyöntiä. Tiedosto, jossa ei vielä ole sisennystä, turvautuu oletukseen (sarkaimiin).

Uudet, nimettömät tiedostot käyttävät oletuksena sarkaimia, leveys 4.

Sisennyksen säätäminen käsin

Sisennys-liitännäinen lisää kaksi komentoa (myös kohdassa Muokkaa ▸ Sisennys), jotka sisentävät tai purkavat sisennystä jokaiselta riviltä, johon valinta koskee — tai kohdistimen riviltä, kun mitään ei ole valittuna:

Komento Pikanäppäin
Lisää sisennystä Ctrl+]
Vähennä sisennystä Ctrl+[

Koodilohkon liittäminen

Kopioi muutama rivi, joilla on oma sisennyksensä — vaikkapa kolme riviä, joista kukin alkaa kahdellatoista välilyönnillä — ja liitä ne sisennetyn kohdistimen kohdalle. Sellaisenaan liitettynä ensimmäinen rivi päätyisi sinun sisennykseesi plus lohkon kaksitoista välilyöntiä (kauas oikealle) ja jokainen seuraava rivi sarakkeeseen 0 plus kaksitoista, ja saisit sisentää koko jutun uudelleen käsin.

OctoEdit sisentää lohkon puolestasi uudelleen: lohkon riveille yhteinen sisennys poistetaan, ensimmäinen rivi päätyy sinne, missä kohdistin jo on, ja jokainen seuraava rivi saa kohdistinrivin sisennyksen plus sen sisennyksen, joka sillä oli lohkon sisällä. Lohkon sisäinen rakenne säilyy täsmälleen; sarkaimet pysyvät sarkaimina ja välilyönnit välilyönteinä.

Vain alun sisennys korvataan: lohko säilyttää omat sisennysmerkkinsä, joten välilyönneillä sisennetty lohko, joka liitetään sarkaimilla sisennettyyn asiakirjaan, pysyy sisältä välilyönneillä sisennettynä. Lohkon sisäisen sisennyksen muuntaminen asiakirjan tyyliin on mahdollinen tuleva valinta — editori ei tee sitä tänään.

Tämä koskee vain liittämistä, joka on yksiselitteisesti lohko:

  • leikepöydällä on useampi kuin yksi rivi;
  • kohdistimia on yksi eikä suorakulmaista (sarake)valintaa ole;
  • rivin alun ja kohdistimen välissä on pelkkiä tyhjemerkkejä — keskelle riviä liittäminen on jatkos, ja se jätetään sellaisenaan.

Kaikki muu liitetään täsmälleen kuten ennenkin. Koko liittäminen on yksi Kumoa-askel, ja valinta korvataan tavalliseen tapaan.

Kytke se pois valinnalla Sisennä liitetyt rivit kohdistimen sisennyksen mukaan kohdassa Asetukset ▸ Liitännäiset ▸ Sisennys (oletuksena päällä).

Liitä Markdownina (Ctrl+Shift+V) kulkee saman säännön läpi. Muunnettu teksti on lohko, joka alkaa sarakkeesta 0 ja jonka sisäkkäiset luettelon kohdat on sisennetty suhteessa siihen, joten sisennetyn kohdistimen kohdalla jokainen rivi saa kohdistimen sisennyksen ja sisäkkäisyys säilyy täsmälleen. Mitä komento tekee, kerrotaan kohdassa Muokkaaminen.

Kielikohtaiset oletukset

Joillakin kielillä on yksi lähes yleismaailmallinen sisennyskäytäntö, ja editori toimittaa sen kyseisen kielen oletuksena — juuri avattu tuon tyypin tiedosto sisentyy oikein ilman mitään asetuksia:

Kieli Oletus
Python 4 välilyöntiä (PEP 8)
Rust 4 välilyöntiä (rustfmt)
Markdown 4 välilyöntiä (sisäkkäiset luettelot)
YAML 2 välilyöntiä (sarkaimet eivät ole sallittuja)
JSON 2 välilyöntiä
Go sarkaimet (gofmt)
C / C++ sarkaimet

Jokainen muu kieli on tarkoituksella ilman oletusta ja noudattaa yleistä sisennysasetustasi. Asiakirjan kielen vaihtaminen käsin (Kieli-valikko) ottaa vastaavan oletuksen käyttöön heti.

Oletus sijaitsee kielen määritystiedostossa (colorizers/<id>.json, avain "indent": { "style": "tabs|spaces", "width": N }). Kokenut käyttäjä voi muuttaa mukana tulevaa oletusta sijoittamalla muokatun kopion tuosta tiedostosta käyttäjän ohituskansioon — luettelo korvaa määritykset tunnisteen perusteella.

Suunnitteilla: kielikohtaiset ohitukset asetuksissa

Asetustaulukko näiden oletusten ohittamiseen kielikohtaisesti (koskematta mihinkään JSONiin) on suunniteltu ja aiottu tämän ominaisuuden seuraavaksi askeleeksi; kunnes se saapuu, yllä oleva JSON-ohitus ja alla olevat kerrokset ovat tavat ohjata sisennystä.

Mistä sisennysyksikkö tulee (etusijajärjestys)

Kun useilla lähteillä on mielipide sisennyksestä, editori ratkaisee ne yhdessä paikassa ja ottaa voittajan käyttöön, korkein etusija ensin:

  1. Projektin .editorconfig — kun sellainen on ja »Ota .editorconfig-asetukset käyttöön« on päällä, projektin indent_style, indent_size ja tab_width voittavat sopivien tiedostojen kohdalla.
  2. Kielen mukana tuleva oletus — yllä oleva taulukko, kun asiakirjan kieli ilmoittaa sellaisen.
  3. Yleinen sisennysasetuksesi — yllä oleva valinta sarkainten, välilyöntien ja automaattisen välillä.

Niinpä projekti, joka toimittaa .editorconfig-tiedoston, ohittaa kaiken kyseisen projektin tiedostojen osalta; tällaisen projektin ulkopuolinen Python-tiedosto sisentyy PEP 8:n välilyönneillä, vaikka yleinen asetuksesi olisi sarkaimet; ja kaikki muu noudattaa yleistä asetustasi. Voit aina muuttaa asiakirjan sisennystä käsin jälkeenpäin.

Etusijajärjestys pätee siitä hetkestä, kun jokin muuttuu: toisen sarkain-, välilyönti- tai automaattivalinnan käyttöönotto asetuksissa ratkaisee avoimen asiakirjan heti uudelleen, joten .editorconfig-tiedoston tai kielioletuksen ohjaama tiedosto säilyttää sisennyksensä ilman että sinun täytyy vaihtaa välilehteä.

Useat kohdistimet

Kaikki yllä oleva pätee jokaisen kohdistimen kohdalla, kun muokkaat useilla kohdistimilla: (-merkin kirjoittaminen lisää () jokaiseen, Enter säilyttää kunkin rivin sisennyksen, ja Backspace tyhjien parien välissä poistaa kummankin merkin jokaisessa. Yksi Kumoa peruu koko monikohdistinmuokkauksen yhdessä askeleessa.

Backspace, kun kohdistimet ovat eri tiloissa

Backspace poistaa pareja vain, kun jokainen kohdistin on tyhjän parin välissä. Jos osa kohdistimista on muualla, Backspace turvautuu tavalliseen käyttäytymiseensä niissä kaikissa, joten se ei koskaan poista irrallista sulkijaa yhden kohdistimen kohdalta samalla kun toisen kohdalla muokataan sanaa.

Kommenteissa ja merkkijonoissa

Kun syntaksivärjääjä on aktiivinen, automaattinen pariuttaminen ja aaltosulkeen ohjaama lohkon avaus vetäytyvät sivuun kommenttien sekä merkkijono- ja merkkiliteraalien sisällä — siellä { tai " on tavallista tekstiä eikä koodia, joten editori jättää sen täsmälleen niin kuin se kirjoitettiin. Tavallinen sisennys (edellisen rivin tyhjemerkkien mukanaan vieminen) toimii silti. Tavallisessa tekstiasiakirjassa, jossa ei ole värjääjää, ei ole mitään vaimennettavaa, joten pariuttaminen toimii kaikkialla samalla tavalla.

Aiheeseen liittyvää