четверг, 24 ноября 2011 г.

Поиск по внешним исходникам в Vim

Я давно использую ctags в Vim, и более чем доволен, но одной вещи по-прежнему сильно не хватало. Редко когда нужен поиск только по кода внутри проекта. Часто хочется заглянуть ещё и в third-party код. Только вот мешать его с рабочим (чтобы ctags мог дотянуться) нет никакого желания.

Обычно я решал эту проблему, просто держа под рукой браузер с API или исходниками требуемого класса. Либо запускал отдельное окно Vim. Но постепенно эта ситуация стала надоедать, да и обида за любимый редактор взяла - неужто он хуже той же IDEA? Неужто не умеет брать ctags из нескольких источников?

Полез в документацию - и увидел, что всё у него с этим делом обстоит прекрасно. Проблему решает одна-единственная строчка в конфиге.

Сначала подготовим необходимые библиотеки: создаём папку ~/src и выкладываем туда исходники необходимых библиотек и фреймворков. Можно просто распаковать архивы с кодом, но более труёвый способ - склонировать нужную ветку или тег из репозитория библиотеки. Проще будет обновлять версию при необходимости.


После этого прогоняем ctags для всех исходников - заходим поочерёдно в папки и запускаем ctags:

$ cd ~/src
$ for dir in $(ls); do if [ -d $dir ]; then cd $dir; ctags -R; cd ..; fi; done

После чего добавляем одну строчку к конфигу:

set tags=./tags,./TAGS,tags,TAGS,~/src/*/tags

Теперь мы можем изменять состав библиотек, переключаться с одной версии на другую, и баловать как только можно. И Vim будет подхватывать все изменения. Надо лишь не забывать обновлять теги.

Поиск по тегам, кстати, работает на удивление быстро. Быстрее, чем в любой IDE.

Just FYI: Мой конфиг Vim живёт здесь, но я периодически подумываю перенести его на github.

3 комментария:

  1. Переезжай давай на Гитхаб уже! Для опенсорса самое то. И у нас печеньки :)

    ОтветитьУдалить
  2. А, ну и я предсказуемо нахожусь здесь: https://github.com/kix

    ОтветитьУдалить
  3. Дык Гиториус тоже вполне себе кошерный опенсорс ;)

    На гитхабе зафолловил

    ОтветитьУдалить