我每天都在使用Python并需要建立我的本地项目以及virtualenv中发现的每个Python模块/egg的索引。
下面是一个半成品版本,我希望它得到改进。目前,在重新绘制命令之前只能完成其中一项。采用这种方法后,我最终在我工作的每个项目的根目录中都有一个.ctags文件,而vim也很快速和容易地通过类名/方法名等进行任何查找。
是否有一种方法将这两个exe行合并为单个行,仍然仅产生一个索引文件?
提前感谢。
下面是一个半成品版本,我希望它得到改进。目前,在重新绘制命令之前只能完成其中一项。采用这种方法后,我最终在我工作的每个项目的根目录中都有一个.ctags文件,而vim也很快速和容易地通过类名/方法名等进行任何查找。
是否有一种方法将这两个exe行合并为单个行,仍然仅产生一个索引文件?
提前感谢。
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
更新
对于未来可能遇到这个问题的任何人,我可以使用 -a 标志进行追加(因此更新标签文件函数看起来会像这样)
function! RenewTagsFile()
exe 'silent !ctags -Rf .ctags ' . system('python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"')''
exe 'silent !ctags -a -Rf .ctags --extra=+f --exclude=.git --languages=-javascript 2>/dev/null'
exe 'redraw!'
endfunction
!
能工作而等效的call system()
调用不能。第一行在我的系统上(Gentoo Linux)可以工作。注意:system()
不会扩展一些像%
和#
这样的东西。这不是问题:0. 我这里没有看到特殊字符。1. 你不能可靠地使用这些特殊字符(包含特殊字符的名称将在使用%
扩展时破坏调用,但在显式使用shellescape()
时不会)。 - ZyXcall system()
。 - ZyXv:shell_error
。 - ZyX