我有用户访问 Ubuntu 实例的权限,我想使用 CTags。错误说:
The program 'ctags' can be found in the following packages:
* exuberant-ctags
* emacs22-bin-common
* emacs21-bin-common
* elvis-tools
* emacs-snapshot-bin-common
Ask your administrator to install one of them
-bash: ctags: command not found
Run Code Online (Sandbox Code Playgroud)
这和所有在线说明都表明我需要成为 root。有没有办法以用户身份安装它?
我是Windows 上的常规gVim用户,但除了安装它、设置我的小_vimrc
文件然后继续使用之外,别做太多。
现在我试图理解 gVim Omni 完成并让它工作(我通过haXe发现了它)。
看书:help new-omni-completion
,我看到了一些关于ctags
。
但是去ctags 网站,他们的网站让我很困惑。
有什么作用ctags
,我为什么要它?
最重要的部分:我如何安装它?
我下载的源代码 + 二进制存档随附的页面和文档对安装感到困惑(并且似乎主要关注 Linux,尽管我使用的是 Windows)。他们中的大多数人谈论从源代码编译,并没有说明如何处理生成的二进制文件(我下载的存档已经包含,预编译)。
在我升级我的 Ubuntu 系统之前,这曾经有效:
ctags *.java
vim -t fooFunc
Run Code Online (Sandbox Code Playgroud)
这会带我去例如 Foo.fooFunc()
但是现在,vim 转到标准的“未找到标签”页面。
我现在必须这样做:
vim -t Foo.fooFunc()
Run Code Online (Sandbox Code Playgroud)
让它做正确的事。
更重要的是,^]根本不再起作用。
查看生成的标签文件,我看到如下条目:
Foo.fooFunc Foo.java /^ private void fooFunc() {$/
Run Code Online (Sandbox Code Playgroud)
虽然旧版本的 ctags 生成的标签文件看起来像
fooFunc Foo.java /^ private void fooFunc() {$/
Run Code Online (Sandbox Code Playgroud)
所以看起来 ctags 现在坏了。
有没有办法恢复到旧的行为?或者让 vim 尊重新格式?
我的 vim 安装配置了 ctags。我的习惯是通常在 vim 的选项卡中一次性打开我正在处理的所有相关文件。“问题”是,如果我使用 Ctrl+] 跳转到我正在编辑的文件中的 ctag,它将替换该选项卡中的缓冲区,即使我已经打开了另一个包含该符号的选项卡。如果它只是切换到该选项卡并跳转到那里的符号会好得多。这样,我将始终拥有 1 比 1 的选项卡与文件的比率。
我注意到在taglist.vim插件(我也使用)的Changenotes 中有一个条目说
1. 添加了对跳转到新标签或现有标签中的标签/文件的支持 从 taglist 窗口(仅适用于 Vim7 及更高版本)。
但是,我在 Taglist(或 Ctags)的文档中找不到关于如何实际执行此操作的任何内容。
任何vim大师可以填写我吗?谢谢!
我在vim中打开了这段代码:
$this->mockEvolve(...);
Run Code Online (Sandbox Code Playgroud)
当我将Ctrl + ]
光标放在 上时m
,它让我看到了它的定义。
但是,当我:ts
在光标位于 上时运行时m
,vim 会向我显示以下标签列表:
# pri kind tag file
> 1 F f mockGet <filename>
public function mockGet(...)
Run Code Online (Sandbox Code Playgroud)
我经常遇到这个问题(不仅仅是这个功能)。任何想法发生了什么?
我在 vim 中打开了许多文件,在那里我正在使用 ctags 编辑和跟踪程序流程,我不想在下次重新启动时丢失所有这些信息,我无法让系统保持运行几周或几个月。
有没有办法保存当前的终端状态或/和 vim 堆栈状态?
这是类似的问题
我尝试通过以下方式生成标签文件:
ctags -R * ??java?kinds=+mc
Run Code Online (Sandbox Code Playgroud)
但是当有多个匹配项时,ctrl+] 总是跳转到另一个类中错误的方法定义。
我知道我可以使用 :tjump 来选择是否有多个选项。但我希望有更好的解决方案(如果有的话)?
当我移动一个关键字然后点击 时^]
,它将跳转到当前活动拆分中的定义。如何保持当前拆分相同,而是在另一个拆分窗口(垂直或水平)中打开定义?
我有 ctags,我会通过将光标放在一个函数上并按 ctrl ] 来跳转到函数。但是,我发现这有时很不方便。
例如,如果我的光标离我想跳转到的函数很远,那么它会令人沮丧。
ctags 或 vim 中是否有命令可以通过键入函数名称并按下按钮来自动跳转到函数?如果它是模糊的并为您预测功能会更好。因此,例如,如果我想转到一个名为 的函数process_input()
,那么我会输入该函数并按g
什么。