【问题标题】:How to change the way that emacs move over a word?如何改变emacs在一个单词上移动的方式?
【发布时间】:2016-01-15 07:49:55
【问题描述】:

我是一名初级 emacser 。我想知道如何改变·emacs·识别单词的方式。

例如,我在行尾:(font-spec :family "Microsoft YaHei" :size 13))),现在M-b 向后移动一个单词:

(使用符号| 标记插入符号位置)

emacs:(font-spec :family "Microsoft YaHei" :size |13)))
sublime:(font-spec :family "Microsoft YaHei" :size 13|)))

M-bagian

emacs:(font-spec :family "Microsoft YaHei" :|size 13)))
sublime:(font-spec :family "Microsoft YaHei" :size |13)))

M-b几次

emacs:(font-spec :family "Microsoft YaHei" |:size 13)))
sublime:(font-spec :family "Microsoft YaHei" |:size 13)))

M-bagian

emacs:(font-spec :family "Microsoft |YaHei" :size 13)))
sublime:(font-spec :family "Microsoft YaHei|" :size 13)))

M-b多次

emacs:(font-spec :|family "Microsoft YaHei" :size 13)))
sublime:(font-spec :|family "Microsoft YaHei" :size 13)))

M-bagian

emacs:(font-|spec :family "Microsoft YaHei" :size 13)))
sublime:(font-spec |:family "Microsoft YaHei" :size 13)))

emacs 一个字的移动方式太奇怪了,无法适应它。我更喜欢sublime的方式。我想知道如何改变emacs在word上移动的方式。thx

【问题讨论】:

标签: emacs


【解决方案1】:

Emacs 使用语法表,每个字符都属于一个指定的语法类。语法表可能因缓冲区而异,通常根据使用的主要模式的要求而定。

C-hig (elisp) Syntax Tables RET

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

【讨论】:

  • 我尝试了 .emacs 文件中的 elisp 代码片段。但我遇到了一个例外Symbol's function definition is void : case。怎么了?顺便说一句,语法表很难理解 T_T
  • 抱歉,我的错。我使用了case,它需要加载cl。我已将其转换为没有这种依赖关系的简单 if 表单。是的,语法表可能不是初学者。但是如果你想了解 Emacs 在这里做了什么,那就是背后的逻辑。
  • 感谢您的回答。现在我正在尝试自定义移动像崇高这样的词的方式
猜你喜欢
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多