Автокоманда Vim создает странный файл

xargs ожидает аргументы, заключенные в кавычки некоторым странным способом который find не производит. Никогда не используйте xargs в сочетании с find, если Вы не знаете, что Ваши имена файлов не содержат \"' или пробел.

Вместо использования xargs, позволить find непосредственно назовите программу, которую Вы хотите запустить.

find . -exec grep -ns 'add_action('\''save_post'\'',' {} +

С exec … {} +, программа вызывается однажды для многих файлов сразу, как с xargs. Некоторые более старые версии find не поддерживать + здесь ¹, затем необходимо использовать ; вместо этого, который вызывает grep однажды на файл.

Можно альтернативно использовать find … -print0 | xargs -0, если Ваши утилиты поддерживают его ¹. -print0 опция говорит find испускать имена, разделенные пустым байтом, и -0 говорит xargs ожидать разделенный от пустого указателя вход а не сделать любую интерпретацию кавычки.

Отметьте заключение в кавычки выше: между одинарными кавычками все символы интерпретируются буквально, за исключением того, что ' показывает конец литеральной строки. Так '\'' эффективно способ поместить литеральную одинарную кавычку в единственно заключенной в кавычки строке; официально, это “' закончите кавычку, \ литерал ' одинарная кавычка, ' начните кавычку”.

В особом случае grep, если Ваша поддержка внедрения это ¹, можно обойтись без find и используйте grep -r искать в каталоге рекурсивно:

grep -r 'add_action('\''save_post'\'',' .

¹ Linux, Cygwin, FreeBSD и OSX поддерживают эти функции.

0
05.06.2013, 14:51
2 ответа

Это ожидается; autocmd выполняет команду Ex w:m1=matchadd('ErrorMsg','\%>100v.\+', -1). w краткая форма write, то, что следует, интерпретируется как имя файла.

Я предполагаю a :let пропал, потому что затем команда имеет смысл: let w:m1=... определяет локальную переменную окна m1 и присваивает результат matchadd() звоните в него.


autocmd, кажется, выделяет все символы вне столбца 100. Обратите внимание, что в недавних версиях Vim 7.3, можно использовать 'colorcolumn' функция этого:

:set colorcolumn=101
1
28.01.2020, 02:53
  • 1
    Благодарит, я действительно отсутствовал let... вероятно, d+w где-нибудь случайно. Так или иначе я буду использовать colorcolumn с этого времени. –  Elias Van Ootegem 05.06.2013, 16:43

Если Вы добавляете,

набор vbs=1 "Подробное сообщение об ошибке Нуль = Норма к Девять = Max

в Ваш .vimrc и запускаются с 3, или 4 он покажет Вам, все файлы загрузили/назвали (и намного больше, поскольку Вы продвигаете к 9), поскольку Вы открываете энергию/файлы.

Не точный ответ, но мог помочь Вам разыскать его.

0
28.01.2020, 02:53
  • 1
    Bourne проблемы, Извините, забыл упоминать, что я уже попробовал это. Это просто сообщает мне это :m1=matchadd.... [NEW] был записан в $PWD. Спасибо за вход, все же. Ответ Ingo Karkat был корректен. Я не могу полагать, что отсутствовал let... И я буду изменять автокоманду regex на colorcolumn с этого времени :) –  Elias Van Ootegem 05.06.2013, 16:42
  • 2
    Да, я вижу другой ответ теперь, учу меня брать 10~15 для окончания моего ответа, я ожидал, что он был дан, поскольку я вводил и читал другой экран. Довольный у Вас есть ответ. –  Lenny_Nero 07.06.2013, 15:24

Теги

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