Automatikus behúzás / formátum kód a Vim számára?

Igyekszem egyre többet használni a Vim-et, amikor csak tudom. Az egyik legnagyobb szorításom a Vim és egy IDE, például az Aptana között, az automatikus behúzás képessége .

Van-e valamilyen eszköz automatikus kódformázásra (HTML, CSS, PHP), így megfelelően behúzva?

Ha igen, hogyan telepítheti ezt a VIM-be? nagyon megértsd a beépülő modulokat. Megpróbáltam átnézni ezt a szálat, és ez jobban összezavart: Hogyan lehet megváltoztatni a vim automatikus behúzásának viselkedését?

Megjegyzések

  • Tudná tisztázni, hogy milyen nyelvet próbál behúzni? Arra számítok, hogy ha ‘ a vim már támogatja, akkor már minden további erőfeszítés nélkül automatikusan behúzódik. Ha nem, akkor be kell szereznie egy beépülő modult.
  • ideális esetben Html / css és php

Válasz

A teljes fájl automatikus behúzása:

gg =G 

Magyarázat:

Megjegyzések

  • Meg tudnád bontani? Mi általában g önmagában? és = G?
  • @Chris látja a szerkesztést
  • Szép tipp, ezt soha nem tudtam. A bash-val azonban szemetet végez.
  • Hogyan lehet a gg=G parancsot végrehajtani a shellből a fájl megnyitása nélkül?
  • @takeshin kérlek, magyarázd el sokkal tovább, be kell-e írnunk a fájlba, vagy a terminálban kell futtatnunk

Válasz

Nem tudok a létező kód automatikus formázásáról, de ha kódot írsz, és automatikus behúzásra van szükséged:

  • :set autoindent (vagy :set ai) bekapcsolja az automatikus behúzást
  • Ctrl d a behúzás visszavonásához (AKA outdent) a kódod
  • Tabulátor vagy szóköz a behúzáshoz – én személyesen használom a
  • :set tabwidth=4 (vagy ) szabályozza, hogy egy lap hány szóközt vezessen be a kódba.
  • A >> parancs behúzza az aktuális sort. Ha előtaggal egy számot, mondjuk 4>>, akkor 4 sort fog behúzni, kezdve az aktuális sorral.
  • Hasonlóképpen a A << parancs visszavonja a sor behúzását

Remélem, hogy ez jó kezdetet jelent.

Megjegyzések

  • A meglévő kód automatikus behúzásához használja a ={motion} elemet normál módban – pl. =G behúzza az összes kódot az aktuális sortól a fájl végéig. == behúzza az aktuális sort.
  • győződjön meg arról is, hogy a behúzott beépülő modulok betöltődnek-e (pl. :filetype indent on)
  • set tw = 4 a TEXTWIDTH értéket 4-re állítja

Válasz

Automatikus behúzás *.sh

Csak adja hozzá a következő sorokat a ~/.vimrc

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

Megjegyzések

  • Ez csak a vim vagy az összes szerkesztő eszközzel történő szerkesztésre vonatkozik?
  • ~./vimrc csak a vim editorra vonatkozik.

Válasz

Ez a bővítmény megkönnyíti a kód formázását . Integrálja a külső formázókat, és van egy tartaléka a vim behúzási funkcióinak.

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

Figyelje meg a formázás és a behúzás közötti különbséget is. A behúzás csak minden sor előtt korrigálja a szóközt, míg a formázás más dolgokkal is foglalkozik, például az operátorok körüli szóközzel stb.

Válasz

Hozza létre / szerkessze a ~/.vimrc fájlt, és adja hozzá a következő sort:

set autoindent 

Megjegyzések

  • Ez nem ad semmit a meglévő válaszokhoz …
  • @jasonwryan Valójában Hai Vu A ‘ s válaszok megemlítik a :set autoindent elemeket, amelyek csak az aktuális fájl engedélyezéséhez engedélyezik az automatikus behúzást. A / div> fájl véglegesen engedélyezi az automatikus behúzást.
  • megjegyzésedet Rahul ‘ válasza már említi, ezért gondold át a közzététel előtt

Válasz

vim automatikus formázása / behúzása nagyon jól működik. Először tegye ezt a sort a ~/.vimrc mezőbe:

filetype plugin indent on 

Ezután nyisson meg egy fájlt a vim-ben, és írja be a gg=G

(gg áthelyezi a kurzort az első sorra. = futtatja a behúzási parancs. G utasítja a behúzási parancsot, hogy innen fusson az utolsó sorig.)

Ha az automatikus formátum nagyon rosszul néz ki, mint minden sor csak behúzott, akkor futtassa a :scriptnames parancsot, és ellenőrizze, hogy a .../indent/html.vim (vagy bármelyik használt nyelv) szerepel a listában. Ha nem, akkor ellenőrizze, hogy a ~/.vimrc megfelelő-e. Vagy ha a következőt futtatta: :filetype plugin indent on a vim parancssorból újra meg kell nyitnia a :e

Válasz

A bash szkript újratervezéséhez a javasolt gg = G megoldás nem működik jól a VIM-ben, függetlenül attól, hogy a parancsfájlt héj típusúnak állította be. Ehelyett ez működik;

shfmt -i 2 -ci script.sh

Az összes sor 2 szóközzel történő azonosításához és az egyébként megfelelő formázáshoz.

Válasz

A bash-ban ezt csinálom:

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

ez kiküszöböli a megjegyzéseket, és újból megjeleníti a “bash way” szkriptet. akkor működjön, ha a szkript HEREDOCS-ot tartalmaz, de ha ezt teszi:

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

bármelyik szkriptmel működik, de az egész szkriptet 4 szóköz fogja behúzni. nyugodtan módosíts, de idézd meg a nevemet a szkriptben, és tedd fel! : D

megjegyzések

  • úgy gondolom, hogy ez hiányozhat a kérdés lényege; Vonalak behúzása helyett úgy vélem, hogy az OP a VIM-en belül különféle nyelveken kívánt volna automatikusan behúzódni. Félretéve ezt talán egy kicsit közvetlenebben elérheti a sed segítségével, ha úgy kívánja: cat script_to_be_reindented.sh | sed 's#^# #g' (er, nos, A SO jelöléssel a szóközöket tabulátorral helyettesíti, de a lényeg megvan)
  • Ez a válasz csak annyit tesz, hogy szóközöket illeszt a sor elé, és visszaállítja az összes igazítást. Ugyanez (kivéve a jelölést) megtehető a sed -i 's|^[ \t]\+| |' script.sh (azaz 4 szóköz a | | belül, de ez a webhely több szóközt egybe szűr) .

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük