更改Emacs前向词行为

gvk*_*vkv 20 emacs emacs23

正如标题所说,如何改变emacs前向词功能的行为?例如,假设[]是光标.然后:

my $abs_target_path[]= abs_path($target);
<M-f>
my $abs_target_path = abs[_]path($target);
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用Mf Mb,但据我所知,这不应该是必要的,我想改变它.特别是,我想要两件事:

  1. 当我按下Mf时,我想转到下一个单词的第一个字符,无论该点是在一个单词内,在一组空格内还是在其他地方.
  2. 在逐个模式的基础上自定义单词字符.毕竟,在CPerl模式下移动与TeX模式不同.

因此,在上面的例子中,第1项将使光标在击中Mf后移动到'a'(以及它左边的点).第2项允许我将下划线和符号定义为单词字符.

sco*_*zer 32

尝试:

(require 'misc)
Run Code Online (Sandbox Code Playgroud)

然后使用M-x forward-to-word并查看它是否符合您的要求.然后你可以重新绑定M-f

要使_C&C++模式不是单词分隔符(即使其成为单词成分),您可以这样做:

(modify-syntax-entry ?_ "w" c-mode-syntax-table)
(modify-syntax-entry ?_ "w" c++-mode-syntax-table)
Run Code Online (Sandbox Code Playgroud)

有关语法表的更多信息,请阅读此Wiki页面.语法表通常命名为tex-mode-syntax-tablecperl-mode-syntax-table.