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:
-
gg– lépjen a fájl elejére -
G– lépjen a fájl végére -
=– francia bekezdés
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=Gparancsot 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, mondjuk4>>, 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.=Gbehú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?
-
~./vimrccsak 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 autoindentelemeket, 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
sedsegí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) .