Jak naprawić wcięcia całego pliku w Vi?
W Vimie, jakie jest polecenie poprawiające wcięcia wszystkich linii?
Często kopiuję i wklejam kod do zdalnego terminala i wszystko się popsuło. Chcę to naprawić za jednym zamachem.
16 answers
=
, polecenie wcięcia może przyjmować ruchy. Tak więc, gg
Aby uzyskać początek pliku, =
do wcięcia, G
do końca pliku, gg=G
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-01 03:05:22
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ż zaznaczyć, że znacznie lepszy wynik niż =
wcięcia można zwykle uzyskać za pomocą zewnętrznego programu. Na przykład, biegam :%!perltidy
cały czas. astyle
, cindent
, itd. może być również używany. Oczywiście możesz odwzorować je na obrys klawisza i odwzorować różne na to samo naciśnięcie klawisza w zależności od typu pliku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-29 19:56:26
Mistrzem wszystkich poleceń jest
gg=G
To wcięło cały plik!
I poniżej kilka prostych i eleganckich poleceń używanych do szybkiego wcinania linii w Vim lub gVim.
Aby wciąć wszystkie linie poniżej bieżącej linii
=G
Aby wciąć bieżący wiersz
==
To indent n
wiersze poniżej bieżącego wiersza
n==
Na przykład, aby wciąć 4 linie poniżej bieżącego wiersza
4==
Aby wciąć blok kodu, przejdź do jeden z szelek i użyj polecenia
=%
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-14 06:39:54
Jeśli chcesz reindentować blok, w którym się znajdujesz, bez konieczności wpisywania żadnych akordów, możesz to zrobić:
[[=]]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-02 03:44:55
Możesz użyć tidy application / utility, aby wciąć pliki HTML i XML i działa całkiem dobrze w wcięciach tych plików.
Utwórz plik XML
:!tidy -mi -xml %
Utwórz plik HTML
:!tidy -mi -html %
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-01 03:06:37
Naciśnij escape, a następnie wpisz poniżej kombinacje szybko:
gg=G
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-02 13:22:19
1G=G
. Powinno to wcięć wszystkie linie w pliku. 1G
pobierze pierwszą linię, =
uruchomi automatyczne wcięcie, a ostatnia G
przeniesie ostatnią linię w pliku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-01 03:05:53
Jeśli nie chcesz używać :set paste
, Kliknij środkowym przyciskiem myszy, set nopaste
, Możesz również wkleić zawartość schowka:
"*p
"+p
W ten sposób nie musisz opuszczać normalnego trybu.
jeśli musisz wkleić +
lub *
zależy od tego, jak zaznaczyłeś tekst, zobacz :help quoteplus
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-21 22:05:47
:set paste
Czy twój przyjaciel używam putty i kończy się kopiowanie kodu między oknami. Zanim zostałem włączony do :set paste
(i :set nopaste
) kopiuj / wklej dał mi pasuje właśnie z tego powodu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-01 03:06:16
W Vim, użyj :insert
. Spowoduje to zachowanie całego formatowania i nie spowoduje autoindentowania. Więcej informacji help :insert
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-03 05:44:14
Vim-autoformat formatuje pliki źródłowe za pomocą zewnętrznych programów specyficznych dla Twojego języka, np. gem" rbeautify "dla plików Ruby, pakiet" js-beautify " npm dla JavaScript.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-29 19:57:57
Dla złożonych plików C++ vim nie zawsze uzyskuje poprawne formatowanie przy użyciu polecenia =
filter Vima. Dlatego w takich sytuacjach lepiej jest użyć zewnętrznego formatera C++ jak astyle (lub uncrustify) np.:
:%!astyle
Funkcja Vima '=' domyślnie używa swojego wewnętrznego formatera (co nie zawsze robi to dobrze), ale można również ustawić go za pomocą zewnętrznego formatera, takiego jak astyle, ustawiając go odpowiednio, jak omówiono w to pytanie .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:54
Dla plików XML, używam tego polecenia
:1,$!xmllint --format --recover - 2>/dev/null
Musisz mieć zainstalowany xmllint (pakiet libxml2-utils)
(Źródło: http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-26 10:16:45
Możesz utworzyć mapowanie, aby to zrobić za Ciebie.
Ten automatycznie wcięje cały plik i utrzyma kursor w pozycji, w której się znajdujesz:
nmap <leader>ai mzgg=G`z
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 22:06:33
W edytorze vi użyj :insert. Spowoduje to zachowanie całego formatowania i nie wstawia automatycznego wcięcia.Po zakończeniu naciśnij escape, aby zobaczyć rzeczywisty sformatowany plik, w przeciwnym razie zobaczysz kilka znaków śmieci. jak ^I e. g:
public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert");
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-23 15:35:04
Po prostu przejdź do trybu wizualnego w Vimie i wybierz od góry do dołu linie po wybraniu just press =, Cała wybrana linia zostanie wcięta.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-04 12:14:10