2009-10-06 34 views
18

hiện cấu hình vimrc của tôi là dưới đây:cấu hình vimrc cho Python

set nohlsearch 
set ai 
set bg=dark 
set showmatch 
highlight SpecialKey ctermfg=DarkGray 
set listchars=tab:>-,trail:~ 
set list 
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class 
set tabstop=4 
set shiftwidth=4 
set expandtab 
set autoindent 
set smartindent 
syntax on 
set listchars=tab:>- 
set listchars+=trail:. 
set ignorecase 
set smartcase 
map <C-t><up> :tabr<cr> 
map <C-t><down> :tabl<cr> 
map <C-t><left> :tabp<cr> 
map <C-t><right> :tabn<cr> 

Tuy nhiên, khi tôi viết kịch bản python, khi tôi đẩy "ENTER", nó sẽ đi đến đầu dòng tiếp theo. Tôi nên thêm gì để nó tự động tạo tab cho tôi?

Trả lời

12

Câu trả lời ngắn gọn là hàm tự động của bạn thiếu trình kích hoạt BufEnter, vì vậy nó không bị kích hoạt khi bạn tạo tệp mới. Hãy thử thay vào đó:

au BufEnter,BufRead *.py setlocal smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class 

Lưu ý rằng tôi cũng đã thay đổi set thành setlocal. Điều này sẽ ngăn các tùy chọn này ngừng hoạt động trên các tùy chọn bộ đệm khác của bạn.

Cách "đúng" để thực hiện những gì bạn đang cố gắng làm là thêm filetype indent on vào .vimrc của bạn. Thao tác này sẽ bật tính năng thụt lề dựa trên filetype. Vim đi kèm với hỗ trợ thụt đầu dòng Python. Xem :help filetype-indent-on để biết thêm thông tin.

13

Hãy thử điều này:

filetype indent on 
filetype on 
filetype plugin on 

tôi chủ yếu làm lập trình Python và đây là gánh nặng của vimrc của tôi

set nobackup 
set nowritebackup 
set noswapfile 
set lines=40 
set columns=80 
set tabstop=4 
set shiftwidth=4 
set softtabstop=4 
set autoindent 
set smarttab 
filetype indent on 
filetype on 
filetype plugin on 
+1

Cảm ơn cho điều này, tôi đang sử dụng nó. Mặc dù tôi cũng đã thêm 'tập hợp expandtab'. – Paolo

+1

Tôi có thể chứng thực thiết lập này hoạt động tốt cho Python. – Joel

4

Bạn không cần phải từ khóa trăn rõ ràng thụt lề. Tệp $ VIM/indent/python.vim sẽ giải quyết vấn đề đó. Bạn chỉ cần bật indent filetype và autoindent.

3

I (đơn giản) sử dụng này:

set shiftwidth=4 
set tabstop=4 
set expandtab 
filetype plugin on 
filetype indent on 
syntax on 
Các vấn đề liên quan