поиск энергии вокруг разрывов строки

Вы могли бы попробовать file утилита. Согласно странице справочника:

Волшебные тесты используются для проверки на файлы с данными в особенности фиксированных форматов. Каноническим примером этого является двоичный исполняемый файл (скомпилированная программа) a.out файл, формат которого определяется в, и возможно в стандарте включают каталог.

Вам, возможно, придется играть вокруг с регулярным выражением, но чем-то как:

$ find -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary'

файл имеет много опций, таким образом, Вы могли бы хотеть более тщательно изучить страницу справочника. Я использовал первую опцию, я нашел, что, казалось, производил вывод easily-to-grep.

12
19.02.2011, 00:45
4 ответа

Эта проблема была решена по http://vim.wikia.com/wiki/Search_across_multiple_lines. Включенный функция, которая может сделать то, в чем я нуждаюсь.

function! SearchMultiLine(bang, ...)
  if a:0 > 0
    let sep = (a:bang) ? '\_W\+' : '\_s\+'
    let @/ = join(a:000, sep)
  endif
endfunction
command! -bang -nargs=* -complete=tag S call SearchMultiLine(<bang>0, <f-args>)|normal! /<C-R>/<CR>

Затем можно сделать многострочное поисковое использование :S hello world и это преобразует это в hello\s\+world и ищите его. Другая хорошая функция - то, что это также добавит этот новый поиск к истории поиска. Это позволяет Вам возвращаться и изменять поисковое использование q/ если Вам нужно. Это может также использоваться, чтобы сделать замену с :%s//new thing/g. Оборотная сторона к этому - то, что это не использует incsearch если Вам включили его.

5
27.01.2020, 19:55

После большего количества поиска это похоже на самый легкий способ сделать, это с \_s. Так, например:

/hello\_sworld
14
27.01.2020, 19:55
  • 1
    Вы могли бы хотеть hello\_s\+world если мог бы быть больше чем один пробельный символ между ними, конечно. –  Wodin 19.02.2011, 00:30

Путем я знаю о, не твердо, но это немного утомительно. Замените каждое пространство в своем поисковом запросе со следующим:

[ \t\n]\+

(Отметьте пространство после [.) Это - синтаксис соответствия регулярного выражения. Сломанный, это означает:

  • [...] средства соответствуют любому из списка символов в скобках.
  • \t Вкладка
  • \n Новая строка
  • ...\+ средства соответствуют одному или нескольким предыдущих.

Для большего количества информации о регулярных выражениях можно спросить энергию:

:help regexp
:help usr_27
3
27.01.2020, 19:55

Я лично использовал бы [ \t\n]* вместо пробелов. Это будет соответствовать на нуле или больше '', вкладка и новая строка. Таким образом, если один экземпляр Вашего шаблона поиска охватывает разрыв строки, но другой не делает, оба будут подобраны.

1
27.01.2020, 19:55

Теги

Похожие вопросы