在vim状态行中显示当前功能
我花了20%的时间用vim编写代码,几乎完全是javascript和python。 另外80%的时间我主要是上下滚动我的源文件,试图记住我当前正在编辑的函数以及该函数属于哪个类 由于我不理解的原因,这在技术上可能是不可能的,但是是否有任何vim插件允许vim状态行显示当前用于Python和/或Javascript的游标所在的函数 它看起来是这样的: 这可能已经存在于,比如说,升华文本中。如果是这样,我可能最终会停止哭泣,做出改变 某些Vim插件不提供此功能:在vim状态行中显示当前功能,vim,ctags,Vim,Ctags,我花了20%的时间用vim编写代码,几乎完全是javascript和python。 另外80%的时间我主要是上下滚动我的源文件,试图记住我当前正在编辑的函数以及该函数属于哪个类 由于我不理解的原因,这在技术上可能是不可能的,但是是否有任何vim插件允许vim状态行显示当前用于Python和/或Javascript的游标所在的函数 它看起来是这样的: 这可能已经存在于,比如说,升华文本中。如果是这样,我可能最终会停止哭泣,做出改变 某些Vim插件不提供此功能: 更新 自从写了这个问题后,
command! -nargs=0 TagbarToggleStatusline call TagbarToggleStatusline()
nnoremap <silent> <c-F12> :TagbarToggleStatusline<CR>
function! TagbarToggleStatusline()
let tStatusline = '%{exists(''*tagbar#currenttag'')?
\tagbar#currenttag('' [%s] '',''''):''''}'
if stridx(&statusline, tStatusline) != -1
let &statusline = substitute(&statusline, '\V'.tStatusline, '', '')
else
let &statusline = substitute(&statusline, '\ze%=%-', tStatusline, '')
endif
endfunction
命令-nargs=0 TagbarToggleStatusline调用TagbarToggleStatusline()
nnoremap:TagbarToggleStatusline
功能!TagbarToggleStatusline()
让tStatusline='%{存在('*tagbar#currenttag')?
\tagbar#currenttag(“”[%s]“”,“”):“”
如果stridx(&statusline,tStatusline)!=-1.
let&statusline=替换(&statusline,'\V'.tStatusline,','')
其他的
让&statusline=替换(&statusline,'\ze%=%-',tStatusline,'')
恩迪夫
端功能
由于有时我处理非常大的源文件,并且由于ctags的执行,在大文件之间交换会导致一点延迟,因此我更喜欢通过使用上面定义的映射(Ctrl+F12)或命令来启用和禁用此功能。而不是在状态行中显示当前方法/类的名称,你可以简单地…跳转到声明并跳回 在Python中:
?def<Esc>
?def
或内置的:
[[<C-o>
[[
在JavaScript中:
?fun<Esc>
?有趣吗
它不需要配置…它不依赖于第三方工具…它与语言无关…它是轻量级的
关于每个函数在特定文件中的位置的元数据由名为的命令行工具收集和存储 Vim插件管理
ctags
调用,以显示当前正在编辑的文档的层次结构
最后,该插件附带了一个扩展名tagbar
,它允许当前标签(即当前功能的名称)显示在Vim状态行中
通过将此行添加到.vimrc
,可以将其配置为显示标记的整个层次结构:
let g:airline#extensions#tagbar#flags = 'f'
看起来是这样的:
这个答案的灵感来源于和评论。和
基于:
vimrc
让g:lightline={
\“活动”:{
\'左':[['模式','粘贴'],['文件名',],['标记栏']]
\ },
\“组件”:{
\“tagbar”:“%{tagbar#currenttag(“%s”、“f”)}”,
\ },
\“组件_函数”:{
\“已修改”:“LightLineModified”,
\“只读”:“LightLineReadonly”,
\'filename':'LightLineFilename',
\“文件格式”:“LightLineFileformat”,
\“文件类型”:“LightLineFiletype”,
\“fileencoding”:“LightLineFileencoding”,
\'mode':'LightLineMode'}
\ }
函数!LightLineModified()
return&ft=~'help'?'':&modified?'+':&modifiable?''-'
端功能
函数!LightLineReadonly()
return&ft!~?'help'&&&readonly?'RO':'
端功能
函数!LightLineFilename()
让fname=展开('%:t')
返回fname='\uuuuu标记栏\uuuu'?g:lightline.fname:
\(“”!=LightLineReadonly()?LightLineReadonly()。“”:“”)。
\(“”!=fname?fname:“[没有名字]”)。
\(“”!=LightLineModified()?“”。LightLineModified():“”)
端功能
函数!LightLineFileformat()
返回winwidth(0)>70?&文件格式:“”
端功能
函数!LightLineFiletype()
返回winwidth(0)>70?(strlen(&filetype)&filetype:'no ft'):“”
端功能
函数!LightLineFileencoding()
返回winwidth(0)>70?(strlen(&fenc)&fenc:&enc):“”
端功能
函数!LightLineMode()
让fname=展开('%:t')
返回fname=='\uuuuuuuuuuuuuuuuuuuuu'?'Tagbar':
\winwidth(0)>60?灯线#模式():“”
端功能
设g:tagbar_status_func='TagbarStatusFunc'
函数!TagbarStatusFunc(当前、排序、fname…)中止
设g:lightline.fname=a:fname
返回灯线#状态线(0)
端功能
只需尝试[
跳转到函数的第一个大括号,在那里可以看到正在编辑的函数名称;然后键入CTRL-O
返回。:)在拆分窗口/标题行中显示上下文
有vim/neovim插件可以自动显示光标的上下文w.r.t.函数/方法/案例
vim插件
ctags
。改用。它是Exuberntctags
的一个积极维护的分支(和后续)。喜欢这个。我太兴奋了