21 votes

Comment mettre la première lettre d'un mot en majuscule dans Vim ?

Je sais depuis longtemps que je peux utiliser ~ dans Vim pour changer la casse d'un caractère. Mais existe-t-il un moyen d'associer une touche pour mettre un mot en majuscule et revenir à la position précédente ?

Par exemple :

I like to drink Coca co[l]

Si mon curseur se trouve sur "l" et que je me rends compte que je dois mettre le "c" en majuscule également, je dois actuellement le faire :

<C-c> b ~ ll i

Existe-t-il un moyen d'affecter une seule touche pour que la première lettre du mot sous le curseur soit mise en majuscule et que le curseur reste à sa position d'origine ?

16voto

Ignacio Vazquez-Abrams Points 312628
:nmap <whatever> m`b~``

11voto

Maxy-B Points 992

Personnellement, c'est exactement le genre de choses que je préfère pas pour faire une macro. Il n'est pas nécessaire de remplir votre .vimrc avec des dizaines de solutions ponctuelles de ce type, parce que la solution découle si naturellement de la "boîte à outils" des commandes standard de Vim, que vous pouvez simplement l'enchaîner comme une seconde nature.

Je tape un long mot :

the gallicizatio|

(le | est la position du curseur). Soudain, je me rends compte que j'ai oublié de mettre une majuscule au mot G de la "gallicisation". Alors, bam, j'ai tapé ESC (qui correspond à la touche de verrouillage des majuscules de mon clavier, ce qui permet de faire un simple geste du petit doigt), suivi de b~A et je continue à taper comme si de rien n'était. Cette erreur g a été mis en majuscule dans le temps qu'il faudrait à un utilisateur d'Emacs pour commencer à déplacer sa main droite vers les touches fléchées, et je suis déjà passé au reste de la phrase.

En revanche, avec une macro que je n'ai pas utilisée depuis longtemps, il me faudrait probablement plus de temps pour me rappeler quelle(s) touche(s) j'ai affectée(s) à cette macro. La meilleure solution est d'apprendre parfaitement les commandes "de base" importantes, qui peuvent être combinées à la volée selon des règles simples, avec des millions d'effets possibles.

3voto

ovatsug25 Points 1036

Je le fais souvent, et j'utilise la ligne de commande EX pour passer en revue plusieurs enregistrements qui correspondent à une condition. Dans ce cas, j'utilise une référence arrière qui ressemble à ceci :

:%s/\(\w\)\(\w*\)/\U\1\L\2/g

et BOOM, le problème est résolu pour tous les mots qui se trouvent dans un certain contexte.

EDIT : Regardez ici aussi, je viens de réaliser qu'il y avait ce lien qui donne des réponses similaires :

Mettre en majuscule la première lettre de chaque mot d'une sélection en utilisant vim

2voto

Amir Rachum Points 13236

Vous pouvez également utiliser la macro

q<register> <C-c> b ~ ll i q

puis faire @<register> chaque fois que vous devez l'utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X