Question Mettre en retrait plusieurs lignes rapidement dans vi


Cela devrait être trivial, et il pourrait même être utile, mais je n'arrive pas à comprendre comment le naviguer. Comment est-ce que je indente rapidement plusieurs lignes dans vi?


1968
2017-10-25 03:27


origine


Réponses:


Utilisez le > commander. Pour indenter 5 lignes, 5>>. Pour marquer un bloc de lignes et le mettre en retrait, Vjj> indenter 3 lignes (vim seulement). Pour mettre en retrait un bloc d'accolades, placez votre curseur sur l'une des accolades et utilisez >%.

Si vous copiez des blocs de texte et devez aligner l'indentation d'un bloc dans son nouvel emplacement, utilisez ]p au lieu de juste p. Cela aligne le bloc collé avec le texte environnant.

Également shiftwidth Ce paramètre vous permet de contrôler le nombre d'espaces à indenter.


2321
2017-10-25 03:28



Cette réponse résume les autres réponses et commentaires de cette question, et ajoute des informations supplémentaires basées sur le Documentation Vim et le Vim wiki. Pour des raisons de concision, cette réponse ne fait pas de distinction entre les commandes spécifiques à Vi et Vim.

Dans les commandes ci-dessous, "re-indent" signifie "lignes de retrait selon votre paramètres d'indentation" shiftwidth est la variable primaire qui contrôle l'indentation.

Commandes générales

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

Vous pouvez remplacer { avec } ou B, par exemple. =iB est une commande d'indentation de bloc valide. Jeter un coup d'œil à "Mettre en retrait un bloc de code" pour un bon exemple d'essayer ces commandes sur.

Aussi, rappelez-vous que

.    Repeat last command

, donc les commandes d'indentation peuvent être facilement et facilement répétées.

Re-indenter les fichiers complets

Une autre situation courante exige que l'indentation soit répartie dans un fichier source:

gg=G  Re-indent entire buffer

Vous pouvez étendre cette idée à plusieurs fichiers:

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

Ou plusieurs tampons:

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

En mode visuel

Vjj> Visually mark and then indent 3 lines

En mode insertion

Ces commandes s'appliquent à la ligne en cours:

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

Commandes Ex

Ils sont utiles lorsque vous souhaitez indenter une plage de lignes spécifique sans déplacer le curseur.

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

Mise en retrait à l'aide de marqueurs

Une autre approche est via Marqueurs:

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

... déplace le curseur jusqu'à l'emplacement final

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

Variables qui gèrent l'indentation

Vous pouvez les définir dans votre fichier .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 a une indentation intelligente basée sur le type de fichier. Essayez d'ajouter ceci à votre fichier .vimrc:

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

Les références


886
2018-03-06 17:29



Une grande sélection serait

gg=G

c'est vraiment rapide, et tout est en retrait ;-)


116
2018-01-20 21:11



Essayez aussi ceci pour C-indentation indentation, faire :help = pour plus d'informations:

={

Cela va auto-indenter le bloc de code en cours dans lequel vous vous trouvez.

Ou juste:

==

pour auto-indenter la ligne actuelle.


105
2017-10-25 04:21



Key-Presses pour plus de personnes visuelles:

  1. Entrer en mode de commande:
    Échapper 

  2. Déplacez-vous jusqu'au début de la zone pour mettre en retrait:
    hjkl 

  3. Démarrer un bloc:
    v

  4. Déplacez-vous jusqu'à la fin de la zone pour mettre en retrait:
    hjkl 

  5. (Facultatif) Tapez le nombre de niveaux d'indentation que vous souhaitez
    0,9

  6. Exécutez l'indentation sur le bloc:
    >


73
2017-10-25 09:16



En plus de la réponse déjà donnée et acceptée, il est également possible de placer un marqueur puis de tout indenter du curseur courant au marqueur. Ainsi, entrez ma où vous voulez le haut de votre bloc en retrait, le curseur vers le bas aussi loin que vous avez besoin, puis tapez >'a (Notez que "a"peut être substitué à un nom de marqueur valide) .Ceci est parfois plus facile que 5>> ou vjjj>.


62
2017-10-25 04:00



Le maître de toutes les commandes est
gg=G

Cela indente le fichier entier!

Et voici quelques-unes des commandes simples et élégantes utilisées pour indenter les lignes rapidement dans Vim ou gVim.

Pour mettre en retrait la ligne actuelle
==

Pour indenter toutes les lignes en dessous de la ligne actuelle

=G

Pour indenter n lignes en dessous de la ligne actuelle

n==

Par exemple, indenter 4 lignes en dessous de la ligne actuelle

4==

Pour mettre en retrait un bloc de code, accédez à l'une des accolades et utilisez la commande

=%

Ce sont les commandes les plus simples mais puissantes pour indenter plusieurs lignes.


60
2018-04-18 18:41



Aller au début du texte

  • presse v pour le mode visuel.
  • utilisation en haut/vers le bas flèche pour surligner le texte.
  • presse = pour mettre en retrait toutes les lignes que vous avez mises en évidence.

29
2017-11-04 22:57