Я использую плагин "taglist" в vim для навигации по исходным файлам в моем проекте, но я столкнулся с проблемой, свойственной работе с файлами C ++ (в отличие от C; это может случиться с другими языками, такими как Java) .
Для каждой функции в файле будут отображаться два тега: один полностью определен, а другой нет, то есть:
initialise [()]
ClassName::initialise [()]
update [()]
ClassName::update [()]
и пр. Это понятно, так как мой файл ctags генерируется с --extra = + q, что, как указано в man-странице для ctags,
Включите [s] дополнительную запись класса для каждого тега, который является членом класса (для языков, для которых эта информация извлекается; в настоящее время C ++, Eiffel и Java). Фактическая форма квалифицированного тега зависит от языка, из которого был получен тег (использование формы, наиболее естественной для определения квалифицированных вызовов на языке). Для C ++ это в форме "class :: member"; для Eiffel и Java это в форме "class.member". Это может упростить определение местоположения определенных тегов, когда в файле тегов встречается несколько раз имя тега. Однако обратите внимание, что это может потенциально более чем удвоить размер файла тега.
Поэтому этот параметр полезен для меня, когда я использую Ctrl +] для навигации и т. Д., Поэтому я предпочел бы сохранить его, но я бы предпочел, чтобы квалифицированные версии были удалены в меню taglist. Я искал ответ, но не нашел ничего связанного с этой проблемой; Удивительно, но я думаю, что OmniCPPComplete рекомендует использовать --extra = + q, поэтому я ожидаю, что многие программисты на C ++ будут его использовать.
Ниже приведены мои ctags и настройки taglist. Любая помощь приветствуется!
~ / .ctags:
--c++-kinds=+p
--fields=+iaS
--extra=+q
~ / .vimrc (извлечены настройки списка тегов)
let Tlist_GainFocus_On_ToggleOpen = 1
let Tlist_Process_File_Always = 1
let Tlist_File_Fold_Auto_Close = 0
let Tlist_Enable_Fold_Column = 0
let Tlist_Use_Right_Window = 1
let Tlist_Show_One_File = 1
let Tlist_Ctags_Cmd = 'ctags'