Ich schreibe gerne Tutorials und Artikel für ein Programmierforum, das ich häufig besuche. Dieses Forum hat eine Zeichenbeschränkung pro Beitrag. Ich habe in der Vergangenheit Notepad ++ verwendet, um Beiträge zu schreiben. In der Statusleiste wird die Anzahl der lebenden Zeichen angezeigt. Ich fange an, gVim häufiger zu verwenden, und ich möchte zu diesem Zeitpunkt wirklich nicht mehr zu Notepad ++ zurückkehren, aber es ist sehr nützlich, diese Zeichenanzahl zu haben. Wenn ich über die Zählung hinausgehe, füge ich den Beitrag normalerweise in Notepad ++ ein, damit ich sehen kann, wann ich genug getrimmt habe, um das Limit zu überschreiten.
Ich habe Vorschläge gesehen, :set ruler
die helfen würden, aber dies gibt nur die Zeichenanzahl über den aktuellen Spaltenindex in der aktuellen Zeile an. Das wäre toll, wenn ich keine Absatzumbrüche verwenden würde, aber ich bin mir sicher, dass das Lesen von mehreren tausend Zeichen in einem Absatz nicht angenehm ist.
Ich habe die Hilfe gelesen und gedacht, dass rulerformat
dies funktionieren würde, aber nachdem statusline
ich mir das verwendete Format angesehen habe, habe ich nichts gefunden, was eine Zeichenanzahl für den aktuellen Puffer angibt.
Ich habe gesehen, dass es Plugins gibt, die dies hinzufügen, aber ich tauche immer noch in gVim ein und bin mir nicht sicher, ob ich zufällige Plugins laden möchte, bevor ich verstehe, was sie tun. Ich würde es vorziehen, etwas zu verwenden, das in vim eingebaut ist, aber wenn es nicht existiert, existiert es nicht.
Was soll ich tun, um mein Ziel zu erreichen? Wenn es sich um ein Plugin handelt, verwenden Sie es und wie gut funktioniert es?
g CTRL-G
Ich wusste nicht, dass es das gibt. Nett!! [...] %
?schlägt vor, dass Sie entweder einen Probelauf eines Ersatzalas machen könnten
(der dann die Anzahl der übereinstimmenden Zeichen zurückmeldet) oder dass Sie sich
strlen()
für den visuell ausgewählten Text interessieren:("ist das unbenannte Register)
da Sie einen Ausdruck in Ihrer Statuszeile so aufrufen können
%{myfunc()}
, könnte dies ein guter Ausgangspunkt sein. Das Zählen der gesamten Zeit kann etwas zeitaufwändig sein, da Sie den gesamten Text auswählen und dann ziehen müssen, aber vielleicht ist es für Sie schon in Ordnung, die Anzahl der Bytes im "-Register anzuzeigen. Wenn Sie die Anzahl wirklich wissen möchten Anzahl der Zeichen im Puffer: Wählen Sie einfach ALLEN Text im Puffer visuell aus und ziehen Sie ihn heraus. Die Lösung wäre also:Dies gibt Ihnen die Anzahl der Zeichen im "-Register (die identisch mit der Anzahl der Bytes ist, wenn Sie den aktuellen Puffer auswählen und ziehen).
quelle
g<CTRL-g>
Methode in der akzeptierten Antwort tut .Eine Erweiterung der Antwort von Mrucci:
Sie können
wc
Linux verwenden, ohne die Datei zuerst speichern zu müssen, indem Sie die:w
Befehlsausgabe wie folgt ausführen:und Sie können es etwas zuordnen, wie von Mrucci erwähnt.
quelle
gibt Ihnen
Dies ist auch eine gute Lösung für Ihr Problem. Gehen Sie einfach zum Ende des Puffers mit Gund die in Ihrer Statuszeile angezeigte Bytenummer ist die Anzahl der Zeichen (natürlich nicht bei Multi-Byte-Zeichen). Geh zurück zu dem Ort, mit dem du gekommen bist ctrlo.
quelle
set statusline+=\ %o\ %N
(interessanterweise funktioniert er nicht für z. B. "t S" -Element) . Wenn Sie dann die Statuszeile unverändert sehen, müssen Sie sie ausführenset laststatus=2
. Für mich hat es die vorhandene transparente Statuszeile durch die neue ersetzt, die durchgehend schwarz ist und nur die Anzahl der Bytes enthält.Wenn Sie es gewohnt sind, Folgendes zu verwenden: w, um die Datei zu speichern, gibt der Status jedes Mal die Anzahl der geschriebenen Zeichen zurück. Zum Beispiel habe ich am Ende dieses Satzes ein: w gemacht (ja, ich benutze gvim, um diese Notiz zu schreiben) und es wurde gemeldet: 245C geschrieben.
quelle
Sie können einen Ausdruck anhängen, um den Bytecount des Puffers in der Statuszeile anzuzeigen:
Oder Sie können die Optionsvariable direkt ändern, um all das zu vermeiden:
quelle
...%{ line2byte(line(\"$\")+1))-1 }
, dass die Zeichen der letzten Zeile in die Zählung einbezogen werden. Bei diesem Ansatz werden Multibyte-Zeichen jedoch nicht korrekt gezählt.Problemumgehung, die ich verwendet habe, bis ich die Antwort von mrucci akzeptierte:
Ich habe zufällig herausgefunden, dass beim Speichern der Datei der Befehl die Anzahl der geschriebenen Bytes ausgibt. Dies ist mehr oder weniger eine Zeichenanzahl, das war also bisher nah genug. Ich mag auch Mruccis Antwort, möglicherweise mehr als diese, weil sie auch eine Wortanzahl hat.
quelle
Wenn Sie eine Dateikopie Ihres Textes behalten, schreiben Sie einfach Ihren Text auf die Festplatte - die Zeichenanzahl wird standardmäßig angezeigt.
Wenn Sie nicht über eine Datei behalten möchten, speichern Sie einfach Ihren Text auf
/dev/null
::w!/dev/null
.Sie können auch
wc
Ihre Zeichen zählen lassen ::%!wc -c
- Vergessen Sie aber nicht, zu drücken U, um Ihren Text wiederherzustellen.Wenn Sie dies häufig benötigen, ordnen Sie diese Befehle einfach einer Tastenfolge zu:
:map #wc :w!/dev/null^[
- Beachten Sie, dass das^[
als Ctrl+ eingegeben werden muss V Esc.Schalten Sie als ersten Indikator für die Textgröße einfach die Zeilennummern ein. zugegeben: das braucht ein bisschen gedankliche arithmetik ;-)
quelle
Nachdem ich diese Frage gestellt und die Antworten gelesen hatte (danke mrucci), fügte ich diese Zeilen meiner .vimrc-Initialisierungsdatei hinzu.
Ich überlasse es vim: Benutzern helfen, herauszufinden, was sie tun.
Persönlich finde ich es nützlich, Vim-Mappings mit zu starten. oder, da ich sie selten als erstes Zeichen eines Befehls benutze.
quelle