공백을 포함하여 버퍼의 문자를 계산하는 방법은 무엇입니까?


12

입력 할 때 텍스트를 포함하는 문자 수를 확인해야합니다. 이 페이지의 Emacs Wiki : Word count을 찾았고 필요한 것에 매우 가까운 솔루션이 있습니다.이 페이지의 두 번째 솔루션을 사용했습니다. 문자도.

그러나 공백을 계산하지 않습니다. 모드 줄에 공백을 포함하여 문자 수를 표시하는 솔루션이 있습니까? 목표 문자 수를 설정하는 것이 이상적입니다 (그러나 필요하지는 않습니다).

답변:


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))))))


4

아니면 간단하게 할 수 M->C-x =있습니다. 관련 정보가 미니 버퍼에 나타납니다. (사용 된 명령 : end-of-bufferwhat-cursor-position).


3

다른 답변은 유용한 정보를 제공했다고 생각합니다. 모드 라인에 원하는 것을 넣을 수 있으며 시작하는 한 곳은 size-indication-mode변수 variable 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

@Aglavra를 모드 라인에 추가하십시오.
Jordon Biondo

아 시도 size-indication-mode하거나 mode-line-position변수를 대신 수정 하려고 할 수 있습니다 .
Dan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.