Як рахувати символи в буфері, включаючи пробіли?


12

Мені потрібно побачити, скільки символів містить мій текст під час набору. Я знайшов ці сторінки Emacs Wiki: Кількість слів , і є рішення, дуже близьке до того, що мені потрібно: я використав друге рішення з цієї сторінки (Показати кількість слів у рядку режиму), оскільки він показує кількість символи теж.

Але це не рахує пробілів. Чи є якесь рішення, яке відображатиме кількість символів, включаючи пробіли в рядку режиму? В ідеалі, встановивши цільову кількість символів (але це не обов'язково).

Відповіді:


4

Ця mode-line-formatзмінна вже має вбудовану можливість, наступний фрагмент повинен додати, що в кінці вашого режиму.

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

Від документа:

% i - друк розміру буфера.

Технічно це розмір у байтах, тому він може не збігатися ідеально з кількістю знаків залежно від кодування, яке ви використовуєте.

Ви також можете спробувати, M-x size-indication-mode.


Якщо кількість байтів вас не влаштовує, ви можете скористатися наступним фрагментом, який може спричинити або не спричинити відставання під час набору на дуже великих буферах.

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

10

Крім того, підраховуйте слова та символи, включаючи пробіли у виділенні:

M-x count-words-region

4

Або ви могли просто M->C-x =. Відповідна інформація з’явиться у мінібуфері. (Використовуються команди: end-of-bufferі what-cursor-position).


3

Інші відповіді дали вам корисну інформацію, я думаю. Ви можете розмістити все, що завгодно, в рядку режиму, і одне місце для початку - це size-indication-modeі змінна змінна mode-line-position.

Інші відповіді, як правило, повідомляють про поточну позицію буфера відносно початку буфера (або початку його поточного обмеження, якщо він звужений).

Іноді ви можете захотіти позицію відносно якоїсь іншої позиції. Для цього modeline-posn.elможе допомогти бібліотека (див. Положення рядка в режимі ).

Коли регіон не активний, він показує вам звичайну інформацію (ну, трохи краще). Але коли він активний, він показує (у рядку режиму) кількість символів та рядків у виділеному (регіоні). Отже, щоб побачити поточну позицію щодо якоїсь іншої позиції, просто використовуйте C-SPCдля встановлення позначки на одній з позицій. C-x C-xактивує область, яка показує вам її розмір у символах (та рядках) у рядку режиму.


2

Якщо я не розумію, ви можете просто використати point-maxдля отримання кількості символів у буфері:

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

1
Це працює, але це не зовсім те, що я хочу: я хочу мати кількість персонажів завжди перед очима, поки я друкую, не отримуючи його "на вимогу".
Агладра

@Aglavra додайте його до свого режиму.
Джордон Біондо

Ага. Ви можете спробувати size-indication-modeзмінити mode-line-positionзмінну.
Дан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.