Antworten:
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
Sie vimrc
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).
V will display line count
v$ will display character count
Wenn Sie mehr als eine Zeile anzeigen, wird nur die Anzahl der Zeilen angezeigt
g-CTRL-G displays 'byte count' which seems to be 'char count' +1 per line
v
von Zeichenzahl zu Zeilenzahl, wenn die Auswahl mehrere Zeilen umfasst. Allerdings g CTRL-G
macht der Job gut.
:function VisualLength()
: exe 'normal "xy'
: echo "Visual: " . strlen(@x) . "\n"
: exe 'normal gv'
:endfunction
:map ,q "xy:call VisualLength()<CR>
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.
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):
:!wc
(Dann drücken Sie die Eingabetaste).
Dies wird in Ihrer Befehlszeile angezeigt als:
'<,'>!wc
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:
:w !wc
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-filtering
Nun 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
und json-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.
Für eine programmatische Methode innerhalb von Vimscript hat dies bei mir funktioniert, wenn die Auswahl auf eine Zeile beschränkt ist:
let amount = virtcol("'>") - virtcol("'<")
(Verwenden von virtcol(..)
anstelle von col(..)
, sodass es erwartungsgemäß funktioniert, wenn :set ve=all
es aktiv ist.)