我是一名初级emacser。我想知道如何改变·emacs·识别单词的方式。
例如,我在行尾:(font-spec :family "Microsoft YaHei" :size 13)))
,现在M-b
向后移动一个单词:
(使用符号|
标记插入符号位置)
emacs的: (font-spec :family "Microsoft YaHei" :size |13)))
的升华: (font-spec :family "Microsoft YaHei" :size 13|)))
M-b
agian
emacs的: (font-spec :family "Microsoft YaHei" :|size 13)))
的升华: (font-spec :family "Microsoft YaHei" :size |13)))
M-b
几次
emacs的: (font-spec :family "Microsoft YaHei" |:size 13)))
的升华: (font-spec :family "Microsoft YaHei" |:size 13)))
M-b
agian
emacs的: (font-spec :family "Microsoft |YaHei" :size 13)))
的升华: (font-spec :family "Microsoft YaHei|" :size 13)))
M-b
几次
emacs的: (font-spec :|family "Microsoft YaHei" :size 13)))
的升华: (font-spec :|family "Microsoft YaHei" :size 13)))
M-b
agian
emacs的: (font-|spec :family "Microsoft YaHei" :size 13)))
的升华: (font-spec |:family "Microsoft YaHei" :size 13)))
移动emacs
的单词的方式太过不适应它。我更喜欢sublime
的方式。我想知道如何改变emacs在word.thx上移动的方式
答案 0 :(得分:2)
Emacs使用语法表,每个字符都属于指定的语法类。语法表可能因缓冲区而异,通常根据使用的主要模式的要求而定。
参见 C-h i g (elisp) Syntax Tables
RET
forward-word
和backward-word
找到“word”语法的下一个/上一个字符,然后跳过所有后续连续的“word”语法字符。
我不知道Sublime正在使用什么规则,并且无法从您的示例中确定这些规则,但也许这样的事情会更符合您的喜好?
(defun my-backward-word-or-other ()
"Move over the preceding word or non-word characters."
(interactive)
(unless (bobp)
(if (eq ?w (char-syntax (char-before)))
(backward-word)
(skip-syntax-backward "^w"))))
(defun my-forward-word-or-other ()
"Move over the following word or non-word characters."
(interactive)
(unless (eobp)
(if (eq ?w (char-syntax (char-after)))
(forward-word)
(skip-syntax-forward "^w"))))
(global-set-key [remap forward-word] 'my-forward-word-or-other)
(global-set-key [remap backward-word] 'my-backward-word-or-other)