Automaattinen sisennys / muotoilukoodi Vimille?

Yritän käyttää Vimiä yhä enemmän, kun pystyn. Yksi suurimmista otteistani Vimin ja Aptanan kaltaisen IDE: n välillä on kyky tehdä automaattinen sisennys .

Onko koodilla automaattinen muotoilukeino (HTML, CSS, PHP), joten se on oikein sisennetty?

Jos näin on, kuinka asennat tämän VIM: ään? ymmärrä laajennuksia paljon. Yritin tarkistaa tätä säiettä ja se hämmentää minua enemmän: Kuinka muuttaa VIM: n automaattisen sisennyksen käyttäytymistä?

Kommentit

  • Voisitteko selventää mitä kieltä yritätte tehdä sisennykseen? Odotan, että jos sitä ’ tukee jo vim, sen pitäisi olla jo automaattinen, ilman lisätoimia. Jos ei, sinun pitäisi pystyä hankkimaan laajennus.
  • mieluiten HTML / css ja php

Vastaa

Koko tiedoston sisennys automaattisesti:

gg =G 

Selitetty:

  • gg – siirry tiedoston alkuun
  • G – siirry tiedoston loppuun
  • = luetelmakohta

kommentit

  • Voisitko hajottaa sen? Mikä on g tyypillisesti itsessään? ja = G?
  • @Chris näkee muokkauksen
  • Hieno vihje, en koskaan tiennyt tätä. Se tekee kuitenkin roskaa bashilla.
  • Kuinka gg=G suoritetaan komentotulkista avaamatta tiedostoa?
  • @takeshin selitä se paljon tarkemmin, onko meidän kirjoitettava se tiedostoon vai suoritetaanko se terminaalissa

vastaus

En tiedä olemassa olevan koodin automaattista muotoilua, mutta jos kirjoitat koodia ja tarvitset automaattista sisennystä:

  • :set autoindent (tai :set ai) ottaa automaattisen sisennyksen käyttöön
  • Ctrl d poistamaan sisennyksen (AKA outdent) koodisi
  • Sarkain tai välilyönnit sisennykseen – käytän henkilökohtaisesti sarkainta
  • :set tabwidth=4 (tai :set tw=4) ohjaa, kuinka monta välilyöntiä välilehden tulisi sisentää koodi
  • >> -komento sisentää nykyisen rivin. Jos lisäät sen etuliitteeseen luku, sano 4>>, niin se sisennyttää 4 riviä nykyisestä rivistä alkaen.
  • Samoin << -komento poistaa rivin sisennyksen

Toivon, että tämä antaa sinulle hyvän alun.

Kommentit

  • Sisällytä olemassa oleva koodi automaattisesti käyttämällä ={motion} normaalitilassa – esim. =G sisentää kaikki koodit nykyiseltä riviltä tiedoston loppuun. == sisentää nykyisen rivin.
  • varmista myös, että luetelmakohdelaajennuksia ladataan (esim. :filetype indent on)
  • set tw = 4 asettaa TEXTWIDTH-arvoksi 4

Vastaa

Automaattinen sisennys *.sh

Lisää vain seuraavat rivit kohtaan ~/.vimrc

filetype indent on set smartindent autocmd BufRead,BufWritePre *.sh normal gg=G 

Kommentit

  • Koskeeko tämä vain muokkausta vimillä tai kaikilla muokkaustyökaluilla?
  • ~./vimrc koskee vain VIM-editoria.

Vastaa

Tämä laajennus helpottaa koodin muotoilua . Se integroi ulkoiset muotoilijat ja sisältää vim-luetelmakohdan toiminnot.

https://github.com/Chiel92/vim-autoformat

Huomaa myös muotoilun ja sisennyksen välinen ero. Sisentäminen korjaa vain välilyönnin ennen jokaista riviä, kun taas muotoilu käsittelee myös muita asioita, kuten välilyöntejä operaattoreiden ympärillä jne.

Vastaa

Luo / muokkaa ~/.vimrc -tiedostoa ja lisää seuraava rivi:

set autoindent 

Kommentit

  • Tämä ei lisää mitään olemassa oleviin vastauksiin …
  • @jasonwryan Oikeastaan Hai Vu ’ vastauksessa mainitaan :set autoindent, joka sallii automaattisen sisennyksen vain nykyiselle tiedostolle. Lisää se kohtaan .vimrc -tiedosto sallii automaattisen sisennyksen pysyvästi.
  • Rahul ’ -vastaus on jo maininnut kommenttisi, joten ajattele ennen julkaisua

Vastaus

vimin automaattinen muotoilu / sisennys toimii melko hyvin. Laita tämä rivi ensin ~/.vimrc -kansioon:

filetype plugin indent on 

Avaa sitten tiedosto vimissä ja kirjoita gg=G

(gg siirtää kohdistimen ensimmäiselle riville. = suorittaa sisennyskomento. G käskee sisennyskomentoa suorittamaan täältä viimeiselle riville.)

Jos automaattinen muotoilu näyttää todella huonolta, kuten jokainen rivi on vain jätetty sisennykseen, suorita :scriptnames ja tarkista, onko .../indent/html.vim (tai mikä tahansa käyttämäsi kieli) on luettelossa. Jos ei, varmista, että ~/.vimrc on oikein. Tai jos suoritit :filetype plugin indent on vim-komentoriviltä, sinun on avattava tiedosto uudelleen :e

Vastaus

Jos haluat tehdä bash-komentosarjan uudelleen, ehdotettu gg = G-ratkaisu ei toimi hyvin VIM: ssä riippumatta siitä, asetatko komentosarjan shell-tyyppiseksi. Sen sijaan tämä toimii;

shfmt -i 2 -ci script.sh

Tunnistaa kaikki rivit 2 välilyönnillä ja korjata muuten muotoilu.

Vastaa

Bashissa teen tämän:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}") declare -f Zibri| cut -c 5-|head --lines=-1|tail --lines=+3 

tämä eliminoi kommentit ja lisää komentosarjan ”bash way” uudelleen. se ei toimi, jos komentosarja sisältää HEREDOCS-tiedostoja, mutta jos teet tämän:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}") declare -f Zibri|head --lines=-1|tail --lines=+3 

se toimii minkä tahansa käsikirjoituksen kanssa, mutta koko komentosarja sisennetään 4 välilyönnillä. voit vapaasti muokata, mutta mainitse nimeni komentosarjassa ja lähetä se! : D

kommentit

  • Uskon, että kysymyksestä voi puuttua asia; Uskon, että OP halusi sisäviivata joukkoa viivoja, mutta se halusi automaattisen sisennyksen VIM: ssä useilla kielillä. Sivumainoksena saatat pystyä saavuttamaan tämän hieman suoremmin sed -toiminnolla, jos haluat: cat script_to_be_reindented.sh | sed 's#^# #g' (er, no, SO-merkintä korvaa välilyönnit sarkaimella, mutta saat asian)
  • Kaikki tämä vastaus on lisätä välilyöntejä rivin eteen ja nollata kaikki kohdistukset. Sama (lukuun ottamatta merkintöjä) voidaan tehdä sed -i 's|^[ \t]\+| |' script.sh (eli 4 välilyöntiä | | sisällä, mutta tämä verkkosivusto suodattaa useita välilyöntejä yhdeksi) .

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *