Vim和python - 跳转到定义键绑定

时间:2017-06-25 01:10:35

标签: python vim

following youtube video表明可以使用vim for python跳转到定义。

然而,当我尝试使用相同的快捷方式(Ctrl-G)时它不起作用...... 如何执行相同的"跳转到定义"?

我安装了插件Ctrl-P但没有安装绳索。

3 个答案:

答案 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。