如何使用2个不同的位置为vim生成单个.ctags文件?
我每天都在使用python,需要有一个本地项目和在virtualenv中找到的每个python模块/egg的索引 下面是我希望看到改进的半工作版本。目前,我可以在redraw命令之前执行一个或另一个操作。通过这种方法,我最终在我所处理的每个项目的根目录中都有一个.ctags文件,vim意识到通过类名/方法名/等快速方便地进行任何查找 有没有一种方法可以将这两个exe行合并成一行,而只生成一个索引文件 先谢谢你如何使用2个不同的位置为vim生成单个.ctags文件?,vim,ctags,Vim,Ctags,我每天都在使用python,需要有一个本地项目和在virtualenv中找到的每个python模块/egg的索引 下面是我希望看到改进的半工作版本。目前,我可以在redraw命令之前执行一个或另一个操作。通过这种方法,我最终在我所处理的每个项目的根目录中都有一个.ctags文件,vim意识到通过类名/方法名/等快速方便地进行任何查找 有没有一种方法可以将这两个exe行合并成一行,而只生成一个索引文件 先谢谢你 set tags=./.ctags,.ctags; " re-index the c
set tags=./.ctags,.ctags;
" re-index the ctags file
map <leader>ri :call RenewTagsFile()<cr>
" search through the indexed ctags file for any class/method/etc
map <leader>fs :FufTag<CR>
function! RenewTagsFile()
exe 'silent !ctags -Rf .ctags ' . system('python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"')''
exe 'silent !ctags -Rf .ctags --extra=+f --exclude=.git --languages=-javascript 2>/dev/null'
exe 'redraw!'
endfunction
你不需要。Vim能够处理多个标记文件,只需选择一个位置放置virtualenv标记文件,并将其完整路径包含在“标记”选项中 不过,还有另一种可能性:阅读
manctags
。通过添加一个开关,可以使CTAG向现有文件添加标记。您仍然不需要将这些命令合并到一个命令中
注意:代码中有一些奇怪的东西:
.ctag代码>带分号的文件?我猜这是个打字错误
nnoremap…
。首先,这里没有您想要重新映射的内容,因此nore
。其次,命令不是为了在可视模式下工作而编写的,我怀疑在操作员挂起模式下是否需要它们,因此nnore
:exe
,只要
silent !ctags -Rf .ctags --extra=+f --exclude=.git --languages=-javascript 2>/dev/null
redraw!
。但是你可以完全避免重画使用system()
进行编码>:
这些评论对linux和OSX都友好吗?如上图所示,我发现呼叫系统建议在Ubuntu 12.04上不起作用。我白天在Ubuntu上使用vim文件,晚上在OSX上使用vim文件,所以我更喜欢两者都能使用的东西。此外,我仍然看到“最后一个获胜”的行为,即项目的底部CTAG仍然存在,但我的virtualenv索引(第一个被调用的索引)消失。看起来,在第二个CTAG上添加-a标志将允许我在一个CTAG文件中保留这两个索引ctags-a-Rf.ctags…“@ToranBillups我不知道什么时候
代码>工作,等效的调用系统()
调用不工作。第一行在我的系统(GentooLinux)上运行。注意:system()
并没有扩展一些东西,如%
和35;
。根本不是交易:0。我在这里看不到特价商品。1.您无法可靠地使用这些特殊功能(包含特殊字符的名称在使用%
扩展时会中断调用,但在显式使用shellescape()
时不会中断调用)。@ToranBillups我的意思是,第一行调用系统()
。要确定CTAG是否成功退出,请使用v:shell\u error
。
set tags=./.ctags,.ctags;
map …
exe 'silent !ctags -Rf .ctags --extra=+f --exclude=.git --languages=-javascript 2>/dev/null'
exe 'redraw!'
silent !ctags -Rf .ctags --extra=+f --exclude=.git --languages=-javascript 2>/dev/null
redraw!
call system('ctags -Rf .ctags ' . system('python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"'))
call system('ctags -Rf .ctags --extra=+f --exclude=.git --languages=-javascript 2>/dev/null')