2010-02-11 3 views
3

Я много лет использую ctags в Vim, но я только что открыл omnicomplete. (Это кажется хорошим.)Возможно ли использовать разные файлы тегов для omnicomplete и общего просмотра тегов в Vim?

Однако у меня есть проблема: чтобы нормально работать с omnicomplete, я должен использовать параметр -extra = + q при создании тегов, что хорошо, но это меняет поведение общий просмотр тегов способами, которые мне не нравятся.

Например, при указании тегов тегов в Vim я не хочу отмечать «в» иерархии классов, то есть когда вкладка «Clas» получает «ClassA, ClassA :: var1», ClassA :: var2, ClassB ", а не" ClassA, ClassB "- но это то, что происходит при использовании --extra = + q.

Итак, я думаю, что я пошлю одну из двух вещей. Либо: 1. Возможность отключить вкладку в «иерархии тегов», хотя эти иерархии существуют в файле тегов. Или, 2. Возможность использовать файлы с именованными именами (т. Е. Сгенерированные с различными параметрами) для omnicomplete и общего просмотра тегов.

Любые идеи были бы высоко оценены!

Cheers,

button.

ответ

1

ОК, я думаю, что я действительно придумал ответ на свой вопрос.

Во-первых, я создаю два файла тегов: tags_c_vim и tags_c_omni.

В моей _vimrc у меня есть:

let tags_vim='tags_c_vim' 
let tags_omni='tags_c_omni' 

exe "set tags=".tags_vim 

установить некоторые переменные, указывающие на различные теги файлов, а также для установки метки «ВИМ» быть метки по умолчанию.

Тогда у меня есть это, опять-таки в _vimrc:

imap <F8> <ESC>:exe "set tags=".tags_omni<CR>a<C-X><C-O> 
autocmd InsertLeave * if pumvisible() == 0|exe "set tags=".tags_vim|endif 

первая строка здесь карты F8 так изменяет теги настройки, чтобы указать теги «Омни» до этого вызова omnicomplete всплывающее меню, а вторая строка сбросит настройки тегов на теги «vim», когда режим вставки следующий слева после закрытия всплывающего окна.

Это потребует широкого использования, чтобы убедиться, что оно достаточно прочное, но, похоже, оно работает после некоторого быстрого тестирования.

Два улучшения я все еще хотел бы сделать:

  1. Карта настройки тегов «Омни» в omnicomplete C-X, команды C-O вместо нового отображения F8. (Мне кажется, мне нужно установить теги, а затем вызвать omni # cpp # maycomplete # Complete(), но я не мог понять, как это сделать)
  2. Подключить сброс тегов «vim» либо к самому омнику отделка или закрытие всплывающего меню

В любом случае, я просто подумал, что поделюсь.

Cheers,

button.

0

Вы можете попробовать плагин OmniCppComplete.

+1

Возможно, я не был чистым в своем исходном сообщении, но это плагин OmniCppComplete, который я уже использую. Я просмотрел справку, чтобы узнать, есть ли поддержка того, что мне нужно, но я не могу найти ничего. Знаете ли вы что-нибудь другое? – thoughton

+0

Он делает это, когда я его использую. Удостоверьтесь, что вы комплектуете с , а не или или . У меня также есть следующие варианты: let OmniCpp_MayCompleteScope = 1 let OmniCpp_ShowScopeInAbbr = 1 let OmniCpp_ShowPrototypeInAbbr = 1 Но это не должно ничего менять. – m42a

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

  • Нет связанных вопросов^_^