我有一个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
谢谢。
答案 0 :(得分:3)
如果第一列中所有注释均以#
开头,并且您仅对非空行感兴趣,则可以搜索
/^[^#]
^
将搜索锚定在每一行的开头,[^#]
是一个否定(通过{{1 }}-相同的字符,不同的含义!)以包含任何{em>但 ^
字符。
要包含空行,请附加#
。要也接受空白行中的空格,请改为\|^$
。
如果这是一个大文件,但实际上您只对文件的一小部分感兴趣,那么Vim内置的:help /collection
可以删除所有注释的杂物。
您可以定义一个自定义folding
来折叠所有与上述正则表达式(现已包含在\|^\s*$
中的行(getline()
)不匹配的行(!~
),因为我们需要一个String表达式):
'...'
您的缓冲区将如下所示:
setlocal foldmethod=expr foldexpr=getline(v:lnum)!~'^[^#]'
您可以使用:help fold-expr
之类的命令打开和关闭折叠。