Vim 如何完成不区分大小写的缓冲区搜索和区分大小写的完成?

Vim 如何完成不区分大小写的缓冲区搜索和区分大小写的完成?,vim,Vim,我喜欢使用严格模式。当我键入小写变量(例如“path”)并按时,我不希望看到带有此前缀的常量或类名(例如“path\u to\u ROOT”或“PathGenerator”)。此外,常量通常位于完成的顶部,我必须按额外的键。这就是为什么我禁用了ignorecase选项。另一方面,在搜索缓冲区时,我会注意大小写。据我所知,没有专门的搜索或插入完成选项。我可以在模式中放置\c,但每次都需要额外的击键。好的,我们可以使用映射: cnoremap <expr><CR> getcm

我喜欢使用严格模式。当我键入小写变量(例如“path”)并按
时,我不希望看到带有此前缀的常量或类名(例如“path\u to\u ROOT”或“PathGenerator”)。此外,常量通常位于完成的顶部,我必须按额外的键。这就是为什么我禁用了
ignorecase
选项。另一方面,在搜索缓冲区时,我会注意大小写。据我所知,没有专门的搜索或插入完成选项。我可以在模式中放置
\c
,但每次都需要额外的击键。好的,我们可以使用映射:

cnoremap <expr><CR> getcmdtype() =~ "[/?]" && getcmdline() !~ '\\c$' ? "\<End>\\c\<CR>" : "\<CR>"
  • 它在视觉模式下不工作(如果我错了,请纠正我)
  • 它也只进行正向搜索
  • 问题

    如何使用
    ignorecase
    set完成区分大小写的插入(cmd行),或者如何在未设置
    ignorecase
    时执行不区分大小写的搜索

    要求

  • 它可以在视觉/正常模式下工作
  • 正向/反向搜索
  • 这种模式在历史上是存在的
  • 请记住,解决方案必须简单。我宁愿一直进行区分大小写的搜索,也不愿保留一个用于搜索的插件。

    为什么不亲吻它呢

    noremap / /\c
    noremap ? ?\c
    

    是的,它只保存了两次击键。

    对于视觉模式,您应该至少再添加两行。还有可能有其他方式进入搜索模式。主要原因是它降低了可读性。将
    \c
    放在搜索模式的末尾更好,但并不理想。@Evgeniy
    noremap
    适用于正常、可视和操作员挂起模式。因此,即使是
    d/pattern
    也可以毫无问题地工作。把
    \c
    放在哪里是口味的问题。就我个人而言,我一开始就喜欢。对不起,你说得对。我总是使用nnoremap,所以我甚至没有注意到您省略了“n”。
    noremap / /\c
    noremap ? ?\c