95 votes

Comment puis-je faire en sorte que (g)Vim affiche le nombre de caractères du fichier en cours ?

J'aime écrire des tutoriels et des articles pour un forum de programmation que je fréquente. Ce forum a une limite de caractères par message. Dans le passé, j'ai utilisé Notepad++ pour rédiger mes messages et le nombre de caractères s'affichait dans la barre d'état. Je commence à utiliser davantage gVim et je n'ai pas vraiment envie de revenir à Notepad++ pour le moment, mais il est très utile d'avoir ce compteur de caractères. Si je dépasse le nombre de caractères, je finis généralement par coller le message dans Notepad++ afin de voir quand j'ai suffisamment coupé pour dépasser la limite.

J'ai vu des suggestions selon lesquelles :set ruler serait utile, mais elle ne donne le nombre de caractères que par l'intermédiaire de l'index de la colonne actuelle sur la ligne actuelle. Ce serait parfait si je n'utilisais pas de sauts de paragraphe, mais je suis sûr que vous serez d'accord pour dire que lire plusieurs milliers de caractères dans un seul paragraphe n'est pas confortable.

J'ai lu l'aide et j'ai pensé que rulerformat fonctionnerait, mais après avoir examiné les statusline Je n'ai rien vu qui donne un nombre de caractères pour la mémoire tampon actuelle.

J'ai vu qu'il y a des plugins qui ajoutent cela, mais je suis toujours en train de me plonger dans gVim et je ne suis pas sûr de vouloir charger des plugins au hasard avant de comprendre ce qu'ils font. Je préférerais utiliser quelque chose d'intégré à vim, mais si ça n'existe pas, ça n'existe pas.

Que dois-je faire pour atteindre mon objectif ? Si cela implique un plugin, l'utilisez-vous et comment fonctionne-t-il ?

151voto

mrucci Points 9408

Appuyez sur g CTRL-G en mode normal pour afficher quelques statistiques sur le curseur et le fichier.

Si vous êtes sous linux, vous pouvez utiliser wc -m pour obtenir le nombre de caractères dans le fichier actuel

:!wc -m %

Comme il n'est pas mis à jour en temps réel, vous voudrez peut-être faire correspondre cette commande à quelque chose du genre :

map <F4> :!wc -m %<CR>

27voto

akira Points 58339
:help count-items

suggère que vous pourriez soit faire un essai à sec d'un remplacement à l'instar de ce qui se fait dans le secteur de la santé.

:%s/./&/gn

(qui renvoie alors le nombre de caractères correspondants) ou que vous fassiez une fantaisie strlen() sur le texte sélectionné visuellement :

:echo strlen(@")

(" est le registre sans nom)

puisque vous pouvez appeler une expression dans votre ligne d'état comme %{myfunc()} cela pourrait être un bon point de départ. compter tout le temps pourrait être un peu long puisque vous devriez sélectionner tout le texte et ensuite le tirer, mais peut-être que montrer le nombre d'octets dans le "-registre est déjà ok pour vous. si vous voulez vraiment savoir le nombre de caractères dans le buffer : il suffit de sélectionner visuellement TOUT le texte dans le buffer et de le tirer. donc, la solution serait :

 :set statusline=%{strlen(@")}

qui vous donne le nombre de caractères dans le registre "-" (qui est identique au nombre d'octets si vous sélectionnez et tirez sur le tampon actuel).

9voto

Alex Points 51

Une amélioration de la réponse de Mrucci :

Vous pouvez utiliser wc sur linux sans avoir à sauvegarder le fichier au préalable en dirigeant la commande :w La sortie de la commande est la suivante :

:w !wc -m

et vous pouvez le faire correspondre à quelque chose comme mentionné par Mrucci.

6voto

akira Points 58339
:help statusline

vous donne

o N   Byte number in file of byte under cursor, first byte is 1.
      Mnemonic: Offset from start of file (with one added)

qui est aussi une bonne solution à votre problème. Il suffit d'aller jusqu'à la fin du buffer avec G et le nombre d'octets affiché dans votre ligne d'état est le nombre de caractères (ce qui n'est pas vrai avec les caractères multi-octets bien sûr). retournez d'où vous venez avec ctrlo .

4voto

Shu Wu Points 101

Si vous avez l'habitude d'utiliser :w pour enregistrer le fichier, chaque fois que vous le faites, l'état vous indique le nombre de caractères écrits. Par exemple, à la fin de cette phrase, j'ai fait un :w (oui, j'utilise gvim pour écrire cette note) et il a rapporté : 245C écrits.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X