我已经将\角色定义为乳胶模式中的单词成分,我对结果非常满意.困扰我的唯一事情就是把一个序列\alpha\beta视为一个单词(当然这是预期的行为).
有没有办法让emacs将特定字符解释为单词"starter"?通过这种方式,它始终被认为是跟随它的单词的一部分,但从不是它之前的单词的一部分.
为清楚起见,这是一个例子:
\alpha\beta
^ ^
1 2
Run Code Online (Sandbox Code Playgroud)
如果该点是,1我按M-d,字符串"\ alpha"应该被杀死.如果点是,2我按M-<backspace>,字符串"\ beta"应该被杀死.
我怎样才能做到这一点?
另一个想法:您的要求与camelCase 的要求
非常相似。subword-mode
您无法自定义子字模式的行为——正则表达式是硬编码的——但您当然可以复制该库并根据您的目的进行修改。
M-x find-library RET subword RET
这可能是一个非常强大的解决方案。
编辑:根据建议更新评论:
根据记录,在函数和subword.el 中更改
[[:upper:]]to的每个实例效果很好 =) (只要“\”被定义为“w”语法)。[\\\\[:upper:]]subword-forward-internalsubword-backward-internal
就我个人而言,我更倾向于制作库的副本而不是直接编辑它,除非是为了使现有库更加通用,为此,最简单的解决方案似乎是将这些正则表达式移动到变量中 - - 之后,为了这种目的而拥有缓冲区本地修改版本将是微不足道的。
编辑 2:从 Emacs 24.3(当前是候选版本)开始,subword-mode 通过 newsubword-forward-regexp和subword-backward-regexp变量(用于简单修改)以及subword-forward-function和subword-backward-function变量(用于更复杂的修改)来促进这一点。
通过使这些正则表达式变量在乳胶模式下具有所需值的缓冲区本地,您可以直接使用子字模式。
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |