我发现将kill-word和forward-word视为空格并且例如将空格字符视为空格而烦恼。在下一行中杀死一切到最后一个字。我希望它停在线的尽头。
我尝试修改语法表以在字词定义中包含换行符,如下所示:
(modify-syntax-entry?\ n“w”)
这会产生所需的效果,但需要为每个语法表单独指定。
有没有办法在全球范围内实现这种效果?
答案 0 :(得分:3)
好吧,首先,我强烈建议您习惯于将换行符视为大部分空格。 Emacs通常会持续这样做,并试图逆转这种趋势可能是一场永无止境的战斗。
其次我同意Stefan给出的答案,即弄乱语法表,或者重新定义forward-word
本身,只会给你带来麻烦和悲伤。
如果你真的想要为M-d
和M-f
描述的行为,那么最好定义一组具有所需行为的新函数,并且可以绑定{ {1}}和M-d
键。
实际上,这将是改变任何emacs中某些核心功能的默认行为的传统方式。
也许是这样的? (几乎没有测试过)
M-f
答案 1 :(得分:1)
更改?\n
字符的语法会让您在各种模式下遇到麻烦。相反,您希望在交互式调用时更改forward-word
之类的行为(请注意,更改函数forward-word
的行为也会导致问题,因为它经常用于缩进代码等内容)。您可能希望了解subword-mode
如何工作以获取如何完成此操作的示例。
答案 2 :(得分:0)
我使用with-syntax-table
临时(和全局)修改语法表。
例如,我在syntax-subword
模式下使用它:
(defadvice syntax-subword-forward (around testing activate)
(with-syntax-table (copy-syntax-table (syntax-table))
(modify-syntax-entry ?\n ">")
ad-do-it))