我在使用Vim和Python时遇到了麻烦.事实上,我很困惑这是如何工作的.
我在Windows 7上有通用的gvim 7.3(使用python/dyn)我正在使用SuperTab插件,其中一些是特定于python的,在vimrc中有以下设置:
au FileType python set omnifunc=pythoncomplete#Complete
let g:SuperTabDefaultCompletionType = "context"
let g:SuperTabContextDefaultCompletionType = "<c-n>"
Run Code Online (Sandbox Code Playgroud)
我没有设置PYTHONPATH环境可变性.
完成适用于系统模块.
起初我认为它对于非系统代码根本不起作用,但事实并非如此.以下代码最能显示正在发生的事情:
import numpy.random # if this line is commented completion in last line works
class C(object):
def __init__(self, x_):
self.x=x_
def getX(self):
return self.x
def pr(self):
print 'ok'
a=C(10) # nothing changes if I put C() instead, even though it would be wrong
a. # here is completion in question
Run Code Online (Sandbox Code Playgroud)
问题是如果对导入行进行注释,则完成工作(a.<tab>建议使用getX和pr).但它有导入numpy.random,完成刹车.注意:当我运行代码时,此导入正常工作.
Python完成的先决条件是什么?发生了什么,我该怎么做才能完成Python的完成工作.
因为我(相对)是Vim的新手,所以任何建议都表示赞赏.
编辑: 似乎问题是在导入中使用ab表单.如果我从numpy导入随机,一切都很好.如果这很容易解决,我也想从中工作.但是现在我知道如何绕过它并不是那么重要.
是否有更像这样的不寻常的问题,以便我知道未来会发生什么?
我第一次尝试使用Powerline插件(https://github.com/Lokaltog/vim-powerline).
插件似乎已安装.我使用vundle使用以下命令:
Bundle 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim'}
Run Code Online (Sandbox Code Playgroud)
我尝试了很多不同的设置,但目前在我的vimrc中它看起来像这样:
set guifont=Menlo\ Regular\ for\ Powerline:h15
"set guifont=Monaco\ Regular:h15
" set rtp+=~/.vim/bundle/powerline/powerline/bindings/vim
let g:Powerline_symbols = 'fancy'
"let g:Powerline_symbols = 'compatible'
"let g:Powerline_cache_enabled = 1
"set t_Co=256
Run Code Online (Sandbox Code Playgroud)
我也粘贴了一些我试过的命令.
我尝试了不同的字体,修补和正常,但没有任何帮助.
laststatus设置为2.
我在Mac OS X 10.8.2上使用MacVim.
以下是2个窗口的电力线如何找我:
注意奇怪的盒装'x'符号......
有任何想法吗?
为Python推荐使用pLSA(概率潜在语义分析)和LDA(潜在Dirichlet分配)的软件包?Java和C++也可以,但Python更受欢迎.非常感谢您的体验.
有很多库,所以我不知道选择哪个.
有人能告诉我如何在Vim中执行与此映射相反的操作:
nnoremap <leader>iw :let _s=@/<Bar>:let _s2=line(".")<Bar>:%s/^\s*/&&/ge<Bar>:let @/=_s<Bar>:nohl<Bar>exe ':'._s2<CR>
Run Code Online (Sandbox Code Playgroud)
作为澄清,该映射&&
将每行开头的空白数量加倍(部分).只有第一个常规字符前的空格才会受到影响.保留当前搜索字符串(可变_s
).此转换后位置恢复(变量_s2
)
所以基本上我正在寻找一个映射,如果它们被一个接一个地执行,它将撤消这个映射.
我无法弄清楚如何限制这个新操作只能在第一个常规字符之前的空格上工作.