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, sano4>>
, 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) .