加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

vim – 为什么SuperTab在输入时输出自我?

发布时间:2020-12-16 01:22:42 所属栏目:安全 来源:网络整理
导读:设置 在我的.vimrc中,我有以下几行: " .vimrclet g:virtualenv_directory="/Users/Kit/Development/virtualenv" 然后在?/ .vim / ftplugin / python / virtualenv.vim中我有这些: py EOFimport os.pathimport sysimport vimif 'VIRTUAL_ENV' in os.environ
设置

在我的.vimrc中,我有以下几行:

" .vimrc
let g:virtualenv_directory="/Users/Kit/Development/virtualenv"

然后在?/ .vim / ftplugin / python / virtualenv.vim中我有这些:

py << EOF
import os.path
import sys
import vim
if 'VIRTUAL_ENV' in os.environ:
    project_base_dir = os.environ['VIRTUAL_ENV']
    sys.path.insert(0,project_base_dir)
    activate_this = os.path.join(project_base_dir,'bin/activate_this.py')
    execfile(activate_this,dict(__file__=activate_this))
    print "virtualenv in os.environ!"
EOF
VirtualEnvActivate my-virtualenv-python-2.7

在?/ .vim / ftplugin / python / virtualenv.vim中我有这些SuperTab设置:

setlocal omnifunc=pythoncomplete#Complete
setlocal completeopt=menuone,longest,preview
let g:SuperTabDefaultCompletionType="<c-x><c-]>"

在我的工作目录中,我始终处于工作状态,我执行了以下bash命令,为所有的.py文件生成一个TAGS文件

find . -name '*.py' -type f -print0 | xargs -0 etags -l python

问题

例如,我有一个main.py,其中有一个对象应用程序,以便以下脚本正常工作:

import main
new_app = main.app() # works totally fine Python-wise

例如,如果我写了一些新的代码,并尝试使用SuperTab omnicompletion:

import main
new_new_app = main.<Tab>

这是我得到的:

new_new_app = mainself.

如果我按Tab几次:

new_new_app = mainselfselfselfself.

对我有用

但是,如果我执行以下操作:

new_new_app = main.a<Tab>

我得到一个..对象的完整列表,包括那些不属于模块主体的对象.

我想要的是

如果我在.vimrc中设置以下内容:

let g:SuperTabDefaultCompletionType="context"

然后,我使用标准Python库中的一个模块:

import sys
sys.<Tab> # This will still result in sysselfselfself.
sys.p<Tab> # This will result in the correct list of `sys` members beginning with `p`

但是,“上下文”设置将无法在我自己的模块上运行:

new_new_app = main.a<Tab>
# Will say at the bottom: Omni completion (^O^N^P) Pattern not found

问题

我应该如何设置omnicompletion和SuperTab,使其像标准库模块一样对我自己的模块运行?以及消除自我.烦恼?

正如你所指出的,这是由snipmate: https://github.com/garbas/vim-snipmate/issues/65造成的

我也提出了一个解决方案:
https://github.com/garbas/vim-snipmate/pull/84

它没有被接受,因为snipmate不应该是上下文敏感的.

有两个解决方案:

拿我的狙击叉:

https://github.com/davidhalter/vim-snipmate

这可能不是最好的主意,因为它只是我的叉,我不会主动维护它.
>叉https://github.com/honza/snipmate-snippets并删除点的映射(使用点将不再可能,完成自我).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读