如何跳过elisp中的符号?

时间:2013-09-23 07:42:47

标签: regex emacs syntax elisp

使用

跳过空格时可以正常工作
(skip-chars-forward "\s-")

我似乎无法使用

跳过符号
(skip-chars-forward "\s_")

也许我错误地使用了她的命令,它在第一种情况下以某种方式恢复了?

相关文件似乎没有回答这个问题:

http://www.gnu.org/software/emacs/manual/html_node/elisp/Syntax-Class-Table.html http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexps.html

3 个答案:

答案 0 :(得分:2)

从搜索表单中获取的语法符号在跳过表单中不可用。使用skip-syntax-...

(skip-syntax-forward "_")

或使用自己的一组字符移动

(setq "my-choice" "[[:alnum:]].")

")"之后评估表单应该跳到"...."

之后
(skip-chars-forward my-choice)asdf....

或者,使用Emacs Werkstatt Mx ar-symbol- TAB 显示一大堆处理符号的命令:前进,后退,删除,复制,隐藏等等

BTW,skip-chars不采用语法的原因可能是速度。 Skip-chars非常快,读取和翻译语法表可能会降低它的速度。

答案 1 :(得分:1)

您可能需要(skip-syntax-forward "w_"),它会跳过单词和符号字符。

如果要匹配以字符串形式编写的 regexp 中的语法类,要传递给search-regexp-forward等函数,则需要加倍反斜杠:"\\s-"。但是skip-syntax-forward的参数不是正则表达式,只是一个字符串,其中每个字符代表一个语法类。

答案 2 :(得分:0)

您使用的命令错误,应该是:

(skip-chars-forward " \n\t")
(skip-chars-forward "A-Z_a-z-0-9")

无论你在字符串中添加什么内容都会被放入[]正则表达式构造中, 并且它不会展开\\s-