Emacs中前向词/后向词的任意字符

时间:2011-09-25 08:50:02

标签: emacs elisp

如何向前向/后向单词功能添加任意字符(例如连字符),因此Emacs会将“k-vector”等单词作为单个单词处理。关于双击单词的同样问题。

4 个答案:

答案 0 :(得分:5)

语法表定义哪个字符被视为单词成分。你可以read about it here

答案 1 :(得分:1)

Emacs" word"的概念是相当固定的,并不是你想要的。你可以搞乱语法表,但它可能会破坏主模式的功能。

AFAICT你想要的是处理Emacs所称的"符号"而不是"单词"。例如。使用forward-symbolbackward-symbol命令。

使用其他命令的最简单方法可能是启用superword-mode

答案 2 :(得分:0)

在您的.emacs文件中添加以下内容,以便为每种主要模式的字词添加连字符:

(add-hook 'after-change-major-mode-hook
  (lambda ()
    (modify-syntax-entry ?- "w")))

答案 3 :(得分:-1)

您可以使用此代码使用正则表达式,它使用空格或父项作为单词分隔符

(defun backward-word-with-dash ()
  (interactive)
  (search-backward-regexp "[ ()][A-Za-z\-]+ *")
  (forward-char))

(defun forward-word-with-dash ()
  (interactive)
  (search-forward-regexp " *[A-Za-z\-]+[ ()]")
  (backward-char))

(global-set-key "\M-b" 'backward-word-with-dash)
(global-set-key "\M-f" 'forward-word-with-dash)

如果您想要其他字符,只需将其添加到正则表达式