如何在emacs中实现Vim样式区分大小写的自动完成?

时间:2017-06-23 09:47:08

标签: emacs autocomplete case-sensitive

例如,在Vim中,如果当前缓冲区包含单词“Random”,并且我键入“random”然后按Ctrl-n,它将更改为“Random”。

但在emacs中,它表示“没有动态扩展”随机“发现”。

无论如何我能达到同样的效果吗?

1 个答案:

答案 0 :(得分:0)

你不会说你是如何试图扩展这个词的。我假设您使用dabbrev-expand M-/ )或dabbrev-completion M-C-/ )。< / p>

如果不是,请尝试设置变量 case-fold-search ,这是控制区分大小写的主要变量。有关控制区分大小写的更多信息,请参阅Emacs手册。在手册中,使用 i 查找以case开头的索引条目,例如:

  case conversion
  case in completion
  case-fold-search 
  case-replace
  case-sensitivity and completion
  case-sensitivity and tags search

假设您使用的是dabbrev:

查看变量dabbrev-case-fold-searchdabbrev-case-replace。使用C-h v查看其文档:

  

dabbrev-case-fold-search dabbrev.el中定义的变量。

     

其值为case-fold-search

     

当用作文件局部变量时,此变量可能存在风险。

     

文档:

     

控制dabbrev搜索是否应忽略大小写。

     

nil表示案件很重要。

     

值为case-fold-search表示如果case-fold-searchnil则情况重要。

     

任何其他非nil版本意味着案件并不重要。

     

您可以自定义此变量。

  

dabbrev-case-replace dabbrev.el中定义的变量。

     

其值为case-replace

     

当用作文件局部变量时,此变量可能存在风险。

     

文档:

     

dabbrev是否将缩写&n的案例模式应用于扩展。

     

nil表示保留扩展的案例模式。

     

case-replace表示case-replacenil时保留该值。

     

任何其他非nil值表示修改扩展   通过应用缩写的案例模式。

     

此变量仅在值为的时有效   dabbrev-case-fold-search指定忽略大小写。

     

您可以自定义此变量。

在此处发表评论后更新 -

我认为你说你想要完成&#34;或&#34;扩展&#34;您的输入randomRandom。 IOW,你想要从已经在缓冲区中的内容克隆案例。我不认为dabbrev就是这样的。

但是,标准库completion.el(包含在Emacs中)也提供了类似dabbrev的行为选项,它至少根据您的输入提供了案例强制(即反过来)。以下是图书馆评论所说的内容:

STRING CASING
 Completion is string case independent if case-fold-search has its
 normal default of T.  Also when the completion is inserted the case of the
 entry is coerced appropriately.
 [E.G.  APP --> APPROPRIATELY     app --> appropriately
        App --> Appropriately]