Хорошо, я думаю, что на самом деле придумал ответ на свой вопрос.
Во-первых, я генерирую два файла тегов: tags_c_vim и tags_c_omni.
В моем _vimrc у меня есть:
let tags_vim='tags_c_vim'
let tags_omni='tags_c_omni'
exe "set tags=".tags_vim
для установки некоторых переменных, указывающих на разные файлы тегов, и для установки тегов "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, поэтому она изменяет настройку тегов так, чтобы она указывала на теги "omni", прежде чем вызывать всплывающее меню omnicomplete, а вторая строка сбрасывает настройку тегов в теги "vim", когда режим вставки следующий осталось после закрытия всплывающего окна.
Потребуется обширное использование, чтобы убедиться, что оно достаточно надежно, но, похоже, оно работает после некоторого быстрого тестирования.
Два улучшения, которые я все еще хотел бы сделать:
- Сопоставить настройку тегов "omni" с полным набором команд C-X, C-O вместо нового отображения F8. (Я думаю, что мне нужно установить теги и затем вызвать omni # cpp # maycomplete # Complete (), но я не мог понять, как это сделать)
- Подключить сброс тегов "vim" либо к самодостаточному завершению, либо к закрытию всплывающего меню
Во всяком случае, я просто думал, что поделюсь.
Приветствия
thoughton.