这就是我需要的 - 有一个密钥可以创建我的python站点包的ctags。
我有这个命令,它将打印site-packages路径:
!python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
这就是我对键映射的方式:
map <F11> :!ctags -R -f ./tags *site-packages-path-goes-here*<CR>
如何将一个命令的结果插入到键绑定语句中?
我想在运行时获取site-packages路径的原因是我强烈地使用virtualenv。结果,所需的路径一直在变化。
答案 0 :(得分:9)
这应该有效:
map <F11> :exe '!ctags -R -f ./tags ' . shellescape(system('python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"'))<CR>
但是如果你的shell支持它,为什么不只是:
map <F11> :!ctags -R -f ./tags `python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()`<CR>
答案 1 :(得分:3)
我知道上面给出的答案有效,但我想建议一个替代方案
map <F11> :!ctags -R -f ./tags $VIRTUAL_ENV/lib/python2.7/site-packages<CR>
答案 2 :(得分:0)
我在使用这样的命令时遇到了一些问题(取自this article):
ctags -R --fields=+l --languages=python --python-kinds=-iv -f ./tags $(python -c "import os, sys; print(' '.join('{}'.format(d) for d in sys.path if os.path.isdir(d)))")
在激活的virtualenv中使用python 3.6我的系统决定在上面使用命令时使用system-default python 2.7。
所以我想告诉你我的解决方案:
python -c \"import os, sys; print(' '.join('{}'.format(d) for d in sys.path if os.path.isdir(d)) + ' ./')\" | xargs /usr/bin/ctags -R