Ich frage mich, ob es eine Möglichkeit gibt, markierte Symbole vim
(einschließlich Leerzeichen) zu zählen.
AKTUALISIEREN
Es wird die Anzahl der Zeilen angezeigt, wenn meine Auswahl mehrere Zeilen umfasst. Ich muss Symbole zählen.
Wenn ich nichts verpasse, macht Vim das schon. Wenn ich Text mit der Maus oder durch Tippen v
und Bewegen des Cursors hervorhebe , sehe ich am unteren Bildschirmrand
- VISUAL - 12
Die Zahl rechts gibt die Anzahl der hervorgehobenen Zeichen an. Dies funktioniert nur, wenn sich die Auswahl in einer einzelnen Zeile befindet, andernfalls wird die Zeilenzahl angezeigt.
Sie können auch visuell einen Textbereich und einen Typ auswählen g Ctrl-G, der die Anzahl der ausgewählten Zeilen, Wörter und Bytes anzeigt.
set showcmd
Sievimrc
es einfach zu Ihrem hinzu , um es zu aktivieren.Vim wechselt zwischen der Anzeige der Zeichenanzahl und der Zeilenanzahl für visualisierten Text, je nachdem, was und wie Sie visualisieren (Patches für Vim 7.4, September 2015).
Wenn Sie mehr als eine Zeile anzeigen, wird nur die Anzahl der Zeilen angezeigt
quelle
v
von Zeichenzahl zu Zeilenzahl, wenn die Auswahl mehrere Zeilen umfasst. Allerdingsg CTRL-G
macht der Job gut.Zuerst ziehst du die aktuelle Auswahl (in den Puffer x)
Dann zeigen Sie die Länge dieses Puffers an:
strlen(@x)
(Das in der Statuszeile angezeigte - VISUAL - verdeckt dies, daher müssen wir eine neue Zeile hinzufügen.)
Markieren Sie den vorherigen visuellen Bereich:
gv
Dabei wird nicht berücksichtigt, ob der visuelle Modus ein Zeilen-, Zeichen- oder Blockmodus war, aber in den meisten Fällen ist dies ausreichend.
quelle
Ich sehe aus Ihrem Screenshot, dass Sie in Windows ausgeführt werden, so dass diese Antwort Ihnen möglicherweise nicht so viel hilft. Aber für andere ...
Eine unterbenutzte (IMO) Funktion von Vim ist, externe Befehle das schwere Heben ausführen zu lassen.
In diesem Fall können Sie den
wc
Befehl verwenden , wenn Sie sich auf einem UNIX-ähnlichen System befinden .Am einfachsten ist es, den ausgewählten Text durch die Ausgabe des Befehls zu ersetzen, indem Sie Folgendes eingeben (mit ausgewähltem Text):
(Dann drücken Sie die Eingabetaste).
Dies wird in Ihrer Befehlszeile angezeigt als:
Nachdem Sie die Informationen gelesen haben, können Sie sie rückgängig machen
u
, um zu Ihrem Ausgangspunkt zurückzukehren.Hinweis: Diese Verarbeitung erfolgt nur in ganzen Zeilen . Wenn Sie Teilzeilen wünschen, denke ich, dass @ garyjohns
g_CTRL-G
Ihre beste Wette ist.Sie können das Rückgängigmachen vermeiden, indem Sie stattdessen Folgendes ausführen:
Dadurch werden die ausgewählten Zeilen in die Standardeingabe des Befehls "geschrieben", und die Ausgabe des Befehls wird in einem neuen temporären Puffer angezeigt, wobei das Original unverändert bleibt. Siehe
:help :write_c
für weitere Informationen.Hinweis: Die
:write_c
Informationen stammen von: /programming/1237780/vim-execute-shell-command-without-filteringNun allgemeiner:
Dieses Beispiel mit
wc
ist ziemlich simpel, aber Sie können sich vorstellen, wie mächtig dies ist. UNIX verfügt bereits über eine Vielzahl von Textverarbeitungsbefehlen, die Sie problemlos in Vim verwenden können, ohne Vimscript (yech) berühren zu müssen.Darüber hinaus kann jedes Befehlszeilenprogramm, das Sie schreiben und das sich mit stdin / stdout befasst, jetzt nicht nur an Ihrem Terminal, sondern auch in Vim von Nutzen sein.
Ich finde mich zum Beispiel beim Laufen
tidy
undjson-format
von innen heraus vim, um Dateien, die ich mir anschaue, lesbarer zu machen.Sie können dasselbe unter Windows tun, aber Windows verfügt nicht über einen so umfangreichen Befehlssatz. Sie können jedoch immer GNUWin32 oder ähnliches installieren , um diese Vorteile zu nutzen.
quelle
Für eine programmatische Methode innerhalb von Vimscript hat dies bei mir funktioniert, wenn die Auswahl auf eine Zeile beschränkt ist:
(Verwenden von
virtcol(..)
anstelle voncol(..)
, sodass es erwartungsgemäß funktioniert, wenn:set ve=all
es aktiv ist.)quelle