入力中に、テキストがいくつの文字に含まれるかを確認する必要があります。Emacs Wiki:Word countのこのページを見つけました。必要なものに非常に近い解決策があります。このページの2番目の解決策(モードラインの単語数を表示)を使用しました。文字も。
ただし、スペースはカウントされません。モードラインのスペースを含む文字数を表示する解決策はありますか?理想的には、目標の文字数を設定します(ただし、これは必須ではありません)。
入力中に、テキストがいくつの文字に含まれるかを確認する必要があります。Emacs Wiki:Word countのこのページを見つけました。必要なものに非常に近い解決策があります。このページの2番目の解決策(モードラインの単語数を表示)を使用しました。文字も。
ただし、スペースはカウントされません。モードラインのスペースを含む文字数を表示する解決策はありますか?理想的には、目標の文字数を設定します(ただし、これは必須ではありません)。
回答:
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))))))
他の答えはあなたに有用な情報を与えたと思います。あなたはモードラインに好きなものを置くことができ、最初に始める場所はsize-indication-mode
変数variableですmode-line-position
。
他の回答は一般に、バッファーの開始(または、狭められている場合は現在の制限の開始)に対する現在のバッファーの位置を示します。
場合によっては、他の位置との相対的な位置が必要になることがあります。そのために、ライブラリmodeline-posn.el
が役立ちます(モード行の位置を参照)。
リージョンがアクティブでない場合は、通常の情報が表示されます(まあ、少し良いです)。ただし、アクティブな場合は、選択範囲(リージョン)の文字数と行数が(モード行に)表示されます。したがって、他の位置との相対的な現在の位置を確認するには、を使用C-SPC
して、マークを位置の1つに設定します。 C-x C-x
リージョンをアクティブにし、モードラインに文字(および行)でサイズを表示します。
私が誤解しているのでない限りpoint-max
、バッファ内の文字数を取得するために使用することができます:
(defun count-chars ()
(interactive)
(save-restriction
(widen)
(message "%s characters" (1- (point-max)))))
size-indication-mode
そのmode-line-position
場合は、代わりにを試すか、変数を変更してください。