Вы могли бы попробовать file
утилита. Согласно странице справочника:
Волшебные тесты используются для проверки на файлы с данными в особенности фиксированных форматов. Каноническим примером этого является двоичный исполняемый файл (скомпилированная программа) a.out файл, формат которого определяется в, и возможно в стандарте включают каталог.
Вам, возможно, придется играть вокруг с регулярным выражением, но чем-то как:
$ find -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary'
файл имеет много опций, таким образом, Вы могли бы хотеть более тщательно изучить страницу справочника. Я использовал первую опцию, я нашел, что, казалось, производил вывод easily-to-grep.
Эта проблема была решена по 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
если Вам включили его.
После большего количества поиска это похоже на самый легкий способ сделать, это с \_s
. Так, например:
/hello\_sworld
hello\_s\+world
если мог бы быть больше чем один пробельный символ между ними, конечно.
– Wodin
19.02.2011, 00:30
Путем я знаю о, не твердо, но это немного утомительно. Замените каждое пространство в своем поисковом запросе со следующим:
[ \t\n]\+
(Отметьте пространство после [
.) Это - синтаксис соответствия регулярного выражения. Сломанный, это означает:
[...]
средства соответствуют любому из списка символов в скобках.\t
Вкладка\n
Новая строка...\+
средства соответствуют одному или нескольким предыдущих.Для большего количества информации о регулярных выражениях можно спросить энергию:
:help regexp
:help usr_27
Я лично использовал бы [ \t\n]*
вместо пробелов. Это будет соответствовать на нуле или больше '', вкладка и новая строка. Таким образом, если один экземпляр Вашего шаблона поиска охватывает разрыв строки, но другой не делает, оба будут подобраны.