Come contare i caratteri nel buffer inclusi gli spazi?


12

Ho bisogno di vedere quanti caratteri contiene il mio testo mentre scrivo. Ho trovato queste pagine di Emacs Wiki: Conteggio parole , e c'è una soluzione molto vicina a ciò di cui ho bisogno: ho usato la seconda soluzione da questa pagina (Mostra il numero di parole nella riga della modalità), perché mostra la quantità di anche i personaggi.

Ma non conta gli spazi. C'è qualche soluzione che mostrerà la quantità di caratteri inclusi gli spazi in modalità linea? Idealmente, con l'impostazione della quantità target di caratteri (ma questo non è necessario).

Risposte:


4

La mode-line-formatvariabile ha già quella funzionalità integrata, il seguente frammento dovrebbe aggiungerlo vicino alla fine della linea di modalità.

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

Dal documento:

% i - stampa la dimensione del buffer.

Tecnicamente, questa è la dimensione in byte, quindi potrebbe non corrispondere perfettamente al numero di caratteri a seconda della codifica utilizzata.

Si può anche provare, M-x size-indication-mode.


Se il numero di byte non ti soddisfa, puoi utilizzare il frammento seguente, che può causare o meno lag durante la digitazione su buffer molto grandi.

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

10

In alternativa, conta parole e caratteri inclusi gli spazi in una selezione:

M-x count-words-region

4

O potresti semplicemente M->C-x =. Le informazioni pertinenti verranno visualizzate nel minibuffer. (Comandi utilizzati: end-of-buffere what-cursor-position).


3

Altre risposte ti hanno dato informazioni utili, credo. Puoi mettere quello che vuoi nella riga della modalità, e un punto da cui iniziare è la size-indication-modevariabile variabile mode-line-position.

Le altre risposte in genere indicano la posizione corrente del buffer rispetto all'inizio del buffer (o l'inizio della sua restrizione corrente, se è ridotta).

A volte potresti desiderare la posizione relativa ad un'altra posizione. Per questo, la libreria modeline-posn.elpuò essere d'aiuto (vedere Posizione linea modalità ).

Quando la regione non è attiva, mostra le solite informazioni (beh, un po 'meglio). Ma quando è attivo ti mostra (nella riga della modalità) il numero di caratteri e linee nella selezione (regione). Quindi, per vedere la posizione corrente rispetto ad un'altra posizione, basta usare C-SPCper impostare il segno in una delle posizioni. C-x C-xattiva la regione, che ti mostra la sua dimensione in caratteri (e linee) nella riga della modalità.


2

A meno che non mi fraintenda, potresti semplicemente usare point-maxper ottenere il numero di caratteri nel buffer:

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

1
Funziona, ma non è esattamente quello che voglio: voglio avere un numero di caratteri sempre davanti ai miei occhi, mentre sto scrivendo, non ottenendolo "su richiesta".
Aglavra,

@Aglavra aggiungilo alla tua linea di modalità.
Jordon Biondo,

Ah. Quindi potresti voler provare size-indication-modeo modificare la mode-line-positionvariabile.
Dan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.