Staram się używać Vima coraz częściej, kiedy mogę. Jednym z moich największych chwytów między Vimem a IDE, takim jak Aptana, jest możliwość automatycznego wcięcia.
Czy istnieje sposób automatycznego formatowania kodu (HTML, CSS, PHP), aby był odpowiednio wcięty?
Jeśli tak, to jak to zainstalować w vimie? Nie bardzo rozumiem wtyczek. Próbowałem przejrzeć ten wątek i bardziej mnie to pomieszało: jak zmienić zachowanie automatycznego wcięcia w vimie?
Odpowiedzi:
Aby automatycznie wciąć cały plik:
Wyjaśnił:
gg
- przejdź do początku plikuG
- idź na koniec pliku=
- tiretźródło
gg=G
z powłoki bez otwierania pliku?Nie wiem o automatycznym formatowaniu istniejącego kodu, ale jeśli piszesz kod i potrzebujesz automatycznego wcięcia:
:set autoindent
(lub:set ai
) włączy automatyczne wcięcie:set tabwidth=4
(lub:set tw=4
) kontroluje, o ile spacji tabulator powinien wciąć kod>>
Polecenie wcięcie bieżącej linii. Jeśli poprzedzisz go liczbą, powiedzmy,4>>
że spowoduje wcięcie 4 linii, zaczynając od bieżącej linii.<<
polecenie spowoduje cofnięcie wcięcia liniiMam nadzieję, że to dobry początek.
źródło
={motion}
w trybie normalnym - np.=G
Spowoduje wcięcie całego kodu od bieżącego wiersza do końca pliku.==
spowoduje wcięcie bieżącej linii.:filetype indent on
)Automatyczne wcięcie
*.sh
Po prostu dodaj następujące wiersze
~/.vimrc
źródło
~./vimrc
dotyczy tylko edytora vim.Ta wtyczka ułatwia formatowanie kodu. Integruje zewnętrzne formatery i zastępuje funkcjonalność wcięć vima.
https://github.com/Chiel92/vim-autoformat
Zauważ też różnicę między formatowaniem a wcięciem. Wcięcie koryguje tylko białe znaki przed każdą linią, podczas gdy formatowanie dotyczy również wszelkich innych rzeczy, takich jak białe znaki wokół operatorów itp.
źródło
Utwórz / edytuj
~/.vimrc
plik i dodaj następujący wiersz:źródło
:set autoindent
która umożliwia automatyczne wcięcie tylko dla bieżącego pliku. Dodanie go do.vimrc
pliku umożliwia automatyczne wcięcie na stałe.W bash robię to:
eliminuje to komentarze i odradza skrypt „bash way”. nie będzie działać, jeśli skrypt zawiera HEREDOCS, ale jeśli to zrobisz:
będzie działać z każdym skryptem, ale cały skrypt będzie wcięty o 4 spacje. nie krępuj się modyfikować, ale podaj moje imię i nazwisko w swoim skrypcie! :RE
źródło
sed
cat script_to_be_reindented.sh | sed 's#^# #g'
Autoformatowanie / wcięcie vima działa całkiem dobrze. Najpierw umieść tę linię w swoim
~/.vimrc
:Następnie otwórz plik w vimie i wpisz
gg=G
(
gg
przesuwa kursor do pierwszego wiersza.=
uruchamia polecenie wcięcia.G
mówi polecenie wcięcia, aby uruchomiło się z tego miejsca do ostatniego wiersza.)Jeśli autoformatowanie wygląda naprawdę źle, tak jakby każdy wiersz został po prostu wcięty, uruchom
:scriptnames
i sprawdź, czy.../indent/html.vim
(lub w jakim języku używasz) jest na liście. Jeśli nie, upewnij się, że masz~/.vimrc
rację. Lub jeśli uruchomiłeś:filetype plugin indent on
z linii poleceń vim, będziesz musiał ponownie otworzyć plik:e
źródło