在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()
有更简单的方法吗?
答案 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--
模式下搜索所选文本,而#则向后搜索。