Je me demande s'il existe un moyen de compter les symboles en surbrillance vim
(y compris les espaces blancs)?
MISE À JOUR
Il montre le nombre de lignes si ma sélection est sur plusieurs lignes. J'ai besoin que les symboles comptent.
À moins que je manque quelque chose, Vim le fait déjà. Si je surligne du texte à l'aide de la souris ou en tapant v
et en déplaçant le curseur, je vois en bas de l'écran
- VISUEL - 12
où le nombre à droite est le nombre de caractères en surbrillance. Cela ne fonctionne que si la sélection se trouve sur une seule ligne, sinon elle affiche le nombre de lignes.
Vous pouvez également sélectionner visuellement une région de texte et un type g Ctrl-Gqui afficheront le nombre de lignes, de mots et d'octets sélectionnés.
set showcmd
à votrevimrc
pour l'activer.Vim bascule entre l'affichage du nombre de caractères et du nombre de lignes pour le texte visualisé en fonction de ce que vous visualisez et de la façon dont vous le visualisez (vim 7.4 corrigé en septembre 2015)
Si vous visualisez plus d'une ligne, elle n'affiche que le nombre de lignes
la source
v
passe du nombre de caractères au nombre de lignes si la sélection s'étend sur plusieurs lignes. Cependant,g CTRL-G
le travail est bien.D'abord, vous tirez sur la sélection actuelle (dans le tampon x)
Ensuite, vous affichez la longueur de ce tampon:
strlen(@x)
(Le - VISUAL - affiché dans la ligne d'état masque cela, nous devons donc ajouter une nouvelle ligne)
Mettez en surbrillance la plage visuelle précédente:
gv
Cela ne tient pas compte du fait que le mode visuel était en mode ligne, caractère ou bloc, mais c'est suffisant dans la plupart des cas.
la source
Je vois sur votre capture d'écran que vous exécutez dans Windows, donc cette réponse peut ne pas vous aider autant. Mais pour les autres ...
Une fonction sous-utilisée (IMO) de Vim est de laisser les commandes externes faire le gros du travail.
Dans ce cas, si vous êtes sur un système de type UNIX, vous pouvez utiliser la
wc
commande pour ce faire.Le moyen le plus simple consiste à remplacer le texte sélectionné par la sortie de la commande, en tapant (avec le texte sélectionné):
(puis appuyez sur Entrée).
Cela apparaîtra dans votre ligne de commande comme:
Après avoir lu les informations, vous pouvez annuler avec
u
pour revenir à votre point de départ.Remarque: ce traitement est effectué sur des lignes entières uniquement. Si vous voulez des lignes partielles, je pense que @ garyjohn
g_CTRL-G
est votre meilleur pari.Vous pouvez éviter d'avoir à annuler en exécutant à la place:
Cela "écrit" les lignes sélectionnées dans l'entrée standard de la commande, et la sortie de la commande sera affichée dans un nouveau tampon temporaire, laissant l'original intact. Voir
:help :write_c
pour plus d'informations.Remarque: j'ai obtenu les
:write_c
informations de: /programming/1237780/vim-execute-shell-command-without-filteringMaintenant, plus généralement:
Cet exemple avec
wc
est assez simpliste, mais vous pouvez imaginer à quel point c'est une approche puissante. UNIX dispose déjà de nombreuses commandes de traitement de texte, et vous pouvez les utiliser assez facilement dans Vim, sans avoir besoin de toucher Vimscript (yech).De plus, tout programme de ligne de commande que vous écrivez qui traite de stdin / stdout peut désormais non seulement vous bénéficier sur votre terminal, mais aussi dans Vim.
Je me retrouve, par exemple, à exécuter
tidy
etjson-format
à l'intérieur de vim pour rendre les fichiers que je regarde plus lisibles.Vous pouvez faire la même chose sous Windows, mais Windows n'a pas un tel ensemble de commandes intégré. Vous pouvez toujours installer GNUWin32 ou similaire pour obtenir ces avantages.
la source
Pour une manière programmatique dans vimscript, cela a fonctionné pour moi lorsque la sélection est limitée à une seule ligne:
(Utiliser
virtcol(..)
au lieu decol(..)
, de sorte qu'il fonctionne comme prévu lorsque:set ve=all
est actif.)la source