Powinno to być trywialne i może nawet być pomocne, ale nie mogę wymyślić, jak się nim poruszać. Jak szybko wciąć wiele linii w vi?
vim
editor
indentation
vi
Allain Lalonde
źródło
źródło
shiftwidth
ustawienie sposobu, aby to zmienić.Ta odpowiedź podsumowuje inne odpowiedzi i komentarze do tego pytania oraz dodaje dodatkowe informacje na podstawie dokumentacji Vima i wiki Vima . Dla zwięzłości, ta odpowiedź nie rozróżnia poleceń specyficznych dla Vi i Vim.
W poniższych poleceniach „ponowne wcięcie” oznacza „wcięcie wierszy zgodnie z ustawieniami wcięcia ”.
shiftwidth
jest podstawową zmienną kontrolującą wcięcie.Ogólne polecenia
Można wymienić
{
z}
lubB
na przykład=iB
jest poprawnym poleceniem tiret blok. Rzuć okiem na „Wcięcie bloku kodu” na dobry przykład wypróbowania tych poleceń.Pamiętaj też o tym
, dzięki czemu polecenia wcięcia można łatwo i wygodnie powtarzać.
Ponowne wcięcie kompletnych plików
Inną częstą sytuacją jest konieczność poprawienia wcięć w pliku źródłowym:
Możesz rozszerzyć ten pomysł na wiele plików:
Lub wiele buforów:
W trybie wizualnym
W trybie wstawiania
Te polecenia dotyczą bieżącej linii:
Polecenia ex
Są one przydatne, gdy chcesz wciąć określony zakres linii bez poruszania kursorem.
Wcięcie za pomocą markerów
Innym podejściem są markery :
... przesuń kursor do położenia końcowego
Zmienne rządzące wcięciem
Możesz ustawić je w swoim pliku .vimrc .
Vim ma inteligentne wcięcie oparte na typie pliku. Spróbuj dodać to do swojego .vimrc:
Bibliografia
:help =
źródło
>}
. Wielkie dziękiDuży wybór to:
Jest naprawdę szybki i wszystko jest wcięte ;-)
źródło
gg=G
powoduje wstawienie każdej linii, zaczynając od pozycji 1. Wszystkie białe spacje zostały usunięte. Czy jest coś jeszcze specyficznego dla XML?set cindent
powinien być w vimrc lub powinien uruchomić się:set cindent
przed uruchomieniem tego poleceniaSpróbuj tego również w przypadku wcięcia z wcięciem C. Zrób
:help =
więcej informacji:={
Spowoduje to automatyczne wcięcie bieżącego bloku kodu, w którym się znajdujesz.
Lub tylko:
==
aby automatycznie wciąć bieżącą linię.
źródło
Kluczowe naciśnięcia dla bardziej wizualnych osób:
Wejdź do trybu poleceń:
Escape
Przejdź na początek obszaru, aby wciąć:
hjkl↑↓←→
Rozpocznij blok:
v
Przejdź na koniec obszaru, aby wciąć:
hjkl↑↓←→
(Opcjonalnie) Wpisz żądaną liczbę poziomów wcięcia
0..9
Wykonaj wcięcie na bloku:
>
źródło
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 bieżącej linii
==
Wcięcie wszystkich linii poniżej bieżącej linii
=G
Wcięcie
n
linii poniżej bieżącej liniin==
Na przykład, aby wciąć 4 linie poniżej bieżącej linii
4==
Aby wciąć blok kodu, przejdź do jednego z nawiasów klamrowych i użyj polecenia
=%
Są to najprostsze, ale potężne polecenia do wcięcia wielu linii.
źródło
vim
nievi
.vim
link, który został powiązany zvi
?Oprócz odpowiedzi już udzielonej i zaakceptowanej, możliwe jest również umieszczenie znacznika, a następnie wcięcie wszystkiego, od bieżącego kursora do znacznika.
Tak więc wpisz,
ma
gdzie chcesz górę wciętego bloku, przesuń kursor w dół tak daleko, jak potrzebujesz, a następnie wpisz>'a
(zwróć uwagę, że „a
” można zastąpić dowolną prawidłową nazwą znacznika). Czasami jest to łatwiejsze niż5>>
lubvjjj>
.źródło
Idź na początek tekstu
źródło
Oprócz oferowanych rozwiązań, lubię robić różne rzeczy na raz
>}
źródło
Po wybraniu bloku i użyciu >wcięcia następuje jego wcięcie, a następnie powrót do trybu normalnego. Mam to w moim pliku .vimrc:
Umożliwia wcięcie zaznaczenia tyle razy, ile chcesz.
źródło
Załóżmy, że używasz 2 spacji do wcięcia kodu. Rodzaj:
Następnie:
Masz pomysł.
( Puste wiersze nie będą wcięte, co moim zdaniem jest miłe. )
Znalazłem odpowiedź w dokumentacji (g) vim dla bloków wcięcia:
:'<,'>le4
wstawić spacje. Dzięki!:set number
aby przełączyć numery linii ( domyślnie są wyłączone ) lub wstawićset number
vimrc.vim-prettier
zamiast domyślnego mechanizmu wcięcia). Użycie w>
przeciwnym razie spowoduje królewskie zwiększenie formatowania wykonanego przez Prettiera.Piękno interfejsu użytkownika Vima polega na jego spójności. Polecenia do edycji składają się z polecenia i ruchu kursora. Ruchy kursora są zawsze takie same:
'
.Aby korzystać z vima, musisz nauczyć się poruszać kursorem i pamiętać repertuar poleceń, takich jak na przykład >wcięcie (i< „wychylenie”).
Tak więc, dla wcięcia linii od pozycji kursora do górnej części ekranu zrobić >H, >Gaby wciąć się w dolnej części pliku.
Jeśli zamiast pisać >H, piszesz , dHusuwasz ten sam blok linii, cHaby go zastąpić itp.
Niektóre ruchy kursora lepiej pasują do określonych poleceń. W szczególności %polecenie jest przydatne do wcięcia całego bloku HTML lub XML. Jeśli plik ma podświetloną składnię (
:syn on
), ustaw kursor w tekście znacznika (np. W „i” <div> i wprowadź>% spowoduje wcięcie do zamykającego znacznika </div>.Oto jak działa Vim: trzeba pamiętać tylko ruchy kursora i polecenia oraz sposób ich mieszania. Tak więc moja odpowiedź na to pytanie brzmiałaby: „przejdź do jednego końca bloku linii, który chcesz wciąć, a następnie wpisz >polecenie i ruch na drugi koniec bloku”, jeśli wcięcie jest interpretowane jako przesunięcie linii, =jeśli wcięcie jest interpretowany jako ładny druk.
źródło
Zrób to:
I dodaj tę linię:
Dotyczy to tylko pliku cpp. Możesz to zrobić dla innego typu pliku, również po prostu modyfikując typ pliku ...
źródło
Możesz użyć
norm i
polecenia, aby wstawić podany tekst na początku wiersza. Aby wstawić 10 spacji przed wierszami 2-10:Pamiętaj, że na końcu polecenia musi znajdować się spacja - będzie to znak, który chcemy wstawić. Możemy również wciąć wiersz z dowolnym innym tekstem, na przykład, aby wciąć każdy wiersz w pliku za pomocą pięciu znaków podkreślenia:
Lub coś jeszcze bardziej fantazyjnego:
Bardziej praktycznym przykładem jest komentowanie kodu Bash / Python / etc znakiem #:
Aby ponownie użyć wcięcia xzamiast i. Na przykład, aby usunąć pierwsze 5 znaków z każdej linii:
źródło
Szybki sposób na zrobienie tego przy
VISUAL MODE
użyciu tego samego procesu co komentowanie bloku kodu.Jest to przydatne, jeśli nie chcesz zmieniać swoich dyrektyw
shiftwidth
lub korzystać z nich,set
i jest wystarczająco elastyczny, aby pracować z TABS lub SPACES lub dowolną inną postacią.-- VISUAL MODE --
:
aby przejść do monituZastąpienie 3 wiodącymi spacjami:
:'<,'>s/^/ /g
Lub zastąpienie wiodącymi kartami:
:'<,'>s/^/\t/g
Krótkie wyjaśnienie:
'<,'>
- W obrębie wizualnie wybranego zakresus/^/ /g
- Wstaw 3 spacje na początku każdej linii w całym zakresie(lub)
s/^/\t/g
- WstawTab
na początku każdej linii w całym zakresieźródło
>}
lub>{
wcięcie od bieżącego wiersza do następnego akapitu<}
lub<{
samo bez wcięciaźródło
Lubię zaznaczać tekst do wcięcia:
PS: możesz użyć tej :'a,'ztechniki do zaznaczenia zakresu dla dowolnej operacji (d, y, s /// itd.), W której możesz użyć linii, liczb lub %.
źródło
:help left
W
ex mode
można użyć:left
lub,:le
aby wyrównać linie o określoną ilość. W szczególności,:left
będzie lewo linii zrównują się ze sobą [zakres]. Ustawia wcięcie w wierszach na [wcięcie] (domyślnie 0).:%le3
lub:%le 3
lub:%left3
lub:%left 3
wyrówna cały plik, wypełniając go trzema spacjami.:5,7 le 3
wyrówna linie od 5 do 7, wypełniając je trzema spacjami.:le
bez żadnej wartości lub:le 0
pozostawi wyrównanie z wypełnieniem 0.Działa to w Vimie i gVimie.
źródło
:'<,'>le4
wstawić spacje. Dzięki!Dla mnie rozwiązaniem MacVim (Visual) było wybranie myszy i naciśnięcie „>”, ale po umieszczeniu następujących wierszy w „~ / .vimrc”, ponieważ lubię spacje zamiast tabulatorów:
Przydaje się również możliwość wywoływania MacVima z wiersza poleceń (Terminal.app), więc ponieważ mam następujący katalog pomocnika „~ / bin”, w którym umieszczam skrypt o nazwie „macvim”:
I oczywiście w „~ / .bashrc”:
MacPorts często ma problemy z „~ / .profile”, więc zmienna środowiskowa PATH może być dość długa.
źródło
5==
spowoduje wcięcie pięciu linii od bieżącej pozycji kursora.Możesz więc wpisać wcześniej dowolną liczbę
==
. Wciśnie liczbę linii. To jest w trybie poleceń.gg=G
spowoduje wcięcie całego pliku od góry do dołu.źródło
Nie znalazłem metody, której używam w komentarzach, więc podzielę się nią (myślę tylko, że Vim):
Jest to przydatne, gdy nie chcesz zmieniać ustawień wcięć / zakładek
vimrc
lub zapamiętywać ich w celu zmiany podczas edycji.Aby cofnąć się, używam tego samego Ctrl+ Vzaznaczenia bloku, aby zaznaczyć spacje i usunąć je za pomocą D.
źródło
Nie wiem, dlaczego tak trudno jest znaleźć prostą odpowiedź jak ta ...
Sam musiałem dużo walczyć, żeby to wiedzieć. To jest bardzo proste:
.vimrc
plik w katalogu domowym.Dodaj tę linię
w pliku, w którym chcesz prawidłowo wciąć.
W trybie normalnym / trybie poleceń
źródło
Na przykład,
Zwiększ symbol „>”, aby wyświetlić więcej kart.
Na przykład,
źródło
:set number
aby przełączyć numery linii ( domyślnie są wyłączone ) lub wstawićset number
vimrc.Często używam Pythona i często muszę przesuwać bloki o więcej niż jedno wcięcie. Możesz to zrobić za pomocą dowolnej metody zaznaczania bloku, a następnie po prostu wprowadź liczbę wcięć, które chcesz przeskoczyć tuż przed
>
Na przykład
V5j3>
trzykrotnie wcina pięć linii - co oznacza 12 spacji, jeśli użyjesz czterech spacji dla wcięć.źródło
Wcięcie każdej linii w typ pliku, Esca następnie G=gg.
źródło
Jak natychmiast wciąć podświetlony kod w vi za pomocą kilku spacji:
Opcja 1: Wcięcie bloku kodu w vi do trzech spacji w trybie Visual Block:
Wybierz blok kodu, który chcesz wciąć. Zrób to, używając Ctrl+Vtrybu normalnego i przesuwając w dół, aby zaznaczyć tekst. Gdy jest zaznaczone, wprowadź,
:
aby wydać polecenie blokowi zaznaczonego tekstu.W wierszu polecenia pojawią się następujące elementy:
:'<,'>
Aby ustawić wcięcie na trzy spacje, wpisz
le 3
i naciśnij klawisz Enter. Oto co się pojawia::'<,'>le 3
Zaznaczony tekst jest natychmiast wcięty do trzech spacji.
Opcja 2: Wcięcie bloku kodu w vi do trzech spacji w trybie linii wizualnej:
Przejdź do trybu normalnego i naciśnij następujące klawisze:
Interpretacja tego, co zrobiłeś:
V
oznacza zacznij zaznaczać tekst.jjjj
strzałki w dół o cztery linie, podświetlając cztery linie.:
mówi vi, że wprowadzisz instrukcję dla podświetlonego tekstu.le 3
oznacza wcięty podświetlony tekst w trzech wierszach.Wybrany kod jest natychmiast zwiększany lub zmniejszany do wcięcia trzech spacji.
Opcja 3: użyj trybu Visual Block i specjalnego trybu wstawiania, aby zwiększyć wcięcie:
W trybie normalnym naciśnij następujące klawisze:
Ctrl+V
(naciśnij klawisz spacji pięć razy)
Esc Shift+i
Cały podświetlony tekst jest wcięty o dodatkowe pięć spacji.
źródło
Używam selekcji wizualnej w trybie blokowym:
I
( Shift+ I), aby przejść do trybu wstawiania.To nie jest jednozadaniowiec. To działa:
c
zamiastI
).źródło
vim-prettier
zamiast domyślnego mechanizmu wcięcia). Użycie w>
przeciwnym razie spowoduje królewskie zwiększenie formatowania wykonanego przez Prettiera.W przypadku bloku kodu {}: =+%
Dla wybranej linii: Shift+ vwybierz za pomocą klawiszy strzałek w górę / w dół, a następnie naciśnij =.
Dla całego pliku: gg+ =+G
Uwaga: „gg” oznacza przejście do wiersza 1, „=” to polecenie wcięcia, a „G” przesuwa kursor na koniec pliku .
źródło
Aby wciąć cały plik o cztery:
źródło
Źródło: https://www.fir3net.com/UNIX/General/how-do-i-tab-multiple-lines-within-vi.html
źródło