following youtube video表明可以使用vim for python跳转到定义。
然而,当我尝试使用相同的快捷方式(Ctrl-G)时它不起作用...... 如何执行相同的"跳转到定义"?
我安装了插件Ctrl-P但没有安装绳索。
答案 0 :(得分:3)
这并不直接回答您的问题,但提供了更好的选择。我将JEDI与VIM一起用作静态代码分析器,它提供了比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"
答案 1 :(得分:1)
Vim的代码导航基于名为标签文件的通用数据库。需要手动生成(和更新)。 :help ctags
列出了一些可以执行此操作的应用程序。 Excrant ctags 是一个支持许多编程语言的常见语言,但也有一些专门的,如ptags.py
(可在Tools/scripts/ptags.py
的Python源目录中找到)。
easytags.vim之类的插件提供了更多便利,例如每次保存时自动更新标签文件。
跳转到定义的默认命令是CTRL-]
(不是CTRL-G
;它打印当前文件名;请参阅:help CTRL-G
)或Ex命令:tag {identifier}
;查看全部:help tag-commands
。
答案 2 :(得分:0)
一些建议,供以后阅读此问题的其他答案的人
标签文件有一个限制。如果在您的代码中多个对象具有相同的名称,则使用ctrl-]将会遇到问题,因为它将跳转到第一个对象,而不必更正一个对象。在这种情况下,可以使用g ctrl-](或:tjump命令或:tselect命令)来获取选择列表。您可能想将ctrl-]映射到“ g ctrl-]”
您可能想跳转到正确的对象。在那种情况下,您可能想使用jedi vim,并且如果您习惯使用c-],则可能希望将此映射用于jedi goto,请使用g:jedi#goto_command =“”
最后,由于更好的新文件支持(而不是python),您想使用通用ctags而不是旺盛的ctags。