作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在vim中,当视觉选中文本时,我们可以使用y/CtrlR搜索高亮出现输入
但是这种匹配只在一行内起作用。如果我有以下代码:
if condition:
do_something()
do_something_else()
do_something_further()
else:
if someWeirdCondition:
// repeated code here
do_something()
do_something_else()
do_something_further()
有没有简单的方法来搜索前面有不同空格的 block 的出现?
我可以做 /\\_s*do_something()\\_s*do_something_else()\\_s*do_something_further()
Enter
do_something()
do_something_else()
do_something_further()
有没有更简单的方法?
最佳答案
这个映射,发现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--
模式下向前搜索选定的文本,而 # 被映射为向后搜索。
关于vim - 如何在 vim 中匹配文本 block ,忽略前导空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31955217/
我是一名优秀的程序员,十分优秀!