Vim: Tiret avec un espace (pas shiftwidth espaces)
La valeur par défaut VIM indentation commandes tiret par shiftwidth espaces
par exemple
>> Indent line by shiftwidth spaces
<< De-indent line by shiftwidth spaces
Est-il possible de tiret avec un ou n (où n != shiftwidth) espace(s)?
Une façon de faire qui est à la verticale, sélectionnez une colonne dans le bloc avec Ctrl+V
puis, I
pour insérer verticalement, puis tapez un space
et <Esc>
. Mais est-il une meilleure façon?
- Pourquoi voulez-vous éviter de changer
sw
? Qu'est ce que c'est il donc. - Dans visual sélection de ligne,
{count}>
tiret par{count}*'shiftwidth'
, alors qu'en mode normal,{count}
est utilisé pour compter les lignes qui sont en retrait. C'est peut-être ce que vous voulez. Notez que même pour les visuels de la sélection de bloc, mais l'espacement est inséré avant la première colonne du bloc au lieu de départ de la ligne.
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr qu'il y a une meilleure façon. Mais, il y a un quelques façons que vous pourriez le faire (que je pense de toute façon)...
Votre Bloc Visuelle Solution
Comme vous l'avez dit: appuyez sur
Ctl-V
sélectionnez les lignes que vous voulez, appuyez surI
à insérer, puis entrez le nombre de places.De recherche
Similaire au précédent, mais un peu plus flexible - vous pouvez utiliser avec le 'select paragraphe"
vip
de commande, ou de n'importe quelle gamme vraiment: appuyez surv
ouvip
ou qu'avez-vous pour sélectionner la plage, et le type:s/^/{n spaces}
où {n espaces} est le nombre de places que vous souhaitez insérer.Il est un peu plus verbeux, mais fonctionne assez bien pour à peu près toute la gamme. Heck, si vous vouliez faire l'ensemble du fichier, vous pouvez le faire
Ctl-A
ou qu'avez-vous (OS dépendante) et le tiret, l'ensemble du fichier (ou simplement ignorer l'ensemble de la mode visuel chose et faire commande mode...comme dans:1,$s/^/{n spaces}
Notez que vous n'avez pas à inclure la troisième barre oblique de s///depuis que vous n'êtes pas de mettre des balises à la fin.
Mondiale
Peut-être vous voulez seulement tiret, des lignes qui correspondent à un modèle. Dire...Toutes les lignes qui contiennent des foo. Pas de problème: type
:g/foo/s/^/{n spaces}
Global est particulièrement pratique si son multi-sections de ligne avec un modèle similaire. Vous pouvez tout simplement échapper en mode normal terres et sélectionnez les lignes que vous voulez et de retrait en conséquence:
:g/foo/norm Vjj:s/^/{n spaces}Ctl-V{Enter}
. Peu plus compliqué avec les extraCtl-V{Enter}
à la fin, mais utile dans certaines circonstances.Utilisation tabstop et shiftwidth
Oui, si votre faire beaucoup de choses, je le ferais
:set ts=2
et:set et
et:set sw=2
et l'utilisation>>
et<<
dans tous les sens...Faire une Fonction
Ok, donc pas encore suffisamment succincte et pour quelque raison que ce soit vous avez besoin de faire beaucoup de choses et vous ne pouvez pas respecter déconner avec
sw
,et
etts
paramètres. Pas de problème, il suffit d'écrire une petite fonction et de lui donner unlocalleader
cartographie:Peut-être juste de connaître plus d'une façon de le faire c'est mieux que de se connaître? Après tout, parfois, la meilleure solution dépend du problème 🙂
:
, puis'<,'>s/^/ /
pour un espace. Merci!et
,ts
etsw
signifie:expandtab
,tabstop
etshiftwidth
Retrait d'un bloc de code dans la vi en trois espaces avec Visual mode Bloc:
Sélectionner le bloc de code que vous souhaitez mettre en retrait. Le faire à l'aide de Ctrl+V en mode normal et en pointant le curseur vers le bas pour sélectionner le texte. Lorsqu'il est sélectionné, entrez ":" donner une commande pour le bloc de texte sélectionné.
Suivantes apparaissent dans la ligne de commande:
:'<,'>
Pour définir tiret 3 places, type
le 3
et appuyez sur entrée. C'est ce qui s'affiche::'<,'>le 3
Le texte sélectionné est immédiatement mis en retrait de 3 espaces.
Retrait d'un bloc de code dans la vi en trois espaces avec Visual mode Ligne:
Être en mode normal, appuyez sur les touches suivantes:
Interprétation de ce que vous avez fait:
V
moyen de commencer la sélection de texte.jjjj
flèches en baisse de 4 lignes, en mettant en évidence 4 lignes.:
dit vi, vous entrez dans une instruction pour le texte en surbrillance.le 3
signifie retrait du texte mis en surbrillance 3 lignes.:le 3
tirets de la marge de gauche (colonne 1/0) mais je pense que l'OP voulait (encore) le retrait d'un bloc de texte à partir de la position où il était à. Par exemple, pour le meilleur alignement vertical du code/texte qui a été autoindented juste un peu de place par rapport à une meilleure position.le
de commande.Pour modifier le nombre de caractères d'espace inséré pour l'indentation, l'utilisation de la
shiftwidth
option:Jetez un oeil ici pour plus d' détails.
Vous pouvez également ajouter à votre
.vimrc
fichier.Si je comprends correctement, vous pouvez utiliser:
ctrl+V, jj, puis ':le n', où n est le nombre d'espaces pour l'indentation.
http://vim.wikia.com/wiki/Shifting_blocks_visually
Placer les marques ('a' et 'b') entre le code que vous souhaitez mettre en retrait:
Faire une commande de remplacement, de sorte que chaque caractère de saut de ligne entre votre marque est remplacé par le nombre de places souhaitées (dans cet exemple, 2 espaces):
J'ai dû dedent par un certain nombre d'espaces,
amount
, à l'intérieur d'un script vim. Cela a fonctionné:Un effet secondaire est qu'il réinitialise le dernier visuel de sélection de mode. Au lieu de cela, vous pouvez modifier la
exe...
ligne, tel qu'il s'exécute "<<" répétéamount
fois en mode normal. C'est: au lieu denormal v3<
, fairenormal <<<<<<
, siamount
est 3.