如何在vim中列出当前文件中的函数

时间:2017-10-29 00:20:19

标签: vim

我是vim的新手,想知道如何在vim中列出当前文件中的所有函数。

4 个答案:

答案 0 :(得分:6)

  

如何在vim中的当前文件中列出任何

列出模式所有实例的最基本命令是:help :global

:g/foo      " if you have line numbers enabled
:g/foo/#    " if you don't

因此,要列出函数,您可以执行:g/^func

之类的操作

:g/^func

然后:78<CR>跳转到qf#GetList()

答案 1 :(得分:1)

聚会晚了一点,偶然发现了这个东西……但是要获得一个填充的位置列表,您可以像OP那样在屏幕上上下滚动,在对问题的评论中问:< / p>

function! Matches(pat)
    let buffer=bufnr("") "current buffer number
    let b:lines=[]
    execute ":%g/" . a:pat . "/let b:lines+=[{'bufnr':" . 'buffer' . ", 'lnum':" . "line('.')" . ", 'text': escape(getline('.'),'\"')}]"
    call setloclist(0, [], ' ', {'items': b:lines})
    lopen
endfunction

call Matches('^\(\s*\)\=function!\=.*(.*)\( abort\)\=$')

因此Matches函数使用正则表达式进行搜索,然后填充位置列表并打开它。

所以...

call Matches(@/)

然后将填充最后一次搜索的列表。

上面的正则表达式示例考虑到了:

function name()
function! name()
function name() abort
function! name() abort

我可能错过了一些组合,但是请早点给

答案 2 :(得分:0)

请记住,Vim是一个(强大的)文本编辑器,而不是IDE。因此,基础知识从简单的文本搜索开始,以获得与所有函数定义匹配的模式(取决于您的编程语言),例如:完成:global/^def/print。如果语法执行函数的折叠(许多语法可以执行,或者可以配置),则可以关闭所有折叠以获得此概述。

然后,Vim与:help tags集成。有插件可以分析当前文件并显示侧栏中的所有功能,属性等;这与IDE提供的非常相似:

答案 3 :(得分:0)

尝试一下:我映射到Ctrl-f(列表函数),但是您可以映射到任何您喜欢的键 按Ctrl-f将列出功能。然后发出“:” line_no

相关问题