Jakim poleceniem w Vimie jest poprawienie wcięcia wszystkich linii?
Często kopiuję i wklejam kod do zdalnego terminala i wszystko popsuję. Chcę to naprawić za jednym zamachem.
vim
vi
indentation
mmcdole
źródło
źródło
Odpowiedzi:
=
polecenie wcięcia może wykonywać ruchy. Tak,gg
aby uzyskać początku pliku,=
do tiret,G
do końca plikugg=G
.źródło
''
(dwa pojedyncze cytaty) zabiera cię z powrotem do miejsca, w którym byłeś, więcgg=G''
powinieneś wciąć, a następnie wrócić.Przed wklejeniem do terminala spróbuj,
:set paste
a następnie:set nopaste
po zakończeniu. Spowoduje to wyłączenie automatycznego wcięcia, zawijania linii i innych funkcji, które psują wklejanie.edit: Powinienem również
=
zauważyć , że znacznie lepszy wynik niż wcięcie można zwykle uzyskać za pomocą zewnętrznego programu. Na przykład biegam:%!perltidy
cały czas.astyle
,cindent
itp. można również użyć. I oczywiście można mapować je na naciśnięcie klawisza i mapować różne na to samo naciśnięcie klawisza, w zależności od typu pliku.źródło
equalprg
opcję we wtyczce ftpl, aby użyć=
wcięcia zewnętrznego filtra zamiast wcięcia klawisza.formatpgm
z porządkiem i astyle, a potemgq
. Oto kilka przykładów z mojego.vimrc
:au FileType xml set fp=tidy\ -q\ -i\ -xml
iau FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
Jeśli chcesz ponownie wprowadzić blok, w którym się znajdujesz, bez konieczności wpisywania żadnych akordów, możesz:
źródło
=aB
który w ogóle nie porusza kursorem.[[=]]
wymaga 5 akordów :(Panem wszystkich poleceń jest
gg=G
To wcina cały plik!
Poniżej znajdują się niektóre z prostych i eleganckich poleceń używanych do szybkiego wcięcia linii w Vimie lub gVimie.
Wcięcie wszystkich linii poniżej bieżącej linii
Wcięcie bieżącej linii
Wcięcie
n
linii poniżej bieżącej liniiNa przykład, aby wciąć 4 linie poniżej bieżącej linii
Aby wciąć blok kodu, przejdź do jednego z nawiasów klamrowych i użyj polecenia
źródło
Do wcięcia plików HTML i XML można użyć schludnej aplikacji / narzędzia, a wcięcie tych plików działa całkiem dobrze.
Prettify plik XML
Prettify plik HTML
źródło
naciśnij klawisz Escape, a następnie szybko wpisz poniższe kombinacje:
źródło
1G=G
. To powinno wciąć wszystkie wiersze w pliku.1G
zabierze Cię do pierwszego wiersza,=
rozpocznie automatyczne wcięcie, a ostatniG
zabierze Cię do ostatniego wiersza w pliku.źródło
1gg=G
:set paste
jest twoim przyjacielem, używam szpachli i ostatecznie kopiuję kod między oknami. Zanim został włączony do:set paste
(i:set nopaste
) copy / paste dał mi pasuje do tego samego powodu.źródło
W Vimie użyj
:insert
. Spowoduje to zachowanie całego formatowania i nie spowoduje automatycznego wcięcia. Aby uzyskać więcej informacjihelp :insert
.źródło
jeśli nie chcesz używać
:set paste
, kliknij środkowym przyciskiem myszy,set nopaste
możesz także wkleić zawartość schowka:W ten sposób nie musisz wychodzić z trybu normalnego. jeśli musisz wkleić
+
lub*
zależy od tego, jak zaznaczyłeś tekst, zobacz:help quoteplus
.źródło
vim-autoformat formatuje pliki źródłowe przy użyciu zewnętrznych programów specyficznych dla twojego języka, np. klejnot „rbeautify” dla plików Ruby, pakiet npm „js-beautify” dla JavaScript.
źródło
W przypadku złożonych plików C ++ vim nie zawsze poprawnie formatuje podczas używania
=
polecenia filter w vimie . Dlatego w takich sytuacjach lepiej jest użyć zewnętrznego formatera C ++, takiego jak astyle (lub unrustify ), np .:Funkcja „=” Vima domyślnie korzysta z wewnętrznego formatera (który nie zawsze działa prawidłowo), ale można go również ustawić za pomocą zewnętrznego formatera, takiego jak astyle, ustawiając go odpowiednio, jak omówiono w tym pytaniu .
źródło
W przypadku plików XML używam tego polecenia
Musisz mieć zainstalowany xmllint (pakiet libxml2-utils)
(Źródło: http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )
źródło
Aby to zrobić, możesz utworzyć mapowanie.
Ten automatycznie wcina cały plik i nadal utrzymuje kursor w pozycji, w której się znajdujesz:
źródło
W przypadku edytora vi użyj: insert. Spowoduje to zachowanie całego formatowania i nie wstawi automatycznego wcięcia. Po zakończeniu naciśnij klawisz Escape, aby wyświetlić rzeczywisty sformatowany plik, w przeciwnym razie zobaczysz kilka śmieci. jak ^ ja np .:
źródło
Po prostu przejdź do trybu wizualnego w vimie i wybierz z linii od góry do dołu po wybraniu po prostu naciśnij =, Wszystkie wybrane linie zostaną wcięte.
źródło
ggvG=
kiedy możeszgg=G
. Jaki był sens uwidocznienia ruchu? Dotyczy to wszystkich działań, które podejmują ruchy.