gpt4 book ai didi

vim - 如何在 vim 中匹配文本 block ,忽略前导空格

转载 作者:行者123 更新时间:2023-12-02 04:47:10 25 4
gpt4 key购买 nike

在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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com