取消在vim中搜索空字符串

时间:2017-04-19 10:58:29

标签: search vim

在我的vimrc(我正在使用Nvim)中,我已经映射了

noremap <C-f> <Esc>
noremap! <C-f> <Esc>

noremap / /\v
noremap ? ?\v

自动获取very magic正则表达式搜索。但是,我经常错误地按 / (或改变我对搜索的看法),然后按 Cf (有时 Enter )取消它。但是,这会突出显示整个文件(因为所有内容都匹配"\v")。有时候我会记得在按下 C-f 之前删除两次,但这会让我震惊地转到我之前搜索的下一个实例(空搜索"")。

我可以按 Cc Esc 取消搜索,但我不习惯,我觉得我不得不以不舒服的方式移动手指这样做。是否可以使这更简单,更舒适?我能想到的两个解决方案,但不知道如何实施,将是

  1. 重新映射 C-f 在搜索时以 Esc C-c 的形式工作。
    1. 制作某种别名或更改某些设置,以便搜索"\v"(空正则表达式)或""(无)只会取消搜索。

2 个答案:

答案 0 :(得分:3)

答案很简单:

改变“按Enter键取消”操作的习惯。另请勿按ctrl-f进行搜索。

为什么你有这种奇怪的习惯?

  • 命令90%后按Enter键表示“启动”。

  • 在Vim中,ESC会比Enter更频繁地按下,一般而言,Esc键应该是“取消”一个操作

  • 你的意思是“在你的评论中没有搜索”,实际上不是“一无所有”,相反,它是“搜索任何东西”!

  • 在正常模式下映射ctrl-f是一个坏主意,它会“向下翻页”,而ctrl-b用于“向上翻页”。它们是我认为非常有用的功能。

  • 在命令/搜索模式下映射ctrl-f也是一个坏主意。 ctrl-f将您带到命令窗口,在那里您可以使用完整的vim normal / insert命令来编辑命令。非常有用。

如果您激活了'hlsearch',并想要删除匹配突出显示,我在vimrc中有这个,你可以尝试一下:

"clear hl search by pressing ,/
nnoremap <silent> <Leader>/  :noh<cr>

答案 1 :(得分:0)

我自己设法解决了!显然,改变

noremap <C-f> <Esc>
noremap! <C-f> <Esc>

noremap <C-f> <C-c>
noremap! <C-f> <C-c>

做了这个伎俩。我不太清楚为什么会这样,特别是因为按Esc似乎对C-c同样有效。