如何检测 Vim 中的函数?

发布于 2024-08-18 14:29:55 字数 215 浏览 3 评论 0原文

如果光标位于一个很长的函数中的某个位置,有没有办法让 Vim< /a> 告诉用户他/她正在编辑哪个函数?

顺便说一句,我使用标签列表,但即使您将光标移动到不同的功能,标签列表似乎也不会自动更新您所在的位置。

If the cursor is in somewhere within a very long function, is there a way to let Vim tell the user in which function he/she is editing?

By the way, I use taglist but seems that taglist does not auto update where you are even if you have moved the cursor to a different function.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼角的笑意。 2024-08-25 14:29:55

taglist 插件提供了此功能。其中的函数
光标当前所在位置会在列表中自动突出显示
标签列表的功能。

确保 Tlist_Auto_Highlight_Tag 不等于 0 以启用此功能。

'updatetime' 定义之前必须经过的无活动时间
taglist 突出显示当前功能。默认值为 4 秒。

:help taglist.txt 请参阅“突出显示当前标签”部分

作为快速测试:
输入 :TlistHighlightTag 强制标签列表突出显示当前函数。
如果这有效,我想您已经禁用了任何
方式(参见 Tlist_Auto_Highlight_Tag)。

The taglist plugin provides this feature. The function in which
the cursor is currently positioned is highlighted automatically in the list of
functions of taglist.

Make sure that Tlist_Auto_Highlight_Tag is not equal 0 to enable this feature.

'updatetime' defines the time of no activity which must elapse before
taglist highlights the current function. Default is 4 seconds.

:help taglist.txt See section "Highlighting the current tag"

As a quick test:
Type :TlistHighlightTag to force taglist to highlight the current function.
If this works I suppose that you have disabled the automatic highlighting in any
way (see Tlist_Auto_Highlight_Tag).

白云悠悠 2024-08-25 14:29:55

作为 Habi 答案的补充,如果您想在不使用 taglist 的情况下完成此操作,您可以很容易地定义一个可以解决问题的函数。这取决于您使用什么语言进行编程,但是对于类似 C 的语言,您可以这样做:

nmap ,f call ShowFuncName()
" Show the name of the current function (designed for C/C++, Perl, Java etc)
fun! ShowFuncName() 
    let lnum = line(".")
    let col = col(".") 
    echohl ModeMsg 
    echo getline(search("^[^ \t#/]\\{2}.*[^:]\s*$", 'bW')) 
    echohl None 
    call search("\\%" . lnum . "l" . "\\%" . col . "c") 
endfun 

将其放入您的 vimrc 中,然后按 ,f 查看当前功能。

取自此处

As an addition to Habi's answer, if you want to do it without using taglist, you can quite easily define a function that will work it out. It depends what language you're programming in, but for C-like languages, you can do this:

nmap ,f call ShowFuncName()
" Show the name of the current function (designed for C/C++, Perl, Java etc)
fun! ShowFuncName() 
    let lnum = line(".")
    let col = col(".") 
    echohl ModeMsg 
    echo getline(search("^[^ \t#/]\\{2}.*[^:]\s*$", 'bW')) 
    echohl None 
    call search("\\%" . lnum . "l" . "\\%" . col . "c") 
endfun 

Put that it in your vimrc and then press ,f to see the current function.

Taken from here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文