首先要说明的是, 在editPlus中的ctags功能确实是没有 vs vim等中的好用. 最主要的原因 是它不能直接在文件中 跳转. 而是要通过一个另外的框来实现, 这就大大的降低了跳转的速度和使用体验.
它实现的功能还是用的 CTags, 只不过openCTags.exe对标签做了界面跳转. 然后editplus只是提供了一个接口;
这个CTags功能真的要使用的话, 还是在vim中好用, editplus只是说聊胜于无.
tags是将项目中的文件 / 目录 /子目录 进行递归的扫描, 然后提取 文件 中的 "类/ 结构/函数/ 方法/常量 "等等信息, 写在一个 ???.tags标签文件中, 然后在编辑器中, 就可以通过插件/ 接口, 来读这个tags文件, 从而实现在 编辑器中 在各个函数/方法/类之间 跳转 浏览等等. 你可以看到在项目根目录下 生成的 ???.tags标签文件. 并且可以看到 ctags扫描项目文件/目录, 生成tags文件的cmd界面.
实际是配置成功的, 有完整的说明文档.
================================
// openCTags打开定位的界面
// openCTags 生成的 根目录下的 标签文件
================================
以下是从openCTags压缩包中解压出来的说明文档:
///////////////////////说明文档开始
史上最强编辑器插件OpenCTags使用指南
版本:v1.2.0
一、致谢:
感谢Romeo JunCU的卓绝工作,是他让我们拥有如此好的插件OpenCTags,感谢HonestQiao的辛勤工作,让我们的众多编辑器都可以插上taglist的翅膀。
二、概览:
OpenCTags可以支持UltraEdit、UEStudio、EditPlus、EmEditor、Programmer's Notepad、Komodo Edit、NotePad++、Crimson Editor/Emerald Editor、TextPad、PSPad、AkelPad、PhpStorm、EditPadPro、LopeEdit、vim、emacs等任何一种可以设置用户工具的编辑器。
OpenCTags支持的语言包括:Ant, Asm, Asp, Awk, Basic, BETA, C, C++, C#, Cobol, DosBatch, Eiffel, Erlang, Flex, Fortran, HTML, Java, JavaScript, Lisp, Lua, Make, MatLab, OCaml, Pascal, Perl, PHP, Python, REXX, Ruby, Scheme, Sh, SLang, SML, SQL, Tcl, Tex, Vera, Verilog, VHDL, Vim, YACC,并可以通过适当配置来增加新的语言解析。
其主要用途为根据当前选中的tag(单词或者文本),快速在所有项目文件中定位列表,并可以根据在列表中的选择快速跳转到对应的文件及定位到tag所在的行,方便你在代码中跳来跳去,实乃编程开发和代码阅读的上好利器。
使用:
1. 将解压后目录中的OpenCTags目录(不包含版本号的),拷贝到 编辑器安装目录E:\Program Files下;也可以拷贝到其他目录,但是要对应修改以下的配置;
2. 打开OpenCTags.ini,按照其中的说明,设置编辑器对应的安装路径,即“编辑器安装路径”所对应的列。
配置文件为Json格式,注意保持Json结构。注意Json数组[]的最后一个元素后,不要加“,”符号,但是之前的元素后,则需要加“,”符号。
如果你所使用的编辑器已经存在于OpenCTags的配置的列表中,修改“编辑器安装路径”即可;否则需要按照以下格式配置加入新的编辑器。
editors部分的配置格式,举例如下:
["编辑器名称", "编辑器exe文件名", "编辑窗口类名", "编辑器安装路径", "编辑器调用参数"]
["EditPlus3", "EDITPLUS.EXE", "AfxFrameOrView", "E:\\Program Files\\EditPlus 3\\", "-e \"__PATH____FILENAME__\" -cursor __LINENUMBER__:1 "]
其中,以下宏变量用于设置对应编辑器的命令行调用,从而正确根据选择的tag打开对应的文件并定位到对应的行:
编辑器安装路径:路径符号请使用\\或者/
__PATH__:表示tag所在文件的目录
__FILENAME__:表示对应tag所在文件的文件名
__LINENUMBER__:表示对应tag所在文件中的行数
3. 在编辑器的用户工具中进行如下设置:
a.【假设快捷键为Ctrl+Alt+Shift+1】
菜单名称:OpenCTags索引 以下命令,请根据实际情况设置OpenCTags路径,注意不要漏了""符号
命令:"E:\Program Files\OpenCTags\ctags.exe"
参数: -f "openctags.tags" --totals=yes -V -R * // 这个 --totals=yes 应该是 对项目下的所有文件和 -v -r 目录子目录递归创建.
初始目录:{当前文件目录} // 对项目下的所有文件进行创建ctags, 所有的标签都保存在一个文件中.
程序类型:DOS程序 // 必须是在项目根目录下打开某个文件,才能对整个项目目录进行创建tags.
保存文件:所有打开文件
附加说明:
1) -f 表示ctags文件名
2) 需要在项目根目录下打开某个文件,再调用该工具,然后才可使用b、c、d、e的工具
b.【假设快捷键为Ctrl+2】
菜单名称:OpenCTags定位 以下命令,请根据实际情况设置OpenCTags路径,注意不要漏了""符号
命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
参数: -t "openctags.tags" -word "{当前单词}" -editor "{编辑器名称}" -sel "{当前所选文本}" -file "{当前文件名称}" -line {当前行号}
初始目录:{当前文件目录}
程序类型:Windows程序
保存文件:无
附加说明:
1) -t 表示ctags文件名
2) -file 表示当前文件名称,不包含路径,包含扩展名
3) -path 表示当前文件所在的目录,一般无需设置
c.【假设快捷键为Ctrl+3】
菜单名称:OpenCTags向前查找 以下命令,请根据实际情况设置OpenCTags路径,注意不要漏了""符号
命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
参数: -t "openctags.tags" -word "{当前单词}" -editor "{编辑器名称}" -sel "{当前所选文本}" -file "{当前文件名称}" -line {当前行号} -action p
初始目录:{当前文件目录}
程序类型:Windows程序
保存文件:无
附加说明:
1) -t 表示ctags文件名
2) -file 表示当前文件名称,不包含路径,包含扩展名
3) -path 表示当前文件所在的目录,一般无需设置
4) -action 表示动作,p表示向前搜索tag访问历史
d.【假设快捷键为Ctrl+4】
菜单名称:OpenCTags向后查找 以下命令,请根据实际情况设置OpenCTags路径,注意不要漏了""符号
命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
参数: -t "openctags.tags" -word "{当前单词}" -editor "{编辑器名称}" -sel "{当前所选文本}" -file "{当前文件名称}" -line {当前行号} -action n
初始目录:{当前文件目录}
程序类型:Windows程序
保存文件:无
附加说明:
1) -t 表示ctags文件名
2) -file 表示当前文件名称,不包含路径,包含扩展名
3) -path 表示当前文件所在的目录,一般无需设置
4) -action 表示动作,n表示向前搜索tag访问历史
e.【假设快捷键为Ctrl+5】
菜单名称:OpenCTags定位在当前文件 以下命令,请根据实际情况设置OpenCTags路径,注意不要漏了""符号
命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
参数: -t "openctags.tags" -word ":{当前单词}" -editor "{编辑器名称}" -sel ":{当前所选文本}" -file "{当前文件名称}" -line {当前行号}
初始目录:{当前文件目录}
程序类型:Windows程序
保存文件:无
附加说明:
1) -t 表示ctags文件名
2) -file 表示当前文件名称,不包含路径,包含扩展名
3) -path 表示当前文件所在的目录,一般无需设置
4) -word 前面加:,表示在当前文件搜索
5) -sel 前面加:,表示在当前文件搜索
4. 使用方法:
a. 到项目的根目录,打开一个文件,然后按快捷键Ctrl+Alt+Shift+1(或者点击菜单执行“OpenCTags索引”),等待建立ctags完成,在根目录会生成tags文件,注意在svn/git/hg/cvs等中设置忽略该文件
b. 打开项目内任意文件,选中需要查看的关键字(类名或者函数方法名或者任意玩意),,然后按快捷键Ctrl+2(或者点击菜单执行“OpenCTags”),将会打开OpenCTags提示窗口,提示对应的tags信息
c. 提示窗口中,会给出匹配的名称,原型缩写,以及所在的文件相对路径,鼠标移动上去,会显示完整的原型提示,双击,会自动打开对应的文件并定位到对应的位置
d. 提示窗口中,左则的图标代表不同的类型,包括但不限于:类、方法/函数、常量定义、变量等等
e. 进过多次跳转后,可以按快捷键Ctrl+3、Ctrl+4,来回快速跳转,方便异常
f. 按下鼠标右键,提示窗口可以随意拖动,只要OpenCTags服务不退出,窗口位置可以自动保持
g. 提示窗口输入栏,可以任意改变,输入你喜欢的关键字(类名或者函数方法名或者任意玩意)可以实时搜索
h. 按TAB,会将当前选中的tag自动输入到编辑器(AutoComplete/自动完成),按空格键或者回车会自动打开对应的文件并定位到对应的位置
i. 当tag前面带有:符号时,可以在当前文件中进行搜索
5. 快捷键设置:
当前快捷键列表,可以看:菜单=》帮助=》键盘映射
设置新的快捷键,可以用:菜单=》工具=》参数设置=》快捷键=》类型:工具=》用户工具1~20进行设置
主流编辑器用户工具设置举例:
UltraEdit:
添加方式:“高级”菜单=》工具栏配置
调用命令:""E:\Program Files\OpenCTags\OpenCTags.exe"" -t openctags.tags -editor "UltraEdit" -sel "%sel%" -file "%f" -line %line%
当前目录:%p
UEStudio:
添加方式:“高级”菜单=》工具栏配置
调用命令:""E:\Program Files\OpenCTags\OpenCTags.exe"" -t openctags.tags -editor "UEStudio" -sel "%sel%" -file "%f" -line %line%
当前目录:%p
EditPlus2:
添加方式:“工具/Tools”菜单=》配置用户工具
调用命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
调用参数:-t openctags.tags -word "$(CurWord)" -editor "EditPlus2" -sel "$(CurSel)" -file "$(FilePath)" -line $(CurLine)
当前目录:$(FileDir)
EditPlus3:
添加方式:“工具/Tools”菜单=》配置用户工具
调用命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
调用参数:-t openctags.tags -word "$(CurWord)" -editor "EditPlus3" -sel "$(CurSel)" -file "$(FilePath)" -line $(CurLine)
当前目录:$(FileDir)
EmEditor:
添加方式:“工具/Tools”菜单=》外部工具=》自定义工具
调用命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
调用参数:-t "openctags.tags" -word "$(WordText)" -editor "EmEditor" -sel "$(SelText)" -file "$(FilenameEx)" -line $(CurLine)
当前目录:$(Dir)
Programmer's Notepad:
添加方式:“工具/Tools”菜单=》Options=》Tools=》Global Tools
调用命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
调用参数:-t "openctags.tags" -word "%w" -editor "Programmer's Notepad" -sel "" -file "%d" -line %l
当前目录:%d
Komodo Edit:
添加方式:“View”菜单=》Tabs& Sidebars =》Toolbox,Toolbox面板=》鼠标右键=》Add=》New Command
调用命令:""E:\Program Files\OpenCTags\OpenCTags.exe"" -t "openctags.tags" -word "%w" -editor "Komodo Edit" -sel "%s" -file "%f" -line %L
当前目录:%D
NotePad++:
添加方式:“运行”菜单=》运行,输入调用命令后,点保存设置快捷键
调用命令:""E:\Program Files\OpenCTags\OpenCTags.exe"" -t "openctags.tags" -word "$(CURRENT_WORD)" -editor "NotePad++" -sel "$(CURRENT_WORD)" -file "$(FILE_NAME)" -line $(CURRENT_LINE) -path "$(CURRENT_DIRECTORY)"
当前目录:使用-path参数设置
附加说明:OpenCTags索引请使用如下调用命令:
CMD /K CD /D "$(CURRENT_DIRECTORY)" && ("E:\Program Files\OpenCTags\ctags.exe" -f "openctags.tags" --totals=yes -V -R *)
Crimson Editor:
添加方式:“Tools”菜单=》Conf. User Tools,输入调用命令和参数后,点应用
调用命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
调用参数:-t "openctags.tags" -word "$(CurrWord)" -editor "Crimson Editor" -sel "$(CurrWord)" -file "$(FileName)" -line $(LineNum)
当前目录:$(FileDir)
TextPad:
添加方式:“配置”菜单=》参数=》工具,添加后,点开左则“工具”列表,再进行具体设置
调用命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
调用参数:-t "openctags.tags" -word "$SelWord" -editor "TextPad" -sel "$Sel" -file "$File" -line $Line
当前目录:$FileDir
PSPad:
添加方式:将Scripts\PSPad下的Script目录,拷贝到PSPad的安装目录
使用方式:然后打开PSPad,”脚本“菜单=》重新编译脚本(Recompile Scripts),即可在”脚本“菜单下生成OpenCTags子菜单,点击进行操作
附加说明:在Scripts\PSPad\Script\JScript\OpenCTags.js中设置OpenCTags的安装目录
AkelPad:
添加方式:将Scripts\AkelPad下的AkelFiles目录,拷贝到AkelPad的安装目录
使用方式:然后打开AkelPad,”选项“菜单=》插件=》Scripts::Main,点击进入Scripts plugin,即可运行对应的指令,并可设置对应快捷键(输入框输入后点Assign)
附加说明:在AkelFiles\Plugs\Scripts\Include\OpenCTags.js中设置OpenCTags的安装目录
PHPStorm:
添加方式:“File”菜单=》Settings=》External Tools,点击Add
调用命令:"E:\Program Files\OpenCTags\OpenCTags.exe"
调用参数:-t "openctags.tags" -word "$SelectedText$" -editor "PhpStorm" -sel "$SelectedText$" -file "$FileName$" -line $LineNumber$
当前目录:$FileDir$
EditPad:
添加方式:“Tools”菜单=》Configure Tools=》New
调用命令:"E:\Program Files\OpenCTags\OpenCTags.exe" -t "openctags.tags" -word "%WORD%" -editor "EditPad" -sel "%WORD%" -file "%FILENAME%" -line %LINE%
当前目录:%PATH%
对应工具设置中,除了OpenCTags索引选择为Console/DOS程序并捕捉输出外,其他的请全部设置为GUI/Windows程序并不捕获输出,也无需接受任何其他参数传递,请参考“readme.OpenCTags通用说明.txt”。
问题:
Q: Not known editor
A: 没有正确设置编辑器的名称,请检查使用OpenCTags.exe的指令中,-editor部分的设置正确,并且在OpenCTags.ini之中做好了对应的配置。
Q: Could not find install dir for editor ...?
A: 找不到 编辑器的安装路径,绿色版本的一般会出现该问题;
请确认OpenCTags.ini之中编辑器对应的安装路径设置正确。
Q: 双击无法打开文件?
A: 请打开“tools\Microsoft Visual Studio Spy++.exe”,按照“tools\Spy++步骤1~4”,找到对应编辑器的类名,然后在OpenCTags.ini,设置编辑器对应的类名
Q: 修改或者增加新的代码后,匹配不到怎么办?
A: 此时,因为代码发生了变化,所以需要及时再来一次:OpenCTags索引
Q: 索引JS文件出错,OpenCTags索引时提示:ctags: Warning: ignoring null tag in .............js
A: js文件内有特殊结构,不在CTags默认定义列表中;请将“.ctags”拷贝到%HOMEDRIVE%%HOMEPATH%(Win+R,输入回车即可打开)目录下,然后重新索引
Q: 调用时,提示:Could not find tags file names [openctags.tags] in directory ...... or in a parent directory
A: 还没有建立ctags索引,请按照“使用”=>“4. 使用方法”=>“a. 到项目的根目录”,打开一个文件,然后建立索引即可
附加:
0. ctags是个什么东东?你out了,快点上网查吧。
1. 该插件,来自于sf的OpenCTags,我经过完善和给予中文说明后发布了新版;再次感谢Romeo JunCU的卓绝工作。
2. 如果所使用的编辑器不在现有列表中,请查看器帮助文档进行设置。
3. 如调用遇到问题,请仔细阅读本说明以及所使用编辑器的帮助文档,并及时与我沟通。
4. 欢迎推广,欢迎传播至少一人,好东西要一起分享嘛!
5. 如有问题和建议,请致信honestqiao@gmail.com,谢谢
6. 在线讨论,请访问:http://bbs.chinaunix.net/thread-3619603-1-1.html
7. 欢迎访问史上最强PHP中文手册--PHP手册中文翻译补完计划 --http://code.google.com/p/phpdoc-zh/
8. 待补充
{
"editors" :
[
["编辑器名称", "编辑器exe文件名", "编辑窗口类名", "编辑器安装路径", "编辑器调用参数"],
/*
参数说明:
编辑器名称:当前需要使用的编辑器的名称
编辑器exe文件名:当前编辑器在运行时exe文件名,可以在任务管理器中查找;部分编辑器启动时的文件名和运行时的文件名,可能并不相同,例如:emacs
编辑器窗口类名:按照readme中的说明,通过Microsoft Visual Studio Spy++得到的当前编辑器编辑界面的窗口类名
编辑器安装路径:编辑器exe文件所在的目录,目录分隔符需要使用\\或者/,使用\将会出错;也可以将启动编辑器的exe文件名一并写在最后
编辑器调用参数:从命令行调用编辑器时,所需要使用的参数,请查看编辑器的帮助文档了解详情,所使用的参数如下:
__PATH__:表示要打开的代码文件的所在路径
__FILENAME__:表示要打开的代码文件的文件名
\"__PATH____FILENAME__\":表示要打开的代码文件的完整路径,为防止空格,使用""包含
__LINENUMBER__:表示打开代码文件后,要跳转到的行号
使用说明:
1. 如果编辑器已经存在于以下配置中,仅需修改“编辑器安装路径”即可完成配置;除非你精通该编辑器并熟读帮助文档,否则其他配置切勿修改。
2. 如果以下配置中所列出的编辑器你没有使用,无需修改或者删除其配置,保留原样即可,以便将来使用。
3. 如果要添加新的编辑器配置,拷贝复制现有的一行配置后,再进行修改;修改前请熟读readme,以及编辑器的帮助文档。
4. 出现问题或者增加配置时,请及时与honestqiao@gmail.com沟通,以便在新的版本中加入该配置方便更多人。
*/
["EditPlus2", "EDITPLUS.EXE", "AfxFrameOrView", "E:/Program Files/EditPlus 2", "-e \"__PATH____FILENAME__\" -cursor __LINENUMBER__:1 "],
["EditPlus3", "EDITPLUS.EXE", "AfxFrameOrView", "D:/editplus_ha_gr/EditPlus_x86/x86", "-e \"__PATH____FILENAME__\" -cursor __LINENUMBER__:1 "],
["NotePad++", "notepad++.exe", "SysTabControl", "E:/Program Files/Notepad++", "-n__LINENUMBER__ \"__PATH____FILENAME__\""],
["UltraEdit", "UEDIT32.exe", "EditControl", "E:/Program Files/UltraEdit", "\"__PATH____FILENAME__/__LINENUMBER__\""],
["UEStudio", "UEStudio.exe", "EditControl", "E:/Program Files/UEStudio", "\"__PATH____FILENAME__/__LINENUMBER__\""],
["EmEditor", "EmEditor.exe", "SysTabControl", "E:/Program Files/EmEditor", "/l __LINENUMBER__ \"__PATH____FILENAME__\""],
["Programmer's Notepad", "pn.exe", "ScintillaWindowImpl", "E:/Program Files/Programmer's Notepad", "-l __LINENUMBER__ \"__PATH____FILENAME__\""],
["Komodo Edit", "komodo.exe", "Scintilla", "E:/Program Files/ActiveState/Komodo Edit", "-l __LINENUMBER__ \"__PATH____FILENAME__\""],
["Crimson Editor", "cedt.exe", "AfxFrameOrView", "E:/Program Files/Emerald Editor Community/Crimson Editor", "/L:__LINENUMBER__ \"__PATH____FILENAME__\""],
["TextPad", "TextPad.exe", "AfxFrameOrView", "E:/Program Files/TextPad", "\"__PATH____FILENAME__\"(__LINENUMBER__,0)"],
["PSPad", "PSPad.exe", "TPSSynEdit", "E:/Program Files/PSPad", "/__LINENUMBER__ \"__PATH____FILENAME__\""],
["AkelPad", "AkelPad.exe", "AkelEdit", "E:/Program Files/AkelPad", "/Command(4262) /Call(\"Scripts::Main\",1, \"Include/OpenCTags.js\",\"-l __LINENUMBER__\") \"__PATH____FILENAME__\""],
["PhpStorm", "PhpStorm.exe", "SunAwtFrame", "E:/Program Files/JetBrains/PhpStorm/bin", "-l __LINENUMBER__ \"__PATH____FILENAME__\""],
["EditPad", "EditPadPro7.exe", "TEditPadProEditorMain", "E:/Program Files/Just Great Software/EditPadPro7", "/l__LINENUMBER__ \"__PATH____FILENAME__\""],
["LopeEdit", "LopeEdit.exe", "MDIClient", "E:/Program Files/LopeSoft/LopeEdit", "\"__PATH____FILENAME__\""],
["vim", "gvim.exe", "VimTextArea", "E:/Program Files/vim/vim73", "+__LINENUMBER__ \"__PATH____FILENAME__\""],
["emacs", "emacs.exe", "Emacs", "E:/Program Files/emacs/bin/emacsclientw.exe", "-n -a \"E:/Program Files/emacs/bin/runemacs.exe\" +__LINENUMBER__ \"__PATH____FILENAME__\""],
]
}
///////////////////////说明文档结束
================================================