Я использую Ack (https://github.com/mileszs/ack.vim) с флаг --literal
для поиска проектов в Vim. Я заметил, что всякий раз, когда я ищу строку с символами %
или #
, поиск не соответствует вещам, как я ожидал. Я провел некоторое исследование и обнаружил, что это связано с тем, что Vim расширяет эти символы в командах (%
— это текущий файл, а #
— что-то еще, не знаю, что именно).
Это довольно раздражающее поведение при выполнении поиска, учитывая, что эти символы довольно часто встречаются в коде. Есть ли способ избежать их, желательно автоматически, чтобы поиск работал как положено? Мое текущее отображение: nnoremap <leader>al :Ack --literal<space>
.
Пример
Скажем, у меня где-то есть селектор #body
в файле CSS, и я хочу его найти. Вот что я пробовал (не помогло):
:Ack --literal #body
:Ack --literal \#body
:Ack --literal "#body"
:Ack --literal "\#body"
Любые идеи, почему побег здесь не работает, как обычно, или что это вообще ищет? Эти примеры не соответствуют чему-либо.
Решение
Я заставил его работать, дважды экранируя символы. Например, :Ack --literal "\\#body"
отобразит :ack -H --nocolor --nogroup --column --literal "#body"
в строке состояния окна результатов и вызовет ожидаемые результаты. Кавычки тоже нужны.