Comment puis-je compter le nombre de mots dans un fichier lors de l'édition du fichier dans vim

21

Je sais que je peux utiliser wcpour compter les caractères, les mots et les lignes de fichiers sur la ligne de commande .

Existe-t-il un moyen de compter le nombre de mots pendant que je vis ?

Michael Durrant
la source

Réponses:

22

Vous pouvez compter les mots et les lignes à l'intérieur en viutilisant vile propre compteur de:

Appuyez sur gpuis sur CTRL- g. Ensuite, la ligne de fond ressemble par exemple à ceci:

Col 1 of 11; Line 1 of 106; Word 1 of 344; Byte 1 of 2644

Ou utilisez vila méthode de pour appeler des commandes shell:

:w !wc -w

Cela appelle d' :wabord la commande save ( ) puis wc -waffiche la sortie. Exemple:

:w !wc -w
344

Press ENTER or type command to continue

Appuyez sur Enterpour revenir à vi.

le chaos
la source
Il s'agit en fait d'une description incorrecte de la :w !<cmd>construction. Il écrit le tampon actuel dans un tube connecté à la commande. Aucune écriture séparée du tampon actuel dans un fichier n'est promise. Néanmoins, il fait quelle question posée.
mcepl
1

Vous pouvez également essayer :!wc %dans Vim, bien qu'il compte la taille du fichier sur le disque, pas ce qui se trouve dans le tampon de Vim. Cela peut ou non être ce que vous vouliez.

Pranav Suri
la source
Cela compte ce qui se trouve sur le disque (le cas échéant), pas ce qu'il y a dans le tampon - donc si vous avez changé le contenu du tampon depuis la dernière sauvegarde, ou pas du tout enregistré, vous obtiendrez le mauvais compte (ou même une erreur si vous créez un fichier).
Stephen Kitt
Contra Stephen, c'est une solution correcte à "Comment puis-je compter le nombre de mots dans un fichier tout en éditant le fichier dans vim", alors que la réponse acceptée à proprement parler ne l'est pas (bien que ce soit ambigu ce que l'on voulait dire ou si cela importe ).
Michael Homer
C'est drôle qu'il soit similaire (moins le -wdrapeau pour restreindre la sortie aux mots uniquement) à une réponse de suppression de 2014 par D_Bye (qui l'a apparemment auto-supprimée).
Jeff Schaller
0

Des plugins tels que vim-airlines peuvent fournir le nombre de mots pour un fichier (et des sélections) dans le cadre d'une barre d'état.

Patrick Sanan
la source
Cette réponse n'est pas uniquement liée à un lien. Je n'ai pas inclus les spécificités d'un plugin particulier, car (comme vous le dites) certains plugins peuvent devenir obsolètes.
Patrick Sanan
Je me suis trompé. Cependant, je dirais qu'à l'avenir, vous devriez essayer d'inclure les étapes pertinentes pour mettre en œuvre la solution que vous présentez. Merci!
kemotep
0

Pour ceux qui veulent compter le nombre de mots dans un morceau de texte donné (pas un fichier entier), utilisez \S\+regexp.

  1. Sélectionnez le texte qui vous intéresse (mode visuel)
  2. :s/\S\+//gn

Résultat. Vim vous montrera quelque chose comme ceci:10 matches on 1 line

Lorsque vous appuyez sur :en mode visuel, vim ajoute à votre commande les '<,'>moyens de l'appliquer par rapport au texte sélectionné.

\S\+ capture des mots, c'est-à-dire des groupes de caractères séparés par des espaces.

Yuriy Pozniak
la source