Bagaimana cara menghitung karakter dalam buffer termasuk spasi?

12

Saya perlu melihat, berapa banyak karakter yang mengandung teks saya, saat saya mengetik. Saya menemukan halaman Emacs Wiki ini: Jumlah kata , dan ada solusi yang sangat dekat dengan apa yang saya butuhkan: Saya menggunakan solusi kedua dari halaman ini (Tampilkan jumlah kata dalam mode-line), karena itu menunjukkan jumlah karakter juga.

Tapi itu tidak menghitung spasi. Apakah ada solusi, yang akan menunjukkan jumlah karakter termasuk spasi di mode-line? Idealnya, dengan mengatur jumlah target karakter (tapi ini tidak perlu).

Aglavra
sumber

Jawaban:

4

The mode-line-formatvariabel sudah memiliki kemampuan yang built-in, potongan berikut harus menambahkan bahwa di dekat akhir modus-line Anda.

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

Dari Doc:

% i - mencetak ukuran buffer.

Secara teknis, ini adalah ukuran dalam byte, sehingga mungkin tidak cocok dengan jumlah karakter tergantung pada pengkodean yang Anda gunakan.

Anda juga dapat mencoba M-x size-indication-mode,.


Jika jumlah byte tidak memuaskan Anda, Anda dapat menggunakan potongan berikut, yang mungkin atau mungkin tidak menyebabkan kelambatan saat Anda mengetik pada buffer yang sangat besar.

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

Atau, hitung kata dan karakter termasuk spasi dalam suatu pilihan:

M-x count-words-region
Kirill Yunussov
sumber
4

Atau Anda bisa saja M->C-x =. Info yang relevan akan muncul di minibuffer. (Perintah yang digunakan: end-of-bufferdan what-cursor-position).

wvxvw
sumber
3

Jawaban lain telah memberi Anda info berguna, saya pikir. Anda dapat meletakkan apa pun yang Anda inginkan di baris mode, dan satu tempat untuk memulai adalah size-indication-modevariabel dan variabel mode-line-position.

Jawaban lain umumnya memberi tahu Anda posisi buffer saat ini relatif terhadap awal buffer (atau awal pembatasan saat ini, jika dipersempit).

Terkadang Anda mungkin menginginkan posisi relatif terhadap beberapa posisi lain. Untuk itu, perpustakaan modeline-posn.eldapat membantu (lihat Posisi Garis Mode ).

Ketika wilayah tidak aktif, itu menunjukkan Anda informasi yang biasa (well, sedikit lebih baik). Tetapi ketika aktif itu menunjukkan Anda (dalam mode-line) jumlah karakter dan garis dalam pemilihan (wilayah). Jadi untuk melihat posisi saat ini relatif terhadap beberapa posisi lain, cukup gunakan C-SPCuntuk menetapkan tanda di salah satu posisi. C-x C-xmengaktifkan wilayah, yang menunjukkan ukurannya dalam karakter (dan garis) di mode-line.

Drew
sumber
2

Kecuali jika saya salah paham, Anda bisa menggunakan point-maxuntuk mendapatkan jumlah karakter di buffer:

(defun count-chars ()
  (interactive)
  (save-restriction
    (widen)
    (message "%s characters" (1- (point-max)))))
Dan
sumber
1
Ini berfungsi, tetapi ini bukan yang saya inginkan: Saya ingin selalu memiliki jumlah karakter di depan mata saya, saat saya mengetik, tidak membuatnya "sesuai permintaan".
Aglavra
@ Aglavra menambahkannya ke mode-line Anda.
Jordon Biondo
Ah. Anda mungkin ingin mencoba size-indication-mode, atau memodifikasi mode-line-positionvariabel, lalu.
Dan