如果我使用Meta-/
自动填充ThisClass
等字词,则emacs会感到困惑并向我提供THISCLASS
或thisclass
。更糟糕的是,如果我输入ThisC
然后自动填充,则会Thisclass
,这非常令人沮丧。
有没有办法修改此行为?
答案 0 :(得分:8)
除了hippie-expand之外,您还可以通过自定义以下变量来实现dabbrev所需的行为:
dabbrev-case-fold-search is a variable defined in `dabbrev.el'.
Its value is nil
This variable is potentially risky when used as a file local variable.
Documentation:
Control whether dabbrev searches should ignore case.
A value of nil means case is significant.
A value of `case-fold-search' means case is significant
if `case-fold-search' is nil.
Any other non-nil version means case is not significant.
You can customize this variable.
答案 1 :(得分:7)
是的,请使用hippie-expand
:
(global-set-key (kbd "M-/") 'hippie-expand)
查看其中的wiki page和简洁manual page for it。
hippie-expand
与dabbrev
( M - / 的默认绑定)类似,但增加了更多功能,并且在此过程中修复了您指出的camelcase问题。
答案 2 :(得分:1)
虽然修改搜索行为是解决问题的一种方法,但另一种可能更好的方法是保持搜索行为不变,而是修改替换行为。
要完成此操作,请设置变量 dabbrev情况下替换 没有。
这种方式可能更好,因为即使您键入的内容不正确,它仍然会正确匹配,然后完成到正确的大小写。
示例:假设您有变量“aVariable”。如果更改搜索行为(将dabbrev-case-fold-search设置为nil),则键入“av”将与您的变量不匹配。但是,如果您改为替换行为(将dabbrev-case-replace设置为nil),则键入“av”将扩展为“aVariable”。
参考:http://www.gnu.org/software/emacs/manual/html_node/emacs/Dabbrev-Customization.html