Làm cách nào để thiết lập tính năng tự động nhập Vim đúng cách để chỉnh sửa tệp Python?


82

Tôi gặp sự cố khi thiết lập Vim (7.1.xxx) để chỉnh sửa tệp Python (* .py). Thụt lề dường như bị hỏng (tối ưu 4 dấu cách). Tôi đã làm theo một số hướng dẫn mà tôi tìm thấy qua Google. Vẫn không có tác dụng: / Vui lòng giúp đỡ.


2
Chính xác thì vấn đề của bạn là gì? Làm thế nào là thụt lề bị hỏng?
cschol

1
Bạn đang sử dụng nền tảng nào? Windows / Mac / Linux?
Jamie

Câu trả lời:


74

Tôi sử dụng cái này trên macbook của mình:

" configure expanding of tabs for various file types
au BufRead,BufNewFile *.py set expandtab
au BufRead,BufNewFile *.c set expandtab
au BufRead,BufNewFile *.h set expandtab
au BufRead,BufNewFile Makefile* set noexpandtab

" --------------------------------------------------------------------------------
" configure editor with tabs and nice stuff...
" --------------------------------------------------------------------------------
set expandtab           " enter spaces when tab is pressed
set textwidth=120       " break lines when line length increases
set tabstop=4           " use 4 spaces to represent tab
set softtabstop=4
set shiftwidth=4        " number of spaces to use for auto indent
set autoindent          " copy indent from current line when starting a new line

" make backspaces more powerfull
set backspace=indent,eol,start

set ruler                           " show line and column number
syntax on               " syntax highlighting
set showcmd             " show (partial) command in status line

(được chỉnh sửa để chỉ hiển thị nội dung liên quan đến thụt lề / tab)


1
Không sử dụng các tab khi chỉnh sửa ngôn ngữ kiểu C. s / noexpandtab / expandtab
badeip

@AlexKreimer có lẽ bạn nói đúng - tôi viết bài này vào năm 2008 - đó là một thời gian dài trước đây. Tôi muốn cập nhật nó, nhưng tôi đã chuyển từ sử dụng vim cho hầu hết mọi thứ. Hãy nhớ quay lại đây và đăng liên kết đến câu trả lời hay hơn (hoặc tự viết) khi bạn tìm ra giải pháp tốt hơn!
Daren Thomas

@DarenThomas IMO, một câu trả lời rất lỗi thời
Alex Kreimer

15

Tôi sử dụng:

$ cat ~/.vimrc
syntax on
set showmatch
set ts=4
set sts=4
set sw=4
set autoindent
set smartindent
set smarttab
set expandtab
set number

Nhưng tôi sẽ thử các mục của Daren


2
Lưu ý rằng điều đó smartindentchỉ phù hợp để chỉnh sửa tệp C, không phải tệp Python (và dù sao thì hiện tại đã không còn được dùng nữa; hãy xem stackoverflow.com/a/234578/37639 ).
corwin.amber

12

Một tùy chọn đơn giản hơn: chỉ cần bỏ ghi chú phần sau của cấu hình (được nhận xét ban đầu) trong tệp / etc / vim / vimrc:

    if has("autocmd")
      filetype plugin indent on
    endif


3

Đảm bảo bạn đang chỉnh sửa tệp cấu hình chính xác cho VIM. Đặc biệt nếu bạn đang sử dụng windows, nơi tệp có thể được đặt tên là _vimrc thay vì .vimrc như trên các nền tảng khác.

Trong loại vim

:help vimrc

và kiểm tra đường dẫn của bạn đến tệp _vimrc / .vimrc với

:echo $HOME

:echo $VIM

Đảm bảo rằng bạn chỉ đang sử dụng một tệp. Nếu bạn muốn chia cấu hình của mình thành các phần nhỏ hơn, bạn có thể tìm nguồn các tệp khác từ bên trong tệp _vimrc của mình.

:help source


1

Kết hợp các giải pháp do Daren và Thanos đề xuất, chúng ta có một tệp .vimrc tốt.

-----
" configure expanding of tabs for various file types
au BufRead,BufNewFile *.py set expandtab
au BufRead,BufNewFile *.c set noexpandtab
au BufRead,BufNewFile *.h set noexpandtab
au BufRead,BufNewFile Makefile* set noexpandtab

" --------------------------------------------------------------------------------
" configure editor with tabs and nice stuff...
" --------------------------------------------------------------------------------
set expandtab           " enter spaces when tab is pressed
set textwidth=120       " break lines when line length increases
set tabstop=4           " use 4 spaces to represent tab
set softtabstop=4
set shiftwidth=4        " number of spaces to use for auto indent
set autoindent          " copy indent from current line when starting a new line
set smartindent
set smarttab
set expandtab
set number

" make backspaces more powerfull
set backspace=indent,eol,start

set ruler                           " show line and column number
syntax on               " syntax highlighting
set showcmd             " show (partial) command in status line


0

để chỉnh sửa python nâng cao hơn, hãy xem xét cài đặt plugin vim simplefold . nó cho phép bạn gấp mã nâng cao bằng cách sử dụng biểu thức chính quy. tôi sử dụng nó để gấp các định nghĩa lớp và phương thức của tôi để chỉnh sửa nhanh hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.