正如标题所说:“如何手动将堆栈条目推送到vim tagstack?”
问题是:我使用gtags/global + unite.vim插件已经有一段时间了(顺便说一句,这两个插件太棒了!),但它无法自动将标签条目插入到标签栈中。有没有办法解决这个问题?
发布于 2014-10-10 17:00:19
在我非常机密的lh-tags插件中,我有lh#tags#jump()函数,我用它来注入标签并跳转到它们。该函数现在已移到我的vim库中:lh#tags#stack#jump()
这个想法是总是有一个假的标记文件(在tmpdir中),当需要时,我在其中添加跳转位置作为伪造的标记。从那里开始,就像跳转到forged_tag_number_000042一样简单。然后Vim会自动为我们维护堆栈。
发布于 2018-08-17 05:25:03
我在vim-tagimposter中使用了一种取自vim-jedi的技术来将标记推送到标记栈中。(我相信这是与lh-tags相同的技术。)
对于omnisharp-vim,您可以将此映射添加到** ftplugin/cs.vim**
nnoremap <buffer> <Leader>jT :<C-u> TagImposterAnticipateJump <Bar> OmniSharpGotoDefinition<CR>:tags将显示以IMPOSTER_为前缀的标签。
我认为这应该适用于gtags.vim
nnoremap <Leader>jT :<C-u> TagImposterAnticipateJump <Bar> GtagsCursor<CR>一个更奇妙的解决方案是the proposed 'tagfunc',它会让你实现一个函数,返回一个标签列表(源自gtag/global/任何东西),而vim将负责填充标签栈。
发布于 2020-04-01 08:32:48
作为vim的最新版本(使用if has('patch-8.2.0077')检查您的vim是否足够新),将位置推送到标记栈中非常容易:
" Store where we're jumping from.
let pos = [bufnr()] + getcurpos()[1:]
let item = {'bufnr': pos[0], 'from': pos, 'tagname': expand('<cword>')}
YourCommandToJumpToCWord
" Assuming jump was successful, write to tag stack.
let winid = win_getid()
let stack = gettagstack(winid)
let stack['items'] = [item]
call settagstack(winid, stack, 't')https://stackoverflow.com/questions/26291758
复制相似问题