Làm thế nào để đếm các ký tự trong bộ đệm bao gồm cả không gian?


12

Tôi cần xem, có bao nhiêu ký tự chứa văn bản của tôi, khi tôi nhập. Tôi đã tìm thấy các trang này của Emacs Wiki: Word đếm và có một giải pháp rất gần với những gì tôi cần: Tôi đã sử dụng giải pháp thứ hai từ trang này (Hiển thị số lượng từ trong dòng chế độ), vì nó hiển thị số lượng nhân vật cũng vậy.

Nhưng nó không tính không gian. Có giải pháp nào, sẽ hiển thị số lượng ký tự bao gồm khoảng trắng trong chế độ dòng không? Lý tưởng nhất là với việc thiết lập số lượng mục tiêu của các ký tự (nhưng điều này là không cần thiết).

Câu trả lời:


4

Các mode-line-formatbiến đã có mà khả năng tích hợp, đoạn sau đây cần nói thêm rằng gần cuối của chế độ trực tuyến của bạn.

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

Từ tài liệu:

% i - in kích thước của bộ đệm.

Về mặt kỹ thuật, đây là kích thước tính theo byte, vì vậy nó có thể không khớp hoàn hảo số lượng ký tự tùy thuộc vào mã hóa bạn sử dụng.

Bạn cũng có thể thử M-x size-indication-mode.


Nếu số byte không thỏa mãn bạn, bạn có thể sử dụng đoạn mã sau, điều này có thể hoặc không gây ra độ trễ khi bạn nhập vào bộ đệm rất lớn.

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

10

Ngoài ra, đếm từ và ký tự bao gồm khoảng trắng trong vùng chọn:

M-x count-words-region

4

Hoặc bạn có thể đơn giản M->C-x =. Các thông tin liên quan sẽ xuất hiện trong xe buýt nhỏ. (Các lệnh được sử dụng: end-of-bufferwhat-cursor-position).


3

Những câu trả lời khác đã cho bạn thông tin hữu ích, tôi nghĩ vậy. Bạn có thể đặt bất cứ thứ gì bạn muốn vào dòng chế độ, và một nơi để bắt đầu là size-indication-modebiến và biến mode-line-position.

Các câu trả lời khác thường cho bạn biết vị trí bộ đệm hiện tại so với thời điểm bắt đầu bộ đệm (hoặc bắt đầu hạn chế hiện tại của nó, nếu nó bị thu hẹp).

Đôi khi bạn có thể muốn vị trí liên quan đến một số vị trí khác. Vì thế, thư viện modeline-posn.elcó thể giúp đỡ (xem Vị trí Dòng Chế độ ).

Khi khu vực không hoạt động, nó sẽ hiển thị cho bạn thông tin thông thường (tốt hơn một chút). Nhưng khi nó hoạt động, nó sẽ hiển thị cho bạn (trong dòng chế độ) số lượng ký tự và dòng trong vùng chọn (vùng). Vì vậy, để xem vị trí hiện tại so với một số vị trí khác, chỉ cần sử dụng C-SPCđể đặt dấu ở một trong các vị trí. C-x C-xkích hoạt vùng, cho bạn thấy kích thước của nó theo các ký tự (và dòng) trong dòng chế độ.


2

Trừ khi tôi hiểu lầm, bạn chỉ có thể sử dụng point-maxđể lấy số lượng ký tự trong bộ đệm:

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

1
Nó hoạt động, nhưng đây không phải là chính xác những gì tôi muốn: Tôi muốn có số lượng nhân vật luôn ở trước mắt, trong khi tôi đang gõ, không nhận được "theo yêu cầu".
Aglavra

@Aglavra thêm nó vào dòng chế độ của bạn.
Jordon Biondo

Ah. Thay vào đó, bạn có thể muốn thử size-indication-modehoặc sửa đổi mode-line-positionbiến.
Dân
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.