J'utilise VIM assez régulièrement maintenant mais je n'utilise jamais la commande point (.) pour répéter l'action précédente. Je continue à lire que c'est génial, mais je ne vois jamais d'exemples concrets qui aient un sens pour moi et pour la façon dont je code dans VIM. Quels sont les exemples concrets qui montrent à quel point la commande point (.) est géniale ?
Réponses
Trop de publicités?Voici quelques actions que je fais avec la commande point :
- Plus simple que
:%s/\<word\>/replacement/gc
est*
sur le mot, puiscereplacement<esc>
et ensuite répétern.
. C'est une bonne solution si vous avez deux ou trois occurrences de votre mot. Si vous avez plusieurs mots que vous voulez remplacer, passez au mot suivant, appuyez sur*
et encoren.
- Lorsque je veux aligner certains blocs à gauche :
<Ctrl-V>jjj<.....
ou insérer des espaces à l'avant :<ctrl-v>jjjI<space><esc>....
- après
dd
odw
la commande "point" permet d'effacer une autre ligne/mot.
Une chose magique qui se produit avec la commande dot est que si elle répète une commande qui a utilisé un registre numéroté, elle utilisera le registre numéroté suivant (cf. :help redo-register
).
Explication : Si vous avez dd
sur 9 lignes et que vous voulez les restaurer dans l'ordre dans lequel vous les avez supprimées, alors faites : "1P........
. Notez que les registres 1 à 9 constituent l'anneau de suppression de Vim. "1P
insérera avant le curseur le dernier texte supprimé, "2P
insère alors l'avant-dernier texte supprimé, et ainsi de suite.
J'utilise dw....
assez souvent pour supprimer une série de mots sans avoir besoin de les compter mentalement au préalable. Dans cet exemple, 5dw
comporte moins de caractères, mais je pense que je suis plus rapide d'environ 3 ms en utilisant la commande dot pour répéter simplement la commande delete word
sur le fait de les compter.
Modifier J'étais en train de faire un peu d'édition et j'ai réalisé qu'il y a une autre situation où j'utilise la commande point assez souvent. J'imagine qu'il existe un moyen beaucoup plus simple de gérer ce type de situation dans Vim, mais la commande dot m'aide dans les cas suivants et d'autres situations similaires. Ce qui suit est un exemple de " J'ai fait quelque chose une fois, maintenant je veux le répéter plusieurs fois. " J'écrivais un nouveau test (en C) et j'avais besoin d'y intégrer une constante de type chaîne de caractères représentant un script SQL que j'ai copié d'un autre endroit. Le script multiligne original (7 lignes) n'était pas entouré de guillemets doubles, alors j'ai fait ceci :
- Collez le script directement dans le code (7 nouvelles lignes dans le fichier).
- Positionnez le curseur sur la première nouvelle ligne.
- Ispacespacespacespace"esc pour insérer des espaces et un guillemet ouvrant sur la ligne courante.
- j. six fois pour ajouter une citation d'ouverture pour chaque ligne supplémentaire.
- Repositionnement sur la première ligne du texte collé.
- A\n"esc pour mettre un caractère de saut de ligne et un guillemet fermant sur la ligne courante.
- j. six fois encore pour mettre le guillemet fermant sur les lignes restantes.
Toutes les autres réponses fournissent de bons exemples, je veux juste ajouter que dot
est génial car il s'agit en quelque sorte d'une macro automatique pour votre dernière combinaison de touches qui n'est qu'à une touche.
Bien que les macros soient excellentes, elles sont un peu encombrantes à utiliser, alors que la dot
est toujours disponible, même si elle est moins puissante.
Quand vous avez besoin de le convertir :
instance Movable Position where
(x,y) --> Left = (x-1,y)
(x,y) --> Right = (x+1,y)
(x,y) --> Up = (x,y-1)
(x,y) --> Down = (x,y+1)
dans ceci :
instance Movable Position where
Position(x,y) --> Left = Position(x-1,y)
Position(x,y) --> Right = Position(x+1,y)
Position(x,y) --> Up = Position(x,y-1)
Position(x,y) --> Down = Position(x,y+1)
vous utiliseriez une sélection de blocs visuels pour la "position" de gauche et un point pour celle de droite.
- Réponses précédentes
- Plus de réponses