Cela devrait être trivial, et cela pourrait même être dans l'aide, mais je ne sais pas comment y naviguer. Comment mettre en retrait rapidement plusieurs lignes dans vi?
la source
Cela devrait être trivial, et cela pourrait même être dans l'aide, mais je ne sais pas comment y naviguer. Comment mettre en retrait rapidement plusieurs lignes dans vi?
Utilisez la >commande. Pour mettre en retrait cinq lignes, 5>>. Pour marquer un bloc de lignes et le mettre en retrait, Vjj>mettre en retrait trois lignes (Vim uniquement). Pour mettre en retrait un bloc d'accolades, placez votre curseur sur l'un des accolades et utilisez >%ou depuis n'importe où à l'intérieur du bloc >iB.
Si vous copiez des blocs de texte et que vous devez aligner le retrait d'un bloc à son nouvel emplacement, utilisez ]pplutôt que juste p. Cela aligne le bloc collé avec le texte environnant.
En outre, le shiftwidth
paramètre vous permet de contrôler le nombre d'espaces à indenter.
shiftwidth
paramètre pour savoir comment changer cela.Cette réponse résume les autres réponses et commentaires de cette question et ajoute des informations supplémentaires basées sur la documentation Vim et le wiki Vim . Par souci de concision, cette réponse ne fait pas de distinction entre les commandes spécifiques à Vi et à Vim.
Dans les commandes ci-dessous, "ré-indentation" signifie "indentation des lignes selon vos paramètres d'indentation ".
shiftwidth
est la variable principale qui contrôle l'indentation.Commandes générales
Vous pouvez remplacer
{
par}
ouB
, par exemple,=iB
est une commande de retrait de bloc valide. Jetez un oeil à "Retrait d'un bloc de code" pour un bel exemple pour essayer ces commandes.N'oubliez pas non plus que
, de sorte que les commandes d'indentation peuvent être répétées facilement et commodément.
Ré-indentation de fichiers complets
Une autre situation courante exige que l'indentation soit corrigée dans un fichier source:
Vous pouvez étendre cette idée à plusieurs fichiers:
Ou plusieurs tampons:
En mode visuel
En mode insertion
Ces commandes s'appliquent à la ligne actuelle:
Commandes Ex
Ils sont utiles lorsque vous souhaitez mettre en retrait une plage spécifique de lignes, sans déplacer votre curseur.
Retrait à l'aide de marqueurs
Une autre approche consiste à utiliser des marqueurs :
... déplacer le curseur vers la position finale
Variables régissant l'indentation
Vous pouvez les définir dans votre fichier .vimrc .
Vim a une indentation intelligente basée sur le type de fichier. Essayez d'ajouter ceci à votre .vimrc:
Références
:help =
la source
>}
. Merci beaucoupUne grande sélection serait:
C'est vraiment rapide, et tout est mis en retrait ;-)
source
gg=G
met simplement chaque ligne à partir de la position 1. Tous les espaces blancs ont été supprimés. Existe-t-il autre chose spécifique à XML?set cindent
devrait être dans vimrc ou devrait s'exécuter:set cindent
avant d'exécuter cette commandeEssayez également cette option pour l' indentation en C. Faites
:help =
pour plus d'informations:={
Cela indentera automatiquement le bloc de code actuel dans lequel vous vous trouvez.
Ou juste:
==
pour indenter automatiquement la ligne actuelle.
source
Appuyez sur les touches pour plus de personnes visuelles:
Entrer en mode commande:
Escape
Déplacez-vous au début de la zone pour mettre en retrait:
hjkl↑↓←→
Démarrer un bloc:
v
Déplacez-vous jusqu'à la fin de la zone pour mettre en retrait:
hjkl↑↓←→
(Facultatif) Tapez le nombre de niveaux d'indentation que vous souhaitez
0..9
Exécutez le retrait sur le bloc:
>
source
Le maître de toutes les commandes est
gg=G
Cela indente l'intégralité du fichier!
Et voici quelques-unes des commandes simples et élégantes utilisées pour indenter rapidement des lignes dans Vim ou gVim.
Pour mettre en retrait la ligne actuelle
==
Pour mettre en retrait toutes les lignes sous la ligne actuelle
=G
Pour mettre en retrait des
n
lignes sous la ligne actuellen==
Par exemple, pour mettre en retrait 4 lignes sous la ligne actuelle
4==
Pour mettre en retrait un bloc de code, accédez à l'un des accolades et utilisez la commande
=%
Ce sont les commandes les plus simples mais puissantes pour indenter plusieurs lignes.
source
vim
, nonvi
.vim
lien vers unvi
?En plus de la réponse déjà donnée et acceptée, il est également possible de placer un marqueur puis de tout mettre en retrait du curseur actuel au marqueur.
Ainsi, entrez
ma
où vous voulez le haut de votre bloc en retrait, faites glisser le curseur vers le bas autant que vous le souhaitez, puis tapez>'a
(notez que "a
" peut être remplacé par n'importe quel nom de marqueur valide). C'est parfois plus facile que5>>
ouvjjj>
.source
Aller au début du texte
source
En plus des solutions proposées, j'aime faire les choses un paragraphe à la fois avec
>}
source
Lorsque vous sélectionnez un bloc et que vous utilisez >pour mettre en retrait, celui-ci revient ensuite en mode normal. J'ai ceci dans mon fichier .vimrc:
Il vous permet de mettre en retrait votre sélection autant de fois que vous le souhaitez.
source
Supposons que vous utilisez 2 espaces pour indenter votre code. Type:
Alors:
Vous avez eu l'idée.
( Les lignes vides ne seront pas indentées, ce qui je pense est plutôt sympa. )
J'ai trouvé la réponse dans la documentation (g) vim pour les blocs en retrait:
:'<,'>le4
insérer les espaces. Merci!:set number
pour basculer les numéros de ligne (ils sont désactivés par défaut) ou mettreset number
votre vimrc.vim-prettier
au lieu du moteur d'indentation par défaut).>
Sinon, l' utilisation augmentera royalement le formatage effectué par Prettier.La beauté de l'interface utilisateur de Vim réside dans sa cohérence. Les commandes d'édition sont composées de la commande et d'un déplacement du curseur. Les déplacements du curseur sont toujours les mêmes:
'
.Donc, pour utiliser vim, vous devez apprendre à déplacer le curseur et à vous souvenir d'un répertoire de commandes comme, par exemple, >mettre en retrait (et< "sortir").
Ainsi, pour mettre en retrait les lignes de la position du curseur vers le haut de l'écran que vous faites >H, >Gpour mettre en retrait vers le bas du fichier.
Si, au lieu de taper >H, vous tapez, dHvous supprimez le même bloc de lignes, cHpour le remplacer, etc.
Certains mouvements de curseur correspondent mieux à des commandes spécifiques. En particulier, la %commande est pratique pour indenter un bloc HTML ou XML entier. Si le fichier a la syntaxe en surbrillance (
:syn on
), placer le curseur dans le texte d'une balise (comme, dans le "i" de <div> et saisir>% va mettre en retrait jusqu'à la balise de fermeture </div>.Voici comment fonctionne Vim: il suffit de se souvenir uniquement des mouvements du curseur et des commandes, et comment les mélanger. Donc, ma réponse à cette question serait "aller à une extrémité du bloc de lignes que vous souhaitez mettre en retrait, puis tapez la >commande et un mouvement à l'autre extrémité du bloc" si le retrait est interprété comme décalant les lignes, =si le retrait est interprété comme en jolie impression.
la source
Faites ceci:
Et ajoutez cette ligne:
C'est uniquement pour un fichier cpp. Vous pouvez le faire pour un autre type de fichier, également en modifiant simplement le type de fichier ...
la source
Vous pouvez utiliser la
norm i
commande pour insérer un texte donné au début de la ligne. Pour insérer 10 espaces avant les lignes 2-10:N'oubliez pas qu'il doit y avoir un caractère espace à la fin de la commande - ce sera le caractère que nous voulons insérer. Nous pouvons également mettre en retrait une ligne avec n'importe quel autre texte, par exemple pour mettre en retrait chaque ligne d'un fichier avec cinq caractères de soulignement:
Ou quelque chose d'encore plus sophistiqué:
Un exemple plus pratique consiste à commenter le code Bash / Python / etc avec le caractère #:
Pour ré-indenter l'utilisation xau lieu de i. Par exemple, pour supprimer les 5 premiers caractères de chaque ligne:
la source
Un moyen rapide de le faire en utilisant
VISUAL MODE
le même processus que de commenter un bloc de code.Ceci est utile si vous préférez ne pas modifier votre
shiftwidth
ou utiliser desset
directives et est suffisamment flexible pour fonctionner avec TABS ou SPACES ou tout autre caractère.-- VISUAL MODE --
:
pour passer à l'inviteRemplacement par 3 espaces de tête:
:'<,'>s/^/ /g
Ou en remplaçant par des onglets de tête:
:'<,'>s/^/\t/g
Brève explication:
'<,'>
- Dans la plage sélectionnée visuellements/^/ /g
- Insérez 3 espaces au début de chaque ligne dans toute la plage(ou)
s/^/\t/g
- InsérerTab
au début de chaque ligne dans toute la gammela source
>}
ou>{
retrait de la ligne actuelle jusqu'au paragraphe suivant<}
ou<{
même retraitla source
J'aime marquer le texte pour l'indentation:
PS: vous pouvez utiliser la :'a,'ztechnique pour marquer une plage pour toute opération (d, y, s ///, etc.) où vous pourriez utiliser des lignes, des nombres ou %.
la source
:help left
Dans
ex mode
vous pouvez utiliser:left
ou:le
pour aligner les lignes d'un montant spécifié. Plus précisément,:left
seront les lignes aligner à gauche dans la [gamme]. Il définit le retrait dans les lignes sur [retrait] (par défaut 0).:%le3
ou:%le 3
ou:%left3
ou:%left 3
alignera le fichier entier en remplissant trois espaces.:5,7 le 3
alignera les lignes 5 à 7 en les remplissant de trois espaces.:le
sans aucune valeur ou:le 0
s'alignera à gauche avec un remplissage de 0.Cela fonctionne dans Vim et gVim.
la source
:'<,'>le4
insérer les espaces. Merci!Pour moi, la solution MacVim (Visual) était, sélectionnez avec la souris et appuyez sur ">", mais après avoir mis les lignes suivantes dans "~ / .vimrc" car j'aime les espaces au lieu des tabulations:
Il est également utile de pouvoir appeler MacVim à partir de la ligne de commande (Terminal.app), donc puisque j'ai le répertoire d'assistance suivant "~ / bin", où je place un script appelé "macvim":
Et bien sûr dans "~ / .bashrc":
MacPorts salit beaucoup "~ / .profile", donc la variable d'environnement PATH peut devenir assez longue.
la source
5==
indentera cinq lignes à partir de la position actuelle du curseur.Vous pouvez donc taper n'importe quel nombre avant
==
. Il mettra en retrait le nombre de lignes. C'est en mode commande.gg=G
indentera l'intégralité du fichier de haut en bas.la source
Je n'ai pas trouvé de méthode que j'utilise dans les commentaires, donc je vais la partager (je pense que Vim uniquement):
Ceci est utile lorsque vous ne souhaitez pas modifier les paramètres d'indentation / tabulation
vimrc
ou les mémoriser pour les modifier lors de la modification.Pour annuler l'indentation, j'utilise le même bloc Ctrl+ Vsélection pour sélectionner des espaces et le supprimer avec D.
la source
Je ne sais pas pourquoi il est si difficile de trouver une réponse simple comme celle-ci ...
J'ai moi-même dû beaucoup lutter pour le savoir. C'est très simple:
.vimrc
fichier sous le répertoire personnel.Ajoutez cette ligne
dans votre fichier où vous souhaitez mettre en retrait correctement.
En mode normal / commande
la source
Par exemple,
Augmentez le symbole «>» pour plus d'onglets.
Par exemple,
la source
:set number
pour basculer les numéros de ligne (ils sont désactivés par défaut) ou mettreset number
votre vimrc.En utilisant beaucoup Python, je me retrouve à avoir fréquemment besoin de décaler des blocs de plusieurs indentations. Vous pouvez le faire en utilisant l'une des méthodes de sélection de bloc, puis entrez simplement le nombre de retraits que vous souhaitez sauter juste avant le
>
Par exemple,
V5j3>
indentera cinq lignes trois fois - ce qui correspond à 12 espaces si vous utilisez quatre espaces pour les retraits.la source
Pour mettre en retrait chaque ligne d'un type de fichier, Escpuis G=gg.
la source
Comment mettre en retrait le code surligné dans vi immédiatement par un certain nombre d'espaces:
Option 1: indenter un bloc de code dans vi à trois espaces avec le mode Visual Block:
Sélectionnez le bloc de code que vous souhaitez mettre en retrait. Pour ce faire, utilisez Ctrl+Ven mode normal et flèches vers le bas pour sélectionner le texte. Pendant qu'il est sélectionné, entrez
:
pour donner une commande au bloc de texte sélectionné.Les éléments suivants apparaîtront sur la ligne de commande:
:'<,'>
Pour définir un retrait de trois espaces, tapez
le 3
et appuyez sur Entrée. Voici ce qui apparaît::'<,'>le 3
Le texte sélectionné est immédiatement mis en retrait sur trois espaces.
Option 2: indenter un bloc de code dans vi à trois espaces avec le mode Visual Line:
Soyez en mode normal et appuyez sur les touches suivantes:
Interprétation de ce que vous avez fait:
V
signifie commencer à sélectionner du texte.jjjj
flèches vers le bas de quatre lignes, mettant en évidence quatre lignes.:
indique à vi que vous saisirez une instruction pour le texte en surbrillance.le 3
signifie mettre en retrait le texte en surbrillance de trois lignes.Le code sélectionné est immédiatement augmenté ou diminué à une indentation de trois espaces.
Option 3: utilisez le mode Visual Block et le mode d'insertion spécial pour augmenter le retrait:
En mode normal, appuyez sur les touches suivantes:
Ctrl+V
(appuyez cinq fois sur la barre d'espace)
Esc Shift+i
Tout le texte en surbrillance est en retrait de cinq espaces supplémentaires.
la source
J'utilise la sélection visuelle en mode bloc:
I
( Shift+ I) pour entrer en mode d'insertion.Ce n'est pas un uni-tasker. Ça marche:
c
au lieu deI
).la source
vim-prettier
au lieu du moteur d'indentation par défaut).>
Sinon, l' utilisation augmentera royalement le formatage effectué par Prettier.Pour un bloc de code, {}: =+%
Pour une ligne sélectionnée: Shift+ vsélectionnez à l'aide des touches fléchées haut / bas, puis appuyez sur =.
Pour l'ensemble du fichier: gg+ =+G
Remarque: «gg» signifie aller à la ligne 1, «=» est la commande de retrait et «G» déplace le curseur à la fin du fichier .
la source
Pour mettre en retrait tout le fichier par quatre:
la source
Source: https://www.fir3net.com/UNIX/General/how-do-i-tab-multiple-lines-within-vi.html
la source