Я ищу инструмент, который дает строку поиска и некоторые заданные файлы, будет искать в каждой из них указанную строку, и если он найдет ее, откройте файл и перейдите к этой строке.

Может быть, это можно объяснить следующим фрагментом

search() {
  for file in $(find . -type f); do
    contains=$(cat "${file}" | grep -n "$1")
    [[ -n "${contains}" ]] && echo "${file}"
  done
}

Это упрощенная версия - она будет только печатать имя файла соответствующих файлов и искать каждый файл в текущем каталоге, но это работает. Мы могли бы расширить его и перейти к соответствующей строке, поместив что-то внутри условного

line=$(echo "${contains}" | sed -E 's/^(\d*):.*/\1/')
vim -c "${line}" "${file}"

Но это имеет огромные недостатки, особенно при поиске кода.

Есть ли инструмент для решения этой задачи?

1 ответ1

1

Я рекомендую использовать плагин Vim для Ack - ack.vim.

Плагин ack.vim для поиска «пакета» в исходном коде Ansible

(Скринкаст был сделан с помощью byzanz с использованием обёртки от Ask Ubuntu и оптимизирован с помощью gifsicle)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .