Devrait être trivial, et il pourrait même être dans l'aide, mais je ne peux pas comprendre comment naviguer à travers elle.
Réponses
Trop de publicités?Utiliser l' >
commande. À l'alinéa 5 lignes, 5>>
. Pour marquer un bloc de lignes et de retrait, Vjj>
retrait de 3 lignes (vim). Pour indenter un curly-accolades bloquer, placez votre curseur sur l'un des accolades et utiliser >%
.
Si vous voulez copier des blocs de texte et de la nécessité d'aligner le retrait d'un bloc dans son nouvel emplacement, utilisez ]p
au lieu de simplement en p
. Cela permet d'aligner le bloc collé avec le texte environnant.
Aussi, l' shiftwidth
paramètre vous permet de contrôler combien d'espaces pour l'indentation.
Cette réponse résume les autres réponses et les commentaires de cette question, et ajoute des informations de base sur la documentation de Vim et le Vim wiki. Pour la concision, cette réponse ne fait pas de distinction entre le Vi et Vim-commandes spécifiques.
Dans les commandes ci-dessous, "re-tiret" signifie "tiret, des lignes en fonction de vos paramètres de retrait." shiftwidth
est la principale variable 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 un bloc valide retrait de la commande. Jetez un oeil à "Retrait d'un Bloc de Code" pour un bon exemple pour essayer ces commandes.
Aussi, n'oubliez pas que
. Repeat last command
, de sorte que l'indentation commandes peuvent être facilement et commodément répété.
Re-mise en retrait des dossiers complets
Une autre situation courante est exigeant en retrait pour être fixés tout au long d'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
Les commandes Ex
Ils sont utiles lorsque vous souhaitez mettre en retrait une gamme spécifique de lignes, sans bouger de votre le curseur.
:< and :> Given a range, apply indentation e.g.
:4,8> indent lines 4 to 8, inclusive
La mise en retrait à l'aide de marqueurs
Une autre approche est par l'intermédiaire de marqueurs:
ma Mark top of block to indent as marker 'a'
...déplacer le curseur à l'emplacement de fin
>'a Indent from marker 'a' to current location
Les Variables qui régissent l'indentation
Vous pouvez définir ces dans votre .fichiers 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 indentation intelligente basée sur le type de fichier. Essayez d'ajouter ceci à votre .vimrc:
if has ("autocmd")
" File type detection. Indent based on filetype. Recommended.
filetype plugin indent on
endif
Références
Touche du clavier enfoncée pour plus de visuels de personnes:
Entrer En Mode De Commande:
ÉchapperDéplacer le début de la zone de retrait:
hjkl↑↓←→Début d'un bloc:
vSe déplacer à la fin de la zone de retrait:
hjkl↑↓←→(Facultatif) Saisissez le nombre de niveaux hiérarchiques vous voulez
0..9Exécuter l'entaille sur le bloc:
>