2010-01-06 3 views
11

CentOS 5에는 Vim 7 (개선)이 있으며, 모든 일반적인 Vim 플러그인/스크립트가 준비되어 있습니다.Vim Python 들여 쓰기가 작동하지 않습니까?

$ find /usr/share/vim/vim70/ -name \*python\* 
/usr/share/vim/vim70/syntax/python.vim 
/usr/share/vim/vim70/ftplugin/python.vim 
/usr/share/vim/vim70/indent/python.vim 
/usr/share/vim/vim70/autoload/pythoncomplete.vim 

나는 평 (vim file.py)로 끝나는 파일을 열 때 자동으로이 플러그인을로드 할 것이라고 생각하지만, 나는 그런 경우입니다 확실하지 않다. 내가 원하는 것은 :

TAB을 입력하고 공백을 4 개 받는다. 스위트, 조건부 등을위한 자동 들여 쓰기

내 .vimrc 파일에서 tabstop, shiftwidth 등을 명시 적으로 설정하여이 작업을 수행했습니다. 위의 Python 파일은 무엇입니까? 왜 내 물건을 내 .vimrc에 넣어야합니까? 대신 Vim 플러그인에서 이러한 기능을 어떻게 얻을 수 있습니까?

현재의 .vimrc :

syntax on 
set hls 
set expandtab 
set textwidth=0 
set tabstop=4 
set softtabstop=4 
set shiftwidth=4 
set autoindent 
set backspace=indent,eol,start 
set incsearch 
set ignorecase 
set ruler 
set wildmenu 
set smarttab 
filetype indent on 
filetype on 
filetype plugin on 

답변

2

는 shiftwidth 등이 ... 당신의 vimrc에 올바른 탭 위치입니다 설정입니다. 이들은 전역 설정을 설정하고 파일 유형별 들여 쓰기 지원에 대한 매개 변수 역할을합니다.

언어 들여 쓰기 플러그인은이 설정을 사용하지만 일반적으로 언어에 적절한 들여 쓰기 표현 (:he inde)도 설정합니다. 따라서 파이썬 인 덴터는 블록 열기 문 (def, class, for ...) 다음에 닫는 문구 (return, pass, continue ...) 다음에 공백을 넣고 ts, sw, ... 너는 정했다.

플러그인에 버퍼가로드되는지 확실하지 않은 경우 검색, 플러그인 및 들여 쓰기 설정을 표시하려면 :filetype을, 감지 유형을 보려면 :set ft?을 입력하기 만하면됩니다.

+0

그래서 ../indent/python.vim 파일을 요약하면 tabstop, shiftwidth 등을 설정할 수 없으므로 vimrc 내에서 지정해야합니까? 파일 형식에 따라 탭 정지가 달라지기를 원하면 어떻게됩니까? indent/python.vim 파일에 이러한 vimrc 설정을 배치하여 파이썬 파일 용으로 만로드 할 수 있습니까? – CarpeNoctem

+0

indent/python.vim에 이러한 설정을 추가하고 그 결과를 얻을 수 있지만 더 좋은 방법은 파일 유형별 설정을 버퍼가로드 된 후 실행될 autocmds로 추가하는 것입니다. (: 그 사람) – abeyer

5

제 생각에 파이썬 파일은 여러 방법으로 들여 쓰기 될 수 있기 때문에 python.vim 파일은 단지 구문 강조 표시 파일 일뿐입니다. PEP8은 4 개의 공백을 지정하지만 기존 파일은 탭 사용을 포함하여 다를 수 있습니다.

기존 파이썬 파일 중 일부는 실제로 들여 쓰기마다 두 개의 공백을 사용합니다. 따라서 파이썬을 Vim으로 들여 쓰기하고 파일과 파일 형식별로 구성합니다. .vimrc의 다음 줄은 my xml, xhtml 및 html (두 칸)과 다른 Python 관련 설정을 제공합니다.

au FileType python setl shiftwidth=4 tabstop=4 

당신은 또한 기존 파일이있는 경우 편리있는 modeline와 파일에 의해 특정 설정을 설정할 수 있습니다.

# vi: set tabstop=2 expandtab textwidth=70 filetype=python: