如何让 vim 显示我正在编辑的当前类和方法

如何让 vim 显示我正在编辑的当前类和方法

是否有人知道是否有可能(或知道现有的 vim 脚本或插件)可以创建一个“状态栏”,显示我正在编辑的当前类和方法(或函数)的名称?

我设想它会插入当前缓冲区的文件类型的语法解析器,并显示面包屑路径来显示您当前正在编辑的内容。我对 vimscript 了解不够多,无法提出更多建议,但如果目前还没有好的解决方案,我可能会开始破解一个,所以也欢迎提出从哪里开始的建议!

答案1

如果你同时安装了航空公司标签栏插件。这两个插件会自动集成,您将在状态栏中显示当前功能。如果您想要拥有完整的对象层次结构(例如类 + 方法),则必须在 .vimrc 中进行配置:

let g:airline#extensions#tagbar#flags = 'f'  " show full tag hierarchy

如果你还没有使用 ctags,那么你可能需要为 tagbar 设置标签文件来识别当前代码位置。如果你还不知道这一点,这里有一个ctags 简介

答案2

此脚本将当前函数的名称放在标题栏和/或状态行中。它使用 ctags 为当前文件生成标签列表,并假定光标位置前面的标签是当前函数的名称。由于它使用 ctags,因此可以对其进行自定义以使用不同的语言,甚至是结构化文本文件。它在实践中效果很好,但有一些局限性。如果没有别的,它可能为您提供黑客攻击的起点。

答案3

我建议使用https://github.com/wellle/context.vim。它显示了你当前所处的上下文。以下是来自项目的图片

在此处输入图片描述

答案4

最近尝试过这个,我相信最简单的解决方案是:

  1. 安装通用 Ctagshttps://ctags.io/

  2. 安装 Tagbarhttps://github.com/preservim/tagbar

  3. tagbar#currenttag()设置状态行时调用,例如在 .vimrc 中:

    :set statusline=%<%f\ %h%m%r%=%{tagbar#currenttag('%s\ ','','f')}%-.(%l,%c%V%)\ %P

航空公司彻底改变了你的状态栏,而且这并不容易

注意:

  • 传递给的字符串中的空格必须用斜线转义currenttag()...而且在 vim 中运行命令和将其放在 .vimrc 中也有所不同?无论如何,空格可能很奇怪,它们可能是您在输出函数名称时想要的东西。

  • 我花了一些时间去挖掘,但默认状态行是

    :set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

相关内容