240 votes

Comment convertir tout le texte en minuscules dans Vim

Comment convertir tout le texte de Vim en minuscules ? Est-ce même possible ?

0 votes

Nous avons beaucoup de pages html avec tous les caractères en majuscules. Cela m'évite de devoir tout retaper en minuscules.

2 votes

Avant que la question ne soit modifiée, il s'agissait de savoir comment convertir tout le texte dans vim en petites capitales. Évidemment, il y a un cas d'utilisation pour convertir du texte en minuscules.

7 votes

Le site web du VIM a la réponse : vim.wikia.com/wiki/Switching_case_of_characters Merci.

450voto

Je suppose que vous voulez mettre le texte en minuscules. La solution est assez simple :

ggVGu

Explication :

  1. gg - va à la première ligne du texte
  2. V - active la sélection visuelle, en mode ligne
  3. G - va jusqu'à la fin du fichier (pour le moment vous avez tout le texte sélectionné)
  4. u - minuscule zone sélectionnée

92 votes

Ou ggguG si vous voulez le faire sans sélection visuelle. :help gu

19 votes

Utiliser le capital U pour les majuscules (par ex. ggVGU )

130voto

zoul Points 51637
  1. Si vous voulez vraiment petites capitales alors non, ce n'est pas possible, tout comme il n'est pas possible de convertir un texte en gras ou en italique dans n'importe quel système de gestion de l'information. éditeur de texte (par opposition à traitement de texte ). Si vous voulez convertir du texte en minuscules, créez un bloc visuel et appuyez sur u (ou U pour convertir en majuscules). Tilde ( ~ ) en mode commande inverse la casse du caractère situé sous le curseur.

  2. Si vous voulez voir tout le texte dans Vim en petites capitales, vous pouvez vous tourner vers l'option guifont ou tapez :set guifont=* si votre version de Vim supporte le sélecteur de police GUI.

37 votes

Je pense qu'il est utile de mentionner que vous ne devez pas nécessairement créer un bloc visuel pour mettre en minuscules un bloc de texte. guu permet de mettre une ligne en minuscule, et gu[motion] va mettre en minuscule le texte de cette motion. De même, gUU y gU[motion] fonctionnent de la même manière, mais pour les majuscules.

1 votes

En fait, les petites capitales sont également possibles pour la plupart des lettres, en utilisant cosvwxz.

1 votes

C'est juste un hack, cependant. Elles ne sont pas destinées à être utilisées comme des petites capitales normales et ne sont pas bien supportées par les polices. (Sur ma machine de bureau, le F rend étrangement, sur mon téléphone il ne rend pas du tout, pour donner un exemple). Quoi qu'il en soit, c'est une partie intéressante d'Unicode, merci !

48voto

Kalanidhi M. Points 633

Utiliser cette option du mode de commande

ggguG

gg - Goto the first line 
g  - start to converting from current line    
u  - Convert into lower case for all characters
G  - To end of the file.

43voto

tarkeshwar Points 2057

Similaire à la solution de Mangledorf, mais plus courte et plus facile à comprendre.

:%s/.*/\L&/g

4 votes

:%s/.*/\L& suffirait (il n'est pas nécessaire d'avoir le g depuis .* sélectionne la ligne entière)

1 votes

Comme le ferait :%s/./\L&/g puisque /g/ désigne une opération qui est globale pour la ligne. Ce qui m'énerve, cependant, c'est le & . Pourquoi cela est-il nécessaire ?

2 votes

& est ici pour what was matched by the pattern On peut donc le comprendre comme suit : remplacer .* par \Lowercase(what was matched by the pattern) . Notez que la correspondance sur . est globalement plus lent que la correspondance .*

31voto

mangledorf Points 1059

Il y a plusieurs façons d'écorcher un chat... voici celle que j'ai choisie. posté sur :

:%s/[A-Z]/\L&/g

De même pour les majuscules :

:%s/[a-z]/\U&/g

Je préfère cette méthode parce que j'utilise cette construction ( :%s/[pattern]/replace/g ) tout le temps pour que ce soit plus naturel.

0 votes

Je pense qu'il y a une erreur de frappe dans le dernier exemple ('de même pour les majuscules') - l'expression doit être remplacée par [a-z] plutôt que par '[A-Z]'.

2 votes

:%s/./\U&/g fonctionne également. Il s'avère qu'il ignore les chiffres et les caractères non alphabétiques. Ce qui me gêne, c'est le & . Pourquoi n'est-ce pas \U (ou \L ) suffit-elle à elle seule ? Peut-on avoir une explication à ce sujet ?

3 votes

& est un stand-in pour la chaîne de caractères correspondante. Ainsi, \U& met en majuscule la chaîne de caractères trouvée afin qu'elle puisse être utilisée pour le remplacement.

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