0

/print用来搜索我未注释的print语句,因为我想将它们注释掉。我知道我可以使用搜索和替换来首先删除所有注释,然后应用它们,但我只是想找到下一个未注释的打印语句,我不知道该怎么做。

例如我有:

    #print fooVal
        #... do stuff
        #print barF
        #... more stuff
            print gold # <-- I want to use vim to jump straight to this line 

我想匹配这个,所以我不必循环遍历所有print语句(甚至是注释掉的语句)只是为了找到一个 print没有#.

我试过使用:s/^\s+print/^printvim不喜欢它。另外,我在这里查看,但找不到信息。

4

2 回答 2

2

在您的情况下,打印前没有空格。所以尝试使用'*'而不是'+'。

这对我有用:/^\s*print

不太方便的模式应该用 print 突出显示未注释的行:/^[^#]*\s*print

于 2013-02-03T05:43:00.403 回答
1

在你的情况下,@Taky 的解决方案是我认为最好的,但我注意到一些关于 vim 正则表达式的评论。最近几天我研究了这个,所以也许把它写下来是个好主意。

在 vimworld 中,使用 eg*^$则表达式的特殊字符被称为“魔法”(set magic默认)。默认+不是正则表达式字符,必须用于\+表示“正则表达式+”。然而,只要稍加改动,它也可能是“神奇的”,请阅读:vim 帮助 - 搜索模式(与 vim 编辑器中的相同,但作为 HTML,并且顶部具有良好的搜索功能)。
另见vim 帮助 - 模式

这是一个简短的指南(规则在列表中被否决):
设置:
:set ignorecase在搜索和替换
:set smartcase中忽略大小写,只要不使用大写字母就忽略大小写(ignorecase必须打开才能工作)。
:set magic能够将某些字符用作正则表达式特殊字符,例如*,而不必在它们前面加上\. 这是默认的(我认为)。

搜索模式中的规则(否决设置)
\c忽略大小写,\C区分大小写
使用例如/\cxxx“忽略大小写”,/\Cxxx区分大小写(与替换语法中\c的标志相同。使用“魔术”(与设置相同),没有“魔术” . is/xxx/yyy/i
\mmagic\M

这是在 vim 模式中使用的有趣部分+
\v被描述为“非常神奇”,我认为这就是我们在使用 regexp 时所习惯的。
\V“非常nomagic”,ALL是字面意思,只有\特殊含义。

现在,+可以像 in 一样直接使用/\v\s+print(但对你来说,最好*在那种特殊情况下使用,+不会找到开始该行的“插件”)。
例如,如果不使用,{表达式也必须有。\\v

提示:在 .vimrc 中进行这些映射以始终\v在搜索模式中使用:

" To get 'normal' behavior for regexps (use "\V" to avoid)
nnoremap / /\v
vnoremap / /\v

\v(而且在不需要的时候很容易“退格” )。

于 2013-02-04T19:53:47.080 回答