Wcięcie wielu linii szybko w vi

Powinno być trywialne, a może nawet w pomocy, ale nie mogę rozgryźć, jak się nim poruszać. Jak szybko wciąć wiele linii w vi?

Author: ProgramFOX, 2008-10-25

29 answers

Użyj > dowództwo. Aby wciąć 5 linii, 5>>. Aby zaznaczyć blok linii i wciąć go, Vjj> aby wciąć 3 linie (tylko vim). Aby wciąć blok nawiasów klamrowych, Umieść kursor na jednym z nawiasów klamrowych i użyj >%.

Jeśli kopiujesz bloki tekstu wokół i musisz wyrównać wcięcie bloku w nowym miejscu, Użyj ]p zamiast tylko p . To wyrównuje wklejony blok z otaczającym tekstem.

Również shiftwidth ustawienie pozwala kontrolować liczbę spacji do wcięcia.

 2353
Author: Greg Hewgill,
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-07-27 19:12:54

Ta odpowiedź podsumowuje Pozostałe odpowiedzi i komentarze na to pytanie i dodaje dodatkowe informacje oparte na dokumentacji Vima i vim wiki. Dla zwięzłości, ta odpowiedź nie rozróżnia poleceń specyficznych dla Vi i Vim.

W poniższych poleceniach "re-indent "oznacza" linie wcięcia zgodnie z ustawieniami wcięć ."shiftwidth jest główną zmienną kontrolującą wcięcia.

Ogólne Komendy

>>   Indent line by shiftwidth spaces
<<   De-indent line by shiftwidth spaces
5>>  Indent 5 lines
5==  Re-indent 5 lines

>%   Increase indent of a braced or bracketed block (place cursor on brace first)
=%   Reindent a braced or bracketed block (cursor on brace)
<%   Decrease indent of a braced or bracketed block (cursor on brace)
]p   Paste text, aligning indentation with surroundings

=i{  Re-indent the 'inner block', i.e. the contents of the block
=a{  Re-indent 'a block', i.e. block and containing braces
=2a{ Re-indent '2 blocks', i.e. this block and containing block

>i{  Increase inner block indent
<i{  Decrease inner block indent

Możesz zastąpić { } lub B, np. =iB jest poprawnym poleceniem wcięcie bloku. Spójrz na "Indent a Code Block" , aby znaleźć dobry przykład, aby wypróbować te polecenia.

Pamiętaj też, że

.    Repeat last command

, dzięki czemu polecenia wcięcia można łatwo i wygodnie powtarzać.

Ponowne wcięcia kompletnych plików

Inna powszechna sytuacja wymaga, aby wcięcia były naprawiane w całym źródle plik:

gg=G  Re-indent entire buffer

Możesz rozszerzyć ten pomysł na wiele plików:

" Re-indent all your c source code:
:args *.c
:argdo normal gg=G
:wall

Lub wiele buforów:

" Re-indent all open buffers:
:bufdo normal gg=G:wall

W Trybie Wizualnym

Vjj> Visually mark and then indent 3 lines

W trybie insert

Te polecenia odnoszą się do bieżącej linii:

CTRL-t   insert indent at start of line
CTRL-d   remove indent at start of line
0 CTRL-d remove all indentation from line

Ex komendy

Są one przydatne, gdy chcesz wciąć określony zakres linii, bez przesuwania kursor.

:< and :> Given a range, apply indentation e.g.
:4,8>   indent lines 4 to 8, inclusive

Wcięcia za pomocą markerów

Inne podejście is via markery :

ma     Mark top of block to indent as marker 'a'

...przesuń kursor do lokalizacji końcowej

>'a    Indent from marker 'a' to current location

Zmienne, które regulują wcięcie

Możesz je ustawić w swoim .plik vimrc .

set expandtab       "Use softtabstop spaces instead of tab characters for indentation
set shiftwidth=4    "Indent by 4 spaces when using >>, <<, == etc.
set softtabstop=4   "Indent by 4 spaces when pressing <TAB>

set autoindent      "Keep indentation from previous line
set smartindent     "Automatically inserts indentation in some cases
set cindent         "Like smartindent, but stricter and more customisable

Vim ma inteligentne wcięcia oparte na typie pliku. Spróbuj dodać to do swojego .vimrc:

if has ("autocmd")
    " File type detection. Indent based on filetype. Recommended.
    filetype plugin indent on
endif

Referencje

 898
Author: ire_and_curses,
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
2013-11-21 20:47:16

Duży wybór to:

gg=G

Jest naprawdę szybki, a wszystko jest wcięte; -)

 117
Author: Johan,
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-08-21 05:58:24

Spróbuj również dla C-wcięcia wcięcia, wykonaj :help = aby uzyskać więcej informacji:

={

Spowoduje automatyczne wcięcie bieżącego bloku kodu, w którym się znajdujesz.

Lub po prostu:

==

Aby automatycznie wciąć bieżącą linię.

 105
Author: svec,
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
2013-09-21 01:49:11

Klawisze dla większej liczby osób wizualnych:

  1. Enter Command Mode:
    Ucieczka

  2. Przejdź do początku obszaru, aby wcięcie:
    hjkl

  3. Rozpocznij blok:
    v

  4. Przesuń do końca obszaru, aby wcięcie:
    hjkl

  5. (Opcjonalnie) wpisz liczbę poziomów wcięcia, które chcesz
    0..9

  6. Wykonaj wcięcie na bloku:
    >

 73
Author: Kent Fredric,
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
2012-07-06 03:56:48

Oprócz odpowiedzi już udzielonej i zaakceptowanej, można również umieścić znacznik, a następnie wciąć wszystko od bieżącego kursora do znacznika. W ten sposób wprowadź ma, gdzie chcesz umieścić górną część wciętego bloku, kursor w dół tak daleko, jak potrzebujesz, a następnie wpisz >'a (zauważ, że "a " można zastąpić dowolną poprawną nazwą znacznika). Czasami jest to łatwiejsze niż 5>> lub vjjj>.

 62
Author: Daniel Spiewak,
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
2008-10-25 04:00:31

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ąć bieżący wiersz
==

Aby wciąć wszystkie linie poniżej bieżącej linii

=G

To indent n lines below the current line

n==

Na przykład, aby wciąć 4 linie poniżej bieżącego wiersza

4==

To wciśnij blok kodu, przejdź do jednego z szelek i użyj polecenia

=%

Są to najprostsze, ale potężne polecenia do wcięcia wielu linii.

 61
Author: Sagar Jain,
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-01-26 22:00:58

Przejdź do początku tekstu

  • Naciśnij v dla trybu wizualnego.
  • Użyj do góry/strzałka w dół, aby wyróżnić tekst.
  • prasa = aby wciąć wszystkie zaznaczone linie.
 29
Author: Michael Durrant,
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
2013-12-23 08:51:08

Oprócz oferowanych rozwiązań, lubię robić rzeczy akapitem na raz z >}

 27
Author: Paul Tomblin,
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
2008-10-25 04:08:38

Po wybraniu bloku i użyciu > aby wciąć, wcięcia przechodzą z powrotem do trybu normalnego. Mam to w swoim .plik vimrc:

vnoremap < <gv

vnoremap > >gv

Pozwala wciąć swój wybór tyle razy, ile chcesz.

 25
Author: Michael Ekoka,
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-08-21 05:59:02

Załóżmy, że używasz 2 spacji do wcięcia kodu. "Type": "content"]}

:set shiftwidth=2
  • Type v (aby wejść w tryb edycji wizualnej bloku)
  • przesuń kursor za pomocą klawiszy strzałek (lub za pomocą h/j/k/l ), aby wyróżnić linie, które chcesz wciąć lub usunąć.

Wtedy:

  • Typ > aby wciąć raz (2 spacje).
  • Typ 2> dwukrotne wcięcie (4 spacje).
  • Typ 3> wcięcie trzykrotnie (6 miejsc).
  • ...
  • Typ oddzielić raz (2 spacje).
  • Typ 2 do dwukrotnego unindent (4 spacje).
  • Typ 3 do trzykrotnego unindent (6 spacji).
  • ...
Rozumiesz.

(puste linie nie zostaną wcięte, co myślę, że jest całkiem miłe.)


Znalazłem odpowiedź w dokumentacji (g)vim na wcięcia bloków:

:help visual-block
/indent

Jeśli chcesz podaj licznik do polecenia, zrób to tuż przed wpisaniem znak operatora: "v{move-around}3>" (Przesuń linie o 3 wcięcia do prawo).

 21
Author: John Sonderson,
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-01-31 19:17:54

Piękno interfejsu Vima polega na tym, że jest spójny. Polecenia edycyjne składają się z polecenia i ruchu kursora. Ruchy kursora są zawsze takie same:

  • H do góry ekranu, L do dołu, M do środka
  • n G to go to line n, G alone to bottom of file, gg do góry
  • n aby przejść do następnego wyszukiwania, N do poprzedniego
  • } do końca paragraf
  • % do następnego pasującego nawiasu należy nawias lub Rodzaj znacznika
  • wpisz do następnego wiersza
  • 'x do oznaczenia x, gdzie x jest literą lub inną "
  • wiele innych, w tym w i W dla słowa, $ lub 0 do końcówek linii, itp., które nie mają tu zastosowania, ponieważ nie są linii .

Więc aby używać Vima musisz nauczyć się przesuwać kursor i zapamiętać repertuar poleceń takich jak np., > wcięcie (i do "outdent").
Tak więc, aby wciąć linie od pozycji kursora do góry ekranu, robisz >H, >G do wcięcia na dole pliku.

Jeśli zamiast wpisywać >H , wpisujesz dH Następnie usuwasz ten sam blok linii, cH do wymiany itp.

Jakiś kursor ruchy lepiej pasują do konkretnych 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) to ustawiamy kursor w tekście znacznika (np. w" i "

I wpisujemy >% spowoduje wcięcie do zamykającego znacznika .

Tak działa vim: trzeba pamiętać tylko ruchy kursora i polecenia oraz jak je mieszać.
Więc moja odpowiedź na to pytanie brzmiałaby " idź do jednego końca bloku linii, które chcesz wciąć, a następnie wpisz > polecenie i przesunięcie na drugi koniec bloku " if indent {[56] } jest interpretowane jako przesunięcie linii, = if indent {[56] } jest interpretowany jako pretty-printing.

 18
Author: Juan Lanus,
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
2013-01-02 18:04:26

Zrób to

$vi .vimrc

I dodaj ten wiersz

autocmd FileType cpp setlocal expandtab shiftwidth=4 softtabstop=4 cindent

To jest tylko dla pliku cpp możesz to zrobić dla innego typu pliku również po prostu modyfikując Typ pliku...

 14
Author: pankaj ukumar,
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-12-25 18:00:52

Szybki sposób na zrobienie tego za pomocą VISUAL MODE używa tego samego procesu co komentowanie bloku kodu.

Jest to przydatne, jeśli nie chcesz zmieniać shiftwidth lub używać żadnych dyrektyw set i jest wystarczająco elastyczne, aby pracować z tabulatorami, spacjami lub innymi znakami.

  1. Umieść kursor na początku bloku
  2. v to switch to -- VISUAL MODE --
  3. Wybierz tekst do wcięcia
  4. wpisz : Aby przełączyć się na znak zachęty
  5. Zastępowanie przez 3 spacje wiodące:

    :'<,'>s/^/ /g

  6. Lub zastąpienie tabulatorami wiodącymi:

    :'<,'>s/^/\t/g

  7. Krótkie Wyjaśnienie:

    '<,'> - w obrębie wybranego wizualnie zakresu

    s/^/ /g - Wstaw 3 spacje na początku każdej linii w całym zakresie

    (lub)

    s/^/\t/g - Wstaw Tab na początku każdego wiersza w całym zakresie

 12
Author: Eric Kigathi,
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
2012-01-04 00:41:53

Lubię zaznaczać tekst do wcięć:

  1. Przejdź do początku linii tekstu, a następnie wpisz ma (a jest etykietą od 'M': może to być dowolna litera)
  2. Przejdź do końca linii tekstu i wpisz mz (ponownie z może być dowolną literą)
  3. : 'A,'Z > or:' a, ' z Voila! tekst jest przesuwany (puste linie pozostają puste bez spacji)

PS: możesz użyć techniki: 'A,'Z, aby zaznaczyć zakres dla dowolnej operacji (d,y,s///, itp.), w której może używać linii, liczb lub %

 11
Author: SteveO,
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
2010-11-10 19:16:06

>} LUB >{ tiret od bieżącego wiersza do następnego akapitu

<} lub <{ to samo un-indent

 11
Author: jash,
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
2012-02-17 18:39:22

Jest jeszcze jeden sposób, o którym jeszcze nie wspomniano - możesz użyć polecenia norm i, aby wstawić podany tekst na początku wiersza. Wstawianie 10 spacji przed liniami 2-10:

:2,10norm 10i 

Pamiętaj, że na końcu polecenia musi być znak spacji - będzie to znak, który chcemy wstawić. Możemy również wciąć linię z dowolnym innym tekstem, na przykład aby wciąć każdą linię w pliku z 5 znakami podkreślenia:

:%norm 5i_

Albo coś jeszcze "fancy": {]}

:%norm 2i[ ]

Bardziej praktycznym przykładem jest komentowanie kodu Bash / Python / etc ze znakiem#:

:1,20norm i#

Do ponownego wcięcia użyj x zamiast i . Na przykład, aby usunąć 5 pierwszych znaków z każdej linii:

:%norm 5x
 11
Author: Nykakin,
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-21 13:33:52

Dla mnie rozwiązaniem MacVim (wizualnym) było, wybierz myszką i naciśnij ">", ale po umieszczeniu następujących linii w "~/.vimrc " ponieważ lubię spacje zamiast tabulatorów:

set expandtab
set tabstop=2
set shiftwidth=2

Jest również przydatne, aby móc wywołać MacVim z linii poleceń (Terminal.app), więc ponieważ mam następujący katalog helpera "~ / bin", w którym umieszczam skrypt o nazwie "macvim":

#!/usr/bin/env bash
/usr/bin/open -a /Applications/MacPorts/MacVim.app $@

I oczywiście w "~/.bashrc": {]}

export PATH=$PATH:$HOME/bin

Macports miesza z"~/.profil " dużo, więc środowisko ścieżki zmienna może być dość długa.

 9
Author: mda,
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
2012-06-04 05:12:04

Nie znalazłem metody, której używam w komentarzach, więc podzielę się nią (myślę, że tylko vim):

  1. Esc {[5] } aby wejść w tryb komend
  2. Przesuń do pierwszego znaku ostatniej linii, którą chcesz identować
  3. ctrl-v aby rozpocząć blok Wybierz
  4. Przenieś do pierwszego znaku pierwszej linii, którą chcesz identować
  5. shift-i aby wejść w specjalny tryb wstawiania
  6. wpisz tyle Spas/tabs, ile potrzebujesz, aby wciąć (2 dla przykład
  7. Naciśnij Esc i spacje pojawią się we wszystkich liniach

Jest to przydatne, gdy nie chcesz zmieniać ustawień ident/tab w vimrc lub pamiętać ich, aby zmienić je podczas edycji.

Aby odinstalować używam tego samego ctrl-V Zablokuj select, aby zaznaczyć spacje i usunąć je za pomocą d .

 9
Author: NickSoft,
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
2013-11-05 22:14:26

Nie wiem, dlaczego tak trudno jest znaleźć prostą odpowiedź, taką jak ta...

[[3]}ja sam musiałem wiele walczyć, aby wiedzieć, że jego to bardzo proste

Edytuj swój plik .vimrc w katalogu domowym dodaj ten wiersz

set cindent

W pliku, w którym chcesz poprawnie wciąć

W trybie normal / command Typ

10==   (this will indent 10 lines from the current cursor location )
gg=G   (complete file will be properly indented)
 9
Author: Kamlesh Karwande,
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-02-06 04:23:25

5== spowoduje wcięcie 5 linii od bieżącej pozycji kursora. możesz więc wpisać dowolną liczbę przed ==, spowoduje to wcięcie liczby linii. To jest w trybie rozkazującym.

gg=G spowoduje wcięcie całego pliku od góry do dołu.

 9
Author: rohitkadam19,
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-07-15 04:06:39

:help left

W ex mode możesz użyć :left lub :le do wyrównania linii o określonej wartości. W szczególności :left będzie wyrównać linie w [zakres]. Ustawia Wcięcie w wierszach na [indent] (Domyślnie 0).

:%le3 or :%le 3 lub :%left3 lub :%left 3 wyrównuje cały plik poprzez wypełnienie trzema spacjami.

:5,7 le 3 wyrównuje linie od 5 do 7, wypełniając je 3 spacjami.

:le bez żadnej wartości lub :le 0 będzie wyrównać do lewej z padding of 0.

To działa w vim i gvim.

 9
Author: zundarz,
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-10 18:48:23

Używając Pythona często muszę przesuwać bloki o więcej niż jedno wcięcie. Możesz to zrobić za pomocą dowolnej metody zaznaczania bloków, a następnie po prostu wprowadź liczbę wcięć, które chcesz przeskoczyć tuż przed >

Np. V5j3> 3 razy wcięje 5 linii - czyli 12 spacji, jeśli użyjesz 4 spacji do wcięć

 7
Author: John La Rooy,
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
2013-07-02 07:24:33
:line_num_start,line_num_end>

Np.

14,21> shifts line number 14 to 21 to one tab

Zwiększ symbol " > " dla większej liczby kart

Np.

14,21>>> for 3 tabs
 7
Author: Abhishesh Sharma,
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-07-15 09:22:47

Wcięcie każdej linii w typie pliku, esc then G=gg

 7
Author: kapil,
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
2016-10-04 12:37:01

Jak wcięcie podświetlonego kodu w vi od razu przez # spacji:

Opcja 1: Wcięcie bloku kodu w vi do trzech spacji w trybie wizualnego bloku:

  1. Wybierz blok kodu, który chcesz wciąć. Wykonaj to używając Ctrl + V w trybie normalnym i strzałką w dół, aby zaznaczyć tekst. Gdy jest zaznaczony, wprowadź :, aby nadać polecenie blokowi zaznaczonego tekstu.

  2. W wierszu poleceń pojawią się następujące elementy: :'<,'>

  3. Aby ustawić wcięcie na 3 spacje, wpisz le 3 i naciśnij enter. Tak wygląda: :'<,'>le 3

  4. Zaznaczony tekst jest natychmiast wcięty do 3 spacji.

Opcja 2: Wcięcie bloku kodu w vi do trzech spacji w trybie wizualnej linii:

  1. Otwórz plik w VI.
  2. Umieść kursor nad kodem
  3. Być w trybie normalnym naciśnij następujące klawisze:

    Vjjjj:le 3
    

    Interpretacja tego, co zrobiłeś:

    V oznacza rozpoczęcie zaznaczania tekstu.

    jjjj strzałki w dół 4 linie, podkreślając 4 linie.

    : informuje vi, że wpiszesz instrukcję dla podświetlonego tekstu.

    le 3 oznacza podświetlony tekst w 3 liniach.

    Wybrany kod jest natychmiast zwiększany lub zmniejszany do wcięcia trzech spacji.

Opcja 3: Użyj wizualnego trybu blokowania i specjalnego trybu wstawiania, aby zwiększyć tiret:

  1. Otwórz plik w VI.
  2. Umieść kursor nad kodem
  3. Być w trybie normalnym naciśnij następujące klawisze:

    Ctrl + V

    jjjj
    

    (naciśnij spację 5 razy)

    Esc Shift + i

    Cały podświetlony tekst jest wcięty dodatkowymi 5 spacjami.

 6
Author: Eric Leschinski,
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
2013-12-23 03:43:53

Wcięcie całego pliku przez 4:

esc 4G=G
 4
Author: Michael,
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-19 21:07:35

Używam wyboru wizualnego w trybie blokowym:

  • Przejdź do przodu bloku, aby przenieść (na górze lub na dole).
  • naciśnij ctrl-v, aby przejść do trybu wizualnego bloku.
  • wybierz kolumnę przed wierszami.
  • Naciśnij i (shift i), aby przejść do trybu wstawiania.
  • Wpisz kilka spacji.
  • naciśnij ESC. Wszystkie linie się zmienią.

To nie jest uni-tasker. Działa:

    W środku linii.
  • aby wstawić dowolny ciąg znaków na wszystkich linie.
  • aby zmienić kolumnę (użyj c zamiast I).
  • yank, delete, substitute, etc...
 3
Author: sqqqrly,
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-06-15 16:32:59

Załóżmy, że | reprezentuje pozycję kursora w Vimie. Jeśli tekst, który ma być wcięty, jest zamknięty w bloku kodu, takim jak:

int main() {
line1
line2|
line3
}

Możesz zrobić >i{ co oznacza " indent (>) inside (i) block ({)" I get:

int main() {
    line1
    line2|
    line3
}

Przypuśćmy, że linie są sąsiadujące, ale poza blokiem, jak:

do
line2|
line3
line4
done

Aby wciąć linie od 2 do 4, możesz wizualnie wybrać linie i wpisać >. Lub jeszcze szybciej możesz zrobić >2j aby uzyskać:

do
    line2|
    line3
    line4
done

Zauważ, że >Nj oznacza wcięcie od bieżącej linii do N linii poniżej. Jeśli liczba linii do wcięcia jest duża, zliczenie właściwej wartości N może zająć kilka sekund. Aby zaoszczędzić cenne sekundy możesz aktywować opcję relative number z set relativenumber (dostępna od wersji Vim 7.3).

 0
Author: Sergio,
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-04-25 07:14:41