VIM:与 gtags 一起使用的自动完成插件
VIM: autocomplete plugin to work with gtags
我刚刚为我的大型 C 项目从 ctags 迁移到 gtags。但是我找不到任何与 gtags 一起使用的 vim 自动完成插件。 gtags 被广泛使用并且比 ctags 更有效。我确定我在这里遗漏了一些东西。有人必须将 gtags 与任何自动完成插件集成。
我必须为此编写自己的插件。如果有人需要,这里是 link。
https://github.com/kanwar-saad/gtagsomnicomplete
我为 Vim 编写了一个简单的 'omnifunc'
,它使用 GNU global
完成:
augroup GlobalComplete
autocmd!
autocmd FileType c setlocal omnifunc=GlobalComplete
augroup END
function! GlobalComplete(findstart, base)
if a:findstart == 1
return s:LocateCurrentWordStart()
else
return split(system('global -c ' . a:base), '\n')
endif
endfunction
function! s:LocateCurrentWordStart()
let l:line = getline('.')
let l:start = col('.') - 1
while l:start > 0 && l:line[l:start - 1] =~# '\a'
let l:start -= 1
endwhile
return l:start
endfunction
另请参阅:
我刚刚为我的大型 C 项目从 ctags 迁移到 gtags。但是我找不到任何与 gtags 一起使用的 vim 自动完成插件。 gtags 被广泛使用并且比 ctags 更有效。我确定我在这里遗漏了一些东西。有人必须将 gtags 与任何自动完成插件集成。
我必须为此编写自己的插件。如果有人需要,这里是 link。 https://github.com/kanwar-saad/gtagsomnicomplete
我为 Vim 编写了一个简单的 'omnifunc'
,它使用 GNU global
完成:
augroup GlobalComplete
autocmd!
autocmd FileType c setlocal omnifunc=GlobalComplete
augroup END
function! GlobalComplete(findstart, base)
if a:findstart == 1
return s:LocateCurrentWordStart()
else
return split(system('global -c ' . a:base), '\n')
endif
endfunction
function! s:LocateCurrentWordStart()
let l:line = getline('.')
let l:start = col('.') - 1
while l:start > 0 && l:line[l:start - 1] =~# '\a'
let l:start -= 1
endwhile
return l:start
endfunction
另请参阅: