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

时间:2019-06-05 01:26:14

标签: vim

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

cnoremap <expr><CR> getcmdtype() =~ "[/?]" && getcmdline() !~ '\\c$' ? "\<End>\\c\<CR>" : "\<CR>"

但这会稍微降低可读性。我不知道有更好的解决方案吗?我不知道的专用选项?以下选项也被拒绝:

在进入命令行模式时设置选项,并在进入插入模式时禁用。如果先前搜索中有突出显示的匹配项,这将导致重新绘制屏幕。进入插入模式时突出显示的FooFOO将消失,进入命令行模式时将再次突出显示。

设置@/寄存器。

cnoremap <expr><CR> getcmdtype() =~ "[/?]" ? "\<Esc>:set @/ = histget("search")" : "\<CR>"
  1. 它不能在可视模式下工作(如果我错了,请纠正我)。
  2. 它也只进行正向搜索。

问题

如何在设置ignorecase的情况下完成区分大小写的插入(cmd行)操作,或者在未设置ignorecase的情况下如何进行不区分大小写的搜索。

要求

  1. 它在视觉/普通模式下均可工作。
  2. 前进/后退搜索。<​​/ li>
  3. 这种模式存在于历史中。

请记住,解决方案必须简单。我宁愿一直进行区分大小写的搜索,而不是保留用于搜索的插件。

1 个答案:

答案 0 :(得分:2)

为什么不只是亲吻它?

noremap / /\c
noremap ? ?\c

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