如何在vim中搜索没有主角的行

时间:2018-11-07 14:45:27

标签: linux vim

我有一个500行以上的配置文件,但是,只有<10行未注释,其他所有行都已注释。

配置文件必须保持其完整性,仅需要注释的行应不加注释,所以我的问题是:

在vim中,如何搜索所有没有以“#”开头的行。

配置的示例部分如下:

#------------------------------------------------------------------------------
# Application(SingletonConfigurable) configuration
#------------------------------------------------------------------------------

## This is an application.

## The date format used by logging formatters for %(asctime)s
#c.Application.log_datefmt = '%Y-%m-%d %H:%M:%S'

## The Logging format template
#c.Application.log_format = '[%(name)s]%(highlevel)s %(message)s'

## Set the log level by value or name.
#c.Application.log_level = 30

谢谢。

1 个答案:

答案 0 :(得分:3)

如果第一列中所有注释均以#开头,并且您仅对非空行感兴趣,则可以搜索

/^[^#]

^将搜索锚定在每一行的开头,[^#]是一个否定(通过{{1 }}-相同的字符,不同的含义!)以包含任何{em>但 ^字符。

要包含空行,请附加#。要也接受空白行中的空格,请改为\|^$

使用折叠而不是搜索

如果这是一个大文件,但实际上您只对文件的一小部分感兴趣,那么Vim内置的:help /collection可以删除所有注释的杂物。

您可以定义一个自定义folding来折叠所有与上述正则表达式(现已包含在\|^\s*$中的行(getline())不匹配的行(!~),因为我们需要一个String表达式):

'...'

您的缓冲区将如下所示:

setlocal foldmethod=expr foldexpr=getline(v:lnum)!~'^[^#]'

您可以使用:help fold-expr之类的命令打开和关闭折叠。