Я только что установил Ctags (чтобы помочь в разработке на C ++) с моим Vim (или, скорее, с gVim) и хотел бы узнать ваши любимые команды, макросы, ярлыки, советы, которые сопровождают его ...
Поделитесь своим лучшим арсеналом. Какие еще дополнения Vim вы бы порекомендовали для C ++ при разработке Vim?
РЕДАКТИРОВАТЬ Какое еще дополнение вы бы использовали в сочетании с Ctags?
EDIT2 Какую версию gVim вы используете с тегами? Есть ли разница?
РЕДАКТИРОВАТЬ3 Как улучшить опыт программирования для больших и малых проектов?
vim
ctags
vim-macros
kenorb
источник
источник
closed as not constructive
почти два года назад это так конструктивно для меняОтветы:
Ctrl+ ]- перейти к определению
Ctrl+ T- отпрыгнуть из определения.
Ctrl+ W Ctrl+ ]- Открыть определение в горизонтальном разделении
Добавьте эти строки в vimrc
map <C-\> :tab split<CR>:exec("tag ".expand("<cword>"))<CR>
map <A-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR>
Ctrl+ \- Открыть определение в новой вкладке
Alt+ ]- Открыть определение по вертикали
После того, как теги генерируются. Вы можете использовать следующие клавиши для добавления и отключения функций:
Ctrl+
Left MouseClick
- Перейти к определениюCtrl+
Right MouseClick
- Перейти к определениюисточник
Ctrl-w C-]
вы можете сделатьC-w T
(иначе Shift-t), чтобы изменить это разделение на новую вкладку.g C-]
это очень полезно. Он открывает быстрый диалог для выбора одного из нескольких определений.g]
тоже полезно. Вы можете поместить курсор на имя тега и нажать,g]
чтобы получить список подходящих тегов.Одна строка, которая всегда идет в моем .vimrc:
Это будет искать в текущем каталоге «теги» и обрабатывать дерево по направлению к корню, пока один из них не будет найден. Итак, вы можете быть где угодно в вашем исходном дереве, а не просто в его корне.
источник
cscope
?Другой полезный плагин для разработки на C - это cscope. Подобно тому, как Ctags позволяет переходить к определениям, Cscope переходит к вызову. функциям.
Если у вас есть cscope в каталоге ~ / bin /, добавьте следующее в ваш .vimrc и используйте g ^], чтобы перейти к вызывающей функции (см .: help cscope).
Почти забыл ... Так же, как ctags - вы должны генерировать (и периодически обновлять) базу данных. Я использую следующий скрипт
Где 'select_files' - это другой скрипт, который извлекает список файлов C и заголовков из файла Makefile. Таким образом, я индексирую только те файлы, которые фактически используются проектом.
источник
Вы можете добавить каталоги в свой поиск ctags. Например, у меня есть индекс ctags, созданный для Qt4, и он есть в моем .vimrc:
источник
Все вышеперечисленное и ...
code_complete: параметр функции завершен, фрагменты кода и многое другое.
taglist.vim: браузер исходного кода (поддерживает C / C ++, Java, Perl, Python, Tcl, SQL, PHP и т. д.)
источник
Я использую ALT-влево и ALT-вправо для извлечения / перемещения из / в стек тегов.
Если вы используете
hjkl
для движения, вы можете отобразить<M-h>
и<M-l>
вместо этого.источник
Несколько определений с тем же именем
<C-w>g<C-]>
откройте определение в разбиении, но также сделайте,:tjump
что либо идет к определению, либо, если есть несколько определений, предоставляет вам список определений на выбор.источник
:ptag
команду, которая открывает определение в окне предварительного просмотра.:h CursorHold-example
котором после настраиваемого тайм-аута отображается тег для элемента под курсором в окне предварительного просмотра.:help
это круто иногда ... увидеть:help CTRL-W_g}
и:ptjump
Команда, которую я использую чаще всего, это C-], которая переходит к определению функции под курсором. Вы можете использовать его чаще, чтобы отслеживать больше звонков. После этого Ко вернет вас на один уровень, Си снова углубится.
источник
Я нашел плагин taglist, который обязательно нужно иметь. В нем перечислены все известные ему теги (файлы, которые вы открыли) в отдельном окне и очень легко перемещаться по большим файлам.
Я использую его в основном для разработки на Python, но может быть лучше только для C / C ++.
источник
Я инкапсулировал манипуляции с тегами в экспериментальном плагине моем .
Что касается разработки C ++ в vim, я уже ответил там : я использую свой собственный пакет и несколько других плагинов.
источник
Я два года адаптировал свои плагины vim для поддержки достаточно большого проекта на c ++. Вы можете взглянуть на них.
Они используют ctags и cscsope.
http://www.vim.org/scripts/script.php?script_id=1638
http://www.vim.org/scripts/script.php?script_id=2507
источник
Я поместил следующее в мой файл .gvimrc, который ищет дерево тегов в любой точке для файла тегов при запуске gvim:
Затем я периодически обновляю файл тегов в верхней части дерева исходных текстов с помощью скрипта, который выглядит следующим образом:
источник
Я использую vim в macos, и оригинальные ctags не работают должным образом, поэтому я загружаю самые новые и настраиваю make make install. Я устанавливаю ctgas в / usr / local / bin / ctags (чтобы сохранить оригинал)
источник
Я приспособил функцию поиска SetTags () выше (которая должна быть заменена эквивалентной
set tags+=./tags;/
) для работы в cscope. Кажется, работает!источник
Еще одна итерация функции SetCscope () выше. Это устанавливает предварительный путь cscope для получения совпадений, не находясь в директории, где "cscope.out":
источник