kill-word / forward-word应该在换行符处停止

时间:2012-12-15 21:32:17

标签: emacs

我发现将kill-word和forward-word视为空格并且例如将空格字符视为空格而烦恼。在下一行中杀死一切到最后一个字。我希望它停在线的尽头。

我尝试修改语法表以在字词定义中包含换行符,如下所示:

  

(modify-syntax-entry?\ n“w”)

这会产生所需的效果,但需要为每个语法表单独指定。

有没有办法在全球范围内实现这种效果?

3 个答案:

答案 0 :(得分:3)

好吧,首先,我强烈建议您习惯于将换行符视为大部分空格。 Emacs通常会持续这样做,并试图逆转这种趋势可能是一场永无止境的战斗。

其次我同意Stefan给出的答案,即弄乱语法表,或者重新定义forward-word本身,只会给你带来麻烦和悲伤。

如果你真的想要为M-dM-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))