как искать строку без лидирующего символа в vim - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть конфигурационный файл с 500+ строками, однако есть только <10 строк без комментариев, все остальные строки закомментированы. </p>

Файл конфигурации должен сохранять свою целостность, только необходимые строки должны быть закомментированы, поэтому мой вопрос:

В 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 голосов
/ 07 ноября 2018

Если все комментарии начинаются с # в первом столбце и вас интересуют только непустые строки, вы можете выполнить поиск

/^[^#]

^ привязывает поиск в начале каждой строки, [^#] - это коллекция (:help /collection), которая отрицается (через ^ - один и тот же символ, другое значение!) для включения любого символа , но the #.

Чтобы включить пустые строки, добавьте \|^$. Чтобы также принимать пробелы в пустых строках, вместо этого введите \|^\s*$.

Использовать сворачивание вместо поиска

Если это большой файл, но на самом деле вас интересуют только его крошечные части, встроенный в Vim folding может удалить весь этот закомментированный беспорядок.

Вы можете определить пользовательский :help fold-expr, который сворачивает все те строки (getline()), которые не соответствуют (!~) вышеупомянутому регулярному выражению (теперь заключено в '...', потому что нам нужно строковое выражение):

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

Ваш буфер будет выглядеть так:

+-- 10 lines: ------------------------------------------------------------------------------
c.Application.log_format = '[%(name)s]%(highlevel)s %(message)s'
+--  3 lines: # Set the log level by value or name.
foo.bar = 1

Вы можете открывать и закрывать складки такими командами, как :help zo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...