我是vim的新手,想知道如何在vim中列出当前文件中的所有函数。
答案 0 :(得分:6)
如何在vim中的当前文件中列出任何?
列出模式所有实例的最基本命令是:help :global
:
:g/foo " if you have line numbers enabled
:g/foo/# " if you don't
因此,要列出函数,您可以执行: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