ほとんどの場合、私はドイツ語の文章を書いています。ほとんどの単語は大文字で始まり、その後に小文字が続きます。ときどきタイピングが速すぎて、単語の 2 番目の文字が大文字で入力されることもあります。この問題を回避するために、2 番目の文字の大文字と小文字を自動的に変更する関数を作成できないか自問しました。オプションで、これは 3 番目以降が小文字の場合にのみ発生します。これが可能かどうか知っていますか、何か提案はありますか?
3 に答える
3
これは、入力時に修正される「常にオン」のバージョンです。すべて大文字の単語を入力できますが、大文字と小文字が混在していることを検出するとすぐに大文字になります。
(defun blah (s e l)
(let ((letter (string-to-char (word-before-point))))
(if (and (eq letter (upcase letter))
(not (eq (char-before) (upcase (char-before)))))
(capitalize-word -1))))
(add-to-list 'after-change-functions 'blah)
于 2010-08-08T12:08:26.973 に答える
3
次のコマンドは、最初の文字が大文字で、単語内の他のすべての文字が小文字の場合に、各単語の 2 文字目を小文字に変換します。
(defun fix-double-uppercase-at-start-of-words ()
(interactive)
(let ((case-fold-search nil))
(save-match-data
(while (re-search-forward "\\b\\([[:upper:]]\\)\\([[:upper:]]\\)\\([[:lower:]]*\\)\\b" nil t)
(replace-match (concat (match-string 1)
(downcase (match-string 2))
(match-string 3))
t)))))
このコマンドは、現在のカーソル位置からバッファーの (表示されている) 末尾までのすべての単語に対して機能します。
于 2010-08-07T20:45:00.473 に答える
2
于 2010-08-09T22:31:33.843 に答える