2011-01-22 3 views
1

나는 VIM 기초를 배우기 위해 작은 파이썬 스크립트를 작성 중이다. (나는 VIM을 가진 초보자이다). omnicompletion과 함께 작동하도록 VIM을 구성했습니다. 예를 들어, str. ctr + x, ctr + o를 누르면 모든 문자열 메서드가 나에게 제안됩니다. 내가 line.rpart를 입력 한 후 rpartition 메소드 이름을 자동으로 완성하는 VIM 싶습니다Vim과 python : 언어 방법의 문맥 - 인식되지 않는 자동 완성

for line in inFile.readlines(): 
    something = line.rpartition(" ")[0] 

: 그러나 내 코드에서 나는 이런 식으로 뭔가가있다. 내가 라인 객체 타입을 알지는 못하지만, VIM이 파이썬 라이브러리에 대한 지식을 바탕으로 문맥을 인식하지 못하는 완성리스트를 제안하고 싶습니다. 예를 들어 나는 그것이 나에게이 anObject를 함께 할 수 없다 경우에도 rpartition 방법을 제안

anObject.rpart 

을 완료하려고 이클립스 경우!

VIM과 호환 되나요?
감사합니다.

내의 .vimrc 파일 :

set showcmd 
set textwidth=80 
set expandtab 
set smarttab 
set tabstop=4 
set shiftwidth=4 
set softtabstop=4 
set number 
set autoindent 
filetype indent on 
filetype plugin on 
autocmd BufRead,BufNewFile *.py syntax on 
autocmd BufRead,BufNewFile *.py set ai 
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,with,try,except,finally,def,class 
set modeline 
syntax on 
" Closes the Omni-Completion tip window when a selection is 
" made 
autocmd CursorMovedI * if pumvisible() == 0|pclose|endif 
autocmd InsertLeave * if pumvisible() == 0|pclose|endif 
+1

'for line in file '을 사용하십시오. '.readlines()'는 불필요하게 한번에 전체 파일을 메모리에 저장한다. – delnan

답변

1

당신은 확실히 쉽게 빔이 설치 될 수 PySmell 살펴 보셔야합니다. 주어진 프로젝트에 대한 정적 분석을 기반으로 완료 메뉴를 생성합니다. Python 표준 라이브러리 나 Django Lib과 같은 외부 라이브러리 용 태그를 기반으로 완성 제안을 생성 할 수도 있습니다.

저는 Vims Python omnicimpletion에 만족했지만 PySmell로 전환 한 이후로 저는 결코 되돌아 보지 않았습니다.

+0

답장을 보내 주셔서 감사합니다. 내가 이해한다면 pySmell은 omnicompletion이 제공하는 것 외에 추가 기능을 제공합니다. –

+0

절대적으로 그렇지만 파이썬에서만 작동합니다. Omnicompletion은 더 많은 프로그래밍 언어를 지원합니다. 동일한 Vim 인스턴스에서 Python 용 Pysmell과 다른 프로그래밍 언어 용 Omnicompletion을 사용할 수 있습니다. – wassimans

+0

또 다른 질문입니다. 코드가 바뀌면 (예 : 새 클래스가 추가됨) PYSMELLTAGS 파일을 업데이트해야합니다. –

2

심각하게는 Jedi을 사용하십시오!

다른 모든 자동 완성보다 훨씬 좋습니다.

힘이 당신과 함께 할 수 있습니다!

관련 문제