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 publication. Dans le passé, j'ai déjà utilisé Notepad ++ pour rédiger des publications, qui conservent un nombre de caractères actif dans la barre d'état. Je commence à utiliser gVim de plus en plus et je ne souhaite vraiment pas revenir à Notepad ++ pour l'instant, mais il est très utile de disposer de ce nombre de caractères. Si je dépasse le nombre, je finis généralement par coller la publication dans Notepad ++ afin que je puisse voir quand j'ai suffisamment coupé pour respecter la limite.
J'ai vu des suggestions qui :set ruler
pourraient aider, mais cela ne donne que le nombre de caractères via l'index de colonne en cours sur la ligne en cours. Ce serait formidable si je n'utilisais pas de sauts de paragraphe, mais je suis sûr que vous conviendrez avec moi que lire plusieurs milliers de caractères dans un paragraphe n'est pas confortable.
J'ai lu l'aide et pensé que rulerformat
cela fonctionnerait, mais après avoir examiné le statusline
format utilisé, je n'ai rien vu qui donne un nombre de caractères pour le tampon actuel.
J'ai vu qu'il y a des plugins qui ajoutent ceci, mais je plonge toujours mes orteils dans gVim et je ne suis pas sûr de vouloir charger des plugins aléatoires avant de comprendre ce qu'ils font. Je préférerais utiliser quelque chose intégré à vim, mais s'il n'existe pas, il n'existe pas.
Que dois-je faire pour atteindre mon objectif? S'il s'agit d'un plugin, l'utilisez-vous et comment fonctionne-t-il?
g CTRL-G
Je ne savais pas que cela existait. Agréable!! [...] %
?suggère, que vous pourriez soit faire un essai à sec d'un remplacement ala
(qui rapporte ensuite le nombre de caractères correspondants) ou que vous aimez
strlen()
le texte sélectionné visuellement:("est le registre sans nom)
comme vous pouvez appeler une expression dans votre statut,
%{myfunc()}
cela pourrait être un bon point de départ. Compter tout le temps peut prendre un peu de temps puisque vous devez sélectionner tout le texte, puis le retirer, mais peut-être que le nombre d'octets dans le registre est correct, si vous voulez vraiment connaître le nombre. de caractères dans le tampon: il suffit de sélectionner visuellement TOUT le texte dans le tampon et de le retirer. La solution serait donc:qui vous donne le nombre de caractères dans le "-register (qui est identique au nombre d'octets si vous sélectionnez et extrayez le tampon courant).
la source
g<CTRL-g>
méthode dans la réponse acceptée.Une amélioration à la réponse de mrucci:
Vous pouvez utiliser
wc
sur Linux sans avoir à enregistrer le fichier au préalable en dirigeant la:w
sortie de la commande comme suit:et vous pouvez le mapper à quelque chose comme mentionné par mrucci.
la source
vous donne
ce qui est également une bonne solution de contournement pour votre problème. Allez simplement à la fin de la mémoire tampon avec Get le nombre d'octets indiqué dans votre ligne de statut 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.
la source
set statusline+=\ %o\ %N
( il est intéressant de noter que cela ne fonctionne pas, par exemple, pour l'élément "t S") . Ensuite, si vous voyez la ligne d'état inchangée, c'est parce que vous devez exécuterset laststatus=2
. Pour moi, il a remplacé la ligne de statut transparente existante par la nouvelle, noire, et ne contenant que le "nombre d'octets".Si vous avez l’habitude d’utiliser: w pour enregistrer le fichier, l’état d’avancement indique à chaque fois le nombre de caractères écrits. Par exemple, à la fin de cette phrase, j’ai fait a: w (oui, j’utilise Gvim pour écrire cette note) et c’est: 245 C écrit.
la source
Vous pouvez ajouter une expression pour afficher le nombre de tiers du tampon dans la ligne d'état avec:
Ou vous pouvez changer directement la variable d'option pour éviter tout ce qui s'échappe:
la source
...%{ line2byte(line(\"$\")+1))-1 }
que cela inclue les caractères de la dernière ligne dans le décompte. Cependant, cette approche ne compte pas correctement les caractères multi-octets.Solution que j'ai utilisée jusqu'à ce que j'accepte la réponse de mrucci:
J'ai découvert par hasard que lorsque je: w enregistre le fichier, la commande affiche le nombre d'octets écrits. Il s’agit plus ou moins d’un nombre de caractères, donc cela a été assez proche jusqu’à présent. J'aime bien la réponse de mrucci également, peut-être plus que celle-ci, car elle compte également un nombre de mots.
la source
Si vous conservez une copie du fichier de votre texte, écrivez simplement votre texte sur le disque - le nombre de caractères est affiché par défaut.
Si vous ne souhaitez pas conserver un fichier, il suffit de sauvegarder votre texte à
/dev/null
::w!/dev/null
.Vous pouvez également laisser
wc
compter vos personnages::%!wc -c
- mais n'oubliez pas d'appuyer sur Upour restaurer votre texte.Si vous en avez souvent besoin, associez ces commandes à une séquence de touches:
:map #wc :w!/dev/null^[
- notez que le^[
doit être entré avec Ctrl+ V Esc.En tant que premier indicateur de la taille du texte, il suffit d’activer les numéros de ligne; admis: cela nécessite des calculs mentaux ;-)
la source
Après avoir eu cette question et lu les réponses (merci, mrucci), j’ai ajouté ces lignes à mon fichier d’initialisation .vimrc.
Je laisse à vim: aider les utilisateurs à comprendre ce qu’ils font.
Personnellement, je trouve utile de commencer les mappages Vim avec; ou, puisque je les utilise rarement comme premier caractère d'une commande.
la source