Wie zähle ich Zeichen im Puffer einschließlich Leerzeichen?


12

Ich muss sehen, wie viele Zeichen meinen Text enthalten, während ich tippe. Ich fand diese Seiten von Emacs Wiki: Wörter zählen , und es gibt eine Lösung , ganz in der Nähe , was ich brauche: Ich habe die zweite Lösung auf dieser Seite verwendet (Zeigen Sie die Anzahl der Wörter in der Mode-Linie), weil sie die Menge an zeigt Zeichen auch.

Aber es zählt keine Leerzeichen. Gibt es eine Lösung, die die Anzahl der Zeichen einschließlich Leerzeichen in der Moduszeile anzeigt? Idealerweise mit der Einstellung der Zielanzahl von Zeichen (dies ist jedoch nicht erforderlich).

Antworten:


4

Die mode-line-formatVariable verfügt bereits über diese integrierte Funktion. Das folgende Snippet sollte diese am Ende Ihrer Moduszeile hinzufügen.

(add-to-list 'global-mode-string '(" %i"))

Aus dem Dokument:

% i - Gibt die Größe des Puffers aus.

Technisch gesehen ist dies die Größe in Bytes, sodass die Anzahl der Zeichen je nach verwendeter Codierung möglicherweise nicht perfekt übereinstimmt.

Sie können auch versuchen , M-x size-indication-mode.


Wenn die Anzahl der Bytes Sie nicht zufriedenstellt, können Sie das folgende Snippet verwenden, das bei der Eingabe in sehr großen Puffern zu Verzögerungen führen kann.

(add-to-list 'global-mode-string
             '(:eval (format " %s"
                       (let ((tab-width 1))
                         (string-width (buffer-string))))))

9

Alternativ können Sie Wörter und Zeichen einschließlich Leerzeichen in einer Auswahl zählen:

M-x count-words-region

4

Oder du könntest einfach M->C-x =. Die entsprechenden Informationen werden im Minibuffer angezeigt. (Verwendete Befehle: end-of-bufferund what-cursor-position).


3

Andere Antworten haben Ihnen nützliche Informationen gegeben, denke ich. Sie können alles, was Sie wollen, in die Moduszeile einfügen, und ein Startpunkt ist eine size-indication-modevariable Variable mode-line-position.

Die anderen Antworten geben im Allgemeinen die aktuelle Pufferposition relativ zum Start des Puffers an (oder den Beginn seiner aktuellen Einschränkung, wenn er eingegrenzt ist).

Manchmal möchten Sie vielleicht die Position relativ zu einer anderen Position. Hierfür kann die Bibliothek modeline-posn.elhelfen (siehe Position der Moduslinie ).

Wenn die Region nicht aktiv ist, werden Ihnen die üblichen Informationen angezeigt (etwas besser). Wenn es jedoch aktiv ist, zeigt es Ihnen (in der Moduszeile) die Anzahl der Zeichen und Zeilen in der Auswahl (Region). Um die aktuelle Position relativ zu einer anderen Position anzuzeigen C-SPC, setzen Sie einfach die Markierung an einer der Positionen. C-x C-xAktiviert die Region, deren Größe in Zeichen (und Zeilen) in der Moduszeile angezeigt wird.


2

Wenn ich nicht falsch verstehe, können Sie einfach point-maxdie Anzahl der Zeichen im Puffer ermitteln:

(defun count-chars ()
  (interactive)
  (save-restriction
    (widen)
    (message "%s characters" (1- (point-max)))))

1
Es funktioniert, aber das ist nicht genau das, was ich will: Ich möchte immer eine Anzahl von Zeichen vor Augen haben, während ich tippe, ohne es "auf Anfrage" zu bekommen.
Aglavra

@Aglavra füge es deiner Moduszeile hinzu.
Jordon Biondo

Ah. Vielleicht möchten Sie es versuchen size-indication-modeoder mode-line-positionstattdessen die Variable ändern.
Dan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.