Vraag Meerdere regels snel inspringen in vi


Moet triviaal zijn, en het kan zelfs in de hulp zijn, maar ik kan er niet achter komen hoe het te navigeren. Hoe streep ik meerdere regels snel in vi in?


1968
2017-10-25 03:27


oorsprong


antwoorden:


Gebruik de > opdracht. Om 5 lijnen te laten inspringen, 5>>. Om een ​​regel regel te markeren en in te knippen, Vjj> om 3 lijnen te laten inspringen (alleen vim). Als u een blok met gekrulde accenten wilt laten inspringen, plaatst u uw cursor op een van de accolades en gebruikt u deze >%.

Als u tekstblokken kopieert en de inspringing van een blok op de nieuwe locatie moet uitlijnen, gebruikt u ]p in plaats van gewoon p. Dit lijnt het geplakte blok uit met de omringende tekst.

Ook de shiftwidth Met deze instelling kunt u bepalen hoeveel spaties u wilt laten inspringen.


2321
2017-10-25 03:28



Dit antwoord vat de andere antwoorden en opmerkingen van deze vraag samen en voegt extra informatie toe op basis van de Vim documentatie en de Vim wiki. Voor de duidelijkheid maakt dit antwoord geen onderscheid tussen Vi en Vim-specifieke commando's.

In de onderstaande opdrachten betekent "opnieuw inspringen" "inspringende lijnen volgens uw inspringen instellingen." shiftwidth is de primaire variabele die de inspringing regelt.

Algemene opdrachten

>>   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

Je kunt vervangen { met } of Bb.v. =iB is een geldig blok indent commando. Kijk eens naar "Een code blokkeren" voor een mooi voorbeeld om deze commando's uit te proberen.

Onthoud dat ook

.    Repeat last command

, zodat inspringopdrachten eenvoudig en gemakkelijk kunnen worden herhaald.

Opnieuw insluiten van volledige bestanden

Een andere veel voorkomende situatie is dat een inspringing in een bronbestand moet worden opgelost:

gg=G  Re-indent entire buffer

U kunt dit idee uitbreiden naar meerdere bestanden:

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

Of meerdere buffers:

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

In de visuele modus

Vjj> Visually mark and then indent 3 lines

In invoegmodus

Deze opdrachten zijn van toepassing op de huidige regel:

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-opdrachten

Deze zijn handig als u een bepaald bereik van lijnen wilt laten inspringen, zonder uw lijn te verplaatsen cursor.

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

Inspringen met behulp van markeringen

Een andere benadering is via markers:

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

... verplaats de cursor naar de eindlocatie

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

Variabelen die inspringen bepalen

U kunt deze instellen in uw .vimrc-bestand.

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 heeft intelligente inspringing op basis van het bestandstype. Probeer dit aan uw .vimrc toe te voegen:

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

Referenties


886
2018-03-06 17:29



Een grote selectie zou zijn

gg=G

het is echt snel en alles wordt ingesprongen ;-)


116
2018-01-20 21:11



Probeer dit ook voor -C inspringen inspringen, doen :help = voor meer informatie:

={

Dat zal het huidige codeblok automatisch inspringen.

Of gewoon:

==

om de huidige regel automatisch in te voegen.


105
2017-10-25 04:21



Key-Presses voor meer visuele mensen:

  1. Ga naar de commandomodus:
    Ontsnappen 

  2. Ga naar het begin van het gebied om in te springen:
    hjkl 

  3. Begin een blok:
    v

  4. Ga naar het einde van het gebied om te laten inspringen:
    hjkl 

  5. (Optioneel) Typ het gewenste aantal inspringniveaus
    0..9

  6. Voer de inspringing uit op het blok:
    >


73
2017-10-25 09:16



Naast het al gegeven en geaccepteerde antwoord, is het ook mogelijk om een ​​markering in te voegen en vervolgens alles van de huidige cursor naar de markering te laten inspringen. Voer dus in ma waar je de bovenkant van je inspringende blok wilt, de cursor naar beneden zo ver als je nodig hebt en typ dan >'a (Let daar op "a"kan worden vervangen door een geldige merknaam). Dit is soms eenvoudiger dan 5>> of vjjj>.


62
2017-10-25 04:00



De meester van alle commando's is
gg=G

Dit inspringt het hele bestand!

En hieronder staan ​​enkele van de eenvoudige en elegante opdrachten die worden gebruikt om snel lijnen in Vim of gVim te laten inspringen.

Om de huidige regel te laten inspringen
==

Om alle regels onder de huidige regel te laten inspringen

=G

Inspringen n lijnen onder de huidige regel

n==

Als u bijvoorbeeld 4 regels onder de huidige regel wilt laten inspringen

4==

Om een ​​codeblok te laten inspringen, gaat u naar een van de accolades en gebruikt u de opdracht

=%

Dit zijn de eenvoudigste maar krachtige commando's om meerdere regels te laten inspringen.


60
2018-04-18 18:41



Ga naar het begin van de tekst

  • druk op v voor visuele modus.
  • gebruik omhoog/naar beneden pijl om tekst te markeren.
  • druk op = om alle lijnen te markeren die u hebt gemarkeerd.

29
2017-11-04 22:57



Naast de aangeboden oplossingen, vind ik het leuk om dingen tegelijk met een alinea te doen >}


27
2017-10-25 04:08



wanneer u een blok selecteert en> gebruikt om in te springen, gaat het streepje terug naar de normale modus. Ik heb dit in mijn .vimrc:

vnoremap < <gv

vnoremap > >gv

Hiermee kunt u uw selectie inspringen zo vaak als u wilt.


25
2018-02-15 05:42