2012-03-08 2 views
5

В vim, как я могу найти все вхождения переменной в файлы под определенным каталогом?Как найти все вхождения переменной в Vim?

Я знаю, что vimgrep работает иногда, но он ищет только текст и не работает, если другие классы имеют переменные с одним и тем же именем, и мне нужна переменная под определенным классом.

Что мне делать? Или я должен получить IDE вместо этого?

+1

Да, использовать IDE. Vim использует только основные механизмы, такие как регулярные выражения или бинарный поиск: он не понимает ваш код так, как делает IDE. – romainl

+0

На каких языках вы работаете? Предложения 'cscope' хороши для C-подобных языков, но не для других AFAIK. –

ответ

11

Почему вы хотите использовать другую среду IDE, если у вас ее уже есть? Вим является IDE, который настраивается и использоваться для различных языков ..

Вы можете использовать cscope для build a database вашего кода. Эта база данных

  • Позволяет искать код:
    • все ссылки на символ
    • определения глобальных
    • функции, вызываемые функции
    • функции вызова функции
    • текстовой строки
    • регулярное выражение pat крачки
    • файл
    • файлы, включая файл

Другие особенности Cscope:

  • Проклятия основе (текст экрана)
  • Информационная база данных является сгенерированный для более быстрого поиска и последующей ссылки
  • Нечеткий парсер поддерживает C, но достаточно гибкий, чтобы быть полезным для C++ и Java, и для использования в качестве обобщенной «базы данных grep» (используйте его для просмотра больших текстовых документов!)
  • Имеет режим командной строки для включение в скрипты или в качестве backend для GUI/frontend
  • Работает во всех стилях Unix, а также в большинстве операционных систем, контролируемых монополией.

После того, как база данных будет создана, вы можете browse through обычаев, переменные, функции и т.д.


Edit (слегка OT):
еще один крутой вещь, которая очень удобна при работе с Vim на коде является taglist плагин, который использует Ctags:

Плагин «Список тегов» является плагин для браузера исходного кода для Vim и содержит обзор структуры файлов исходного кода и позволяет эффективно просматривать файлы исходного кода для разных языков программирования .

+0

Намного лучше, чем vimgrep действительно ... Я пытаюсь ... – neuron

+0

+1 для cscope быть потрясающим. Обычно у меня обычно есть терминальная вкладка, открытая для cscope full-time. – alesplin

+0

Теперь, когда я провел некоторое время с cscope, мне кажется, что cscope не отличает переменные с тем же именем, которые принадлежат к разным классам. class_b :: var может быть возвращен, хотя я ищу только class_a :: var. Я использую C++. Я что-то делаю неправильно? – neuron

3

cscope шаг за шагом, например

Перейти к директории вашего проекта, и запуск:

cscope -Rb 

Это создает cscope.out файл, содержащий разобранный информацию. Генерация достаточно быстрая, даже для огромных проектов, таких как ядро ​​Linux.

Открыть ВИМ и выполнить команду:

:cs add cscope.out 
:cs find s my_func 

s мнемонический для symbol. Возможны и другие cscope.

Интерфейс Cscope (находящиеся V) также имеет переменную запрос назначения (подмножество символов вхождений), которые Vim, кажется, не предлагает (?)

Это добавляет список абонентов в список QuickFix, который вы можете открыть по следующему адресу:

:copen 

Перейти к интересующей вас строке и нажать Enter, чтобы перейти туда.

Смотрите также:

Смежные вопросы