Vim和python -跳至定义键绑定

vxbzzdmp  于 2022-11-11  发布在  Python
关注(0)|答案(4)|浏览(198)

following youtube video显示可以使用python的vim跳转到定义。
然而,当我尝试相同的快捷方式(Ctrl-G)时,它不起作用......如何才能执行相同的“跳转到定义”?
我安装了插件Ctrl-P,但没有绳子。

a8jjtwal

a8jjtwal1#

这并没有直接回答你的问题,但是提供了一个更好的选择。我在VIM中使用JEDI,作为一个静态代码分析器,它提供了比ctags好得多的选项。我在VIM中使用spacemacs键绑定,因此将localleader设置为','

" jedi
let g:jedi#use_tabs_not_buffers = 0  " use buffers instead of tabs
let g:jedi#show_call_signatures = "1"
let g:jedi#goto_command = "<localleader>gt"
let g:jedi#goto_assignments_command = "<localleader>ga"
let g:jedi#goto_definitions_command = "<localleader>gg"
let g:jedi#documentation_command = "K"
let g:jedi#usages_command = "<localleader>u"
let g:jedi#completions_command = "<C-Space>"
let g:jedi#rename_command = "<leader>r"
ryoqjall

ryoqjall2#

Vim的代码导航基于一个名为 tags file 的通用数据库。它需要手动生成(和更新)。:help ctags列出了一些可以做到这一点的应用程序。Exuberant ctags 是一个支持许多编程语言的通用数据库,但也有一些专门的数据库,如ptags.py(可以在Python源代码目录Tools/scripts/ptags.py中找到)。
easytags.vim这样的插件通过在每次保存时自动更新标签文件来提供更多的便利。
跳转到定义的默认命令是CTRL-](而不是CTRL-G;打印当前文件名;参见:help CTRL-G),或Ex命令:tag {identifier};参见:help tag-commands处所有内容。

x759pob2

x759pob23#

对于将来阅读这个问题的其他答案的人,有一些建议:

  • 标签文件有一个限制。如果在你的代码中有多个对象有相同的名称,你将遇到问题,使用ctrl-],因为它将跳转到第一个,而不需要正确的一个。在这种情况下,你可以使用g ctrl-](或:tjump命令或:tselect命令)来获得选择列表。可能你想Mapctrl-]到“g ctrl-]”
  • 有可能你想有可能跳转到正确的对象。在这种情况下,你可能会想使用jedi vim,如果你习惯于c-],你可能会想使用jedi后藤let g:jedi#goto_command =“”
  • 最后,您希望使用通用ctags,而不是excuberant ctags,因为它支持更好的新文件(不需要python)。
puruo6ea

puruo6ea4#

如果您使用的是YouCompleteMe,则会有一个命令

:YcmCompleter GoToDefinition

如果您想在新选项卡中添加执行此操作的快捷方式

nnoremap <leader>d :tab split \| YcmCompleter GoToDefinition<CR>

相关问题