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