文書内の注意を必要とする場所を示すための私の好ましい方法は、3つのアスタリスク***
です。 shift+right-word
またはshift+left-word
を使用して3つのアスタリスクを含む領域を選択するときは、これらの機能が3つのアスタリスクをスキップして次の単語に移動します。 bindings.el
を覗いたところ、left-word
とright-word
は、forward-word
とbackward-word
の適合であり、Cソースコードの組み込み関数にトレーサブルであることがわかりました。基本的には、私はleft-word
とright-word
の3つのアスタリスクのようなシンボルを探しています***
。記号を含むために前方単語/後方単語に代わるもの - 例えば、***
誰でも、単語や記号を左に、単語や記号を右に移動する方法を提案できますか?矢印キーが2回以上押された場合(例えば、left-word-or-symbols
とright-word-or-symbols
)、複数の単語を選択できるように、関数は左ワードと右ワードと同様に動作する必要があります。
次は、以下の便利な答えに基づいてカスタム関数である:
(defvar lawlist-movement-syntax-table
(let ((st (make-syntax-table)))
;; ` default = punctuation
;; ' default = punctuation
;; , default = punctuation
;; ; default = punctuation
(modify-syntax-entry ?{ "." st) ;; { = punctuation
(modify-syntax-entry ?} "." st) ;; } = punctuation
(modify-syntax-entry ?\" "." st) ;; " = punctuation
(modify-syntax-entry ?\\ "_" st) ;; \ = symbol
(modify-syntax-entry ?\$ "_" st) ;; $ = symbol
(modify-syntax-entry ?\% "_" st) ;; % = symbol
st)
"Syntax table used while executing custom movement functions.")
(defun lawlist-forward-entity()
"http://stackoverflow.com/q/18675201/2112489"
(interactive "^")
(with-syntax-table lawlist-movement-syntax-table
(cond
((eolp)
(forward-char))
((and
(save-excursion (< 0 (skip-chars-forward " \t")))
(not (region-active-p)))
(skip-chars-forward " \t"))
((and
(save-excursion (< 0 (skip-chars-forward " \t")))
(region-active-p))
(skip-chars-forward " \t")
(cond
((save-excursion (< 0 (skip-syntax-forward "w")))
(skip-syntax-forward "w"))
((save-excursion (< 0 (skip-syntax-forward ".")))
(skip-syntax-forward "."))
((save-excursion (< 0 (skip-syntax-forward "_()")))
(skip-syntax-forward "_()"))))
((save-excursion (< 0 (skip-syntax-forward "w")))
(skip-syntax-forward "w")
(if (and
(not (region-active-p))
(save-excursion (< 0 (skip-chars-forward " \t"))))
(skip-chars-forward " \t")))
((save-excursion (< 0 (skip-syntax-forward ".")))
(skip-syntax-forward ".")
(if (and
(not (region-active-p))
(save-excursion (< 0 (skip-chars-forward " \t"))))
(skip-chars-forward " \t")))
((save-excursion (< 0 (skip-syntax-forward "_()")))
(skip-syntax-forward "_()")
(if (and
(not (region-active-p))
(save-excursion (< 0 (skip-chars-forward " \t"))))
(skip-chars-forward " \t"))))))
(defun lawlist-backward-entity()
"http://stackoverflow.com/q/18675201/2112489"
(interactive "^")
(with-syntax-table lawlist-movement-syntax-table
(cond
((bolp)
(backward-char))
((save-excursion (> 0 (skip-chars-backward " \t")) (bolp))
(skip-chars-backward " \t"))
((save-excursion (> 0 (skip-chars-backward " \t")) (> 0 (skip-syntax-backward "w")))
(skip-chars-backward " \t")
(skip-syntax-backward "w"))
((save-excursion (> 0 (skip-syntax-backward "w")))
(skip-syntax-backward "w"))
((save-excursion (> 0 (skip-syntax-backward ".")))
(skip-syntax-backward "."))
((save-excursion (> 0 (skip-chars-backward " \t")) (> 0 (skip-syntax-backward ".")))
(skip-chars-backward " \t")
(skip-syntax-backward "."))
((save-excursion (> 0 (skip-syntax-backward "_()")))
(skip-syntax-backward "_()"))
((save-excursion (> 0 (skip-chars-backward " \t")) (> 0 (skip-syntax-backward "_()")))
(skip-chars-backward " \t")
(skip-syntax-backward "_()")))))
「C-s」と「C-r」を使用してアスタリスクを見つけてそれらを削除するのはなぜですか? –
@omouse私は数ヶ月前にEmacsに紹介されて以来、長年に渡って慣れ親しんだ基本的なワープロ機能をいくつか用意しています。 「良いスタートだったが、それほどではなかった。 'forward-symbol'とその逆がはるかに近づいてきました。 'lawlist-forward-entity' /' lawlist-backward-entity'の最新のカスタムドラフトは、カーソルの移動に関する私の個人的な好みをちょうど満たしています。基本的には、単語とは別に記号や句読点を扱い、空白をスキップするのが好きです。 – lawlist