如何匹配vim中的文本块,忽略前导空格

时间:2015-08-12 02:46:25

标签: vim

在vim中,当在视觉上选择文本时,我们可以使用 y / Ctrl R 搜索突出显示的事件输入

但这场比赛只适用于一条线。如果我有以下代码:

clang

是否有简单的方法来搜索块的出现位置,前面有不同的空格?

我可以做 / if condition: do_something() do_something_else() do_something_further() else: if someWeirdCondition: // repeated code here do_something() do_something_else() do_something_further() 输入

\\_s*do_something()\\_s*do_something_else()\\_s*do_something_further()

有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

此映射找到here,可以帮助您实现它。基本上,它会自动化您解决此问题的方法 - 在行之间插入\_s(空格或换行符)。

" Search for selected text, forwards or backwards.
vnoremap <silent> * :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy/<C-R><C-R>=substitute(
  \escape(@", '/\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR>
  \gV:call setreg('"', old_reg, old_regtype)<CR>
vnoremap <silent> # :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy?<C-R><C-R>=substitute(
  \escape(@", '?\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR>
  \gV:call setreg('"', old_reg, old_regtype)<CR>

现在,您的 * 会映射为在--VISUAL--模式下搜索所选文本,而则向后搜索。