Vim không sử dụng thụt lề chính xác trong các tệp Python


7

Tôi đã gặp một cái gì đó mà tôi chưa từng thấy trước đây trong Vim. Trong khi tôi đang tạm thời sửa đổi một số mã nguồn cho phần mềm mà tôi dự định làm việc, tôi nhận thấy vim đang hiển thị khoảng cách không chính xác cho dòng mã mà tôi đã thêm. Gedit hiển thị mã với khoảng cách chính xác. Tôi biết Gedit có khoảng cách chính xác vì mã Python cung cấp lỗi nếu tôi thay đổi mã trong Vim thành nơi nó dường như thuộc về cửa sổ Vim. Tôi đã đính kèm những hình ảnh dưới đây. Dòng mà tôi đã thêm là dòng có nội dung: in "Tôi sắp đánh giá một giai thừa". Tôi cũng đã bao gồm tệp .vimrc ngắn của mình. Có ai nhìn thấy điều này? Tôi đã sử dụng vim trong nhiều tháng nay và không thể nhớ bất cứ điều gì như thế này từng xảy ra.

  • Vim (Không chính xác):

    Vim sai

  • Gedit (Đúng):

    Đúng rồi

  • Vimrc:

    Tập tin Vimrc


3
Tôi biết điều này có thể hơi rắc rối, nhưng bạn có thể bật set list listchars=tab:>-và tải lên lại hình ảnh (Vim) đầu tiên không? Tôi nghĩ rằng nó sẽ giúp chúng ta thấy những gì đang xảy ra với các tab.
Tumbler41

Có vẻ như vimrc của bạn đang hoạt động tốt. Các tab là 4 không gian như mong muốn. Tuy nhiên, phần còn lại của tài liệu chỉ sử dụng khoảng trắng. Tôi sẽ chỉ sử dụng khoảng trắng trên dòng này để khắc phục vấn đề. Hoặc ở bất kỳ giá nào, hãy nhất quán giữa việc sử dụng các tab và khoảng trắng để thụt lề.
Tumbler41

Sử dụng tất cả các không gian làm việc, cảm ơn bạn. Tuy nhiên, tôi ngạc nhiên vì tôi hy vọng tab sẽ không được diễn giải khác đi.
BenB

Câu trả lời:


10

Nó được thiết lập lại bởi plugin filetype Python; từ /usr/share/vim/vim74/ftplugin/python.vim:

" As suggested by PEP8.
setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8

Tệp này được tải mỗi khi tệp Python được tải. Cá nhân tôi thấy thêm cài đặt thụt đầu dòng ở đây một chút ngạc nhiên.

Ở bất cứ giá nào, để ghi đè lên điều này, hãy sử dụng điều này trong vimrc của bạn:

augroup python
    autocmd!
    autocmd FileType python setlocal noet ts=4
augroup end

Điều này sẽ được tải sau tệp ftplugin, ghi đè cài đặt được đặt ở đó.

Cá nhân, tôi khuyên bạn không nên sử dụng các tab trong tệp Python, vì tiêu chuẩn cộng đồng là sử dụng khoảng trắng.


Vâng, hãy chắc chắn rằng bạn có filetype plugin ontrong vimrc của bạn. Tôi sẽ không ghi đè set tabstop=8mặc dù. Lý do là ở đây
Antony

2

Giải pháp cho tôi là thêm dòng này sau khi plugin filetype vào ~/.vimrctệp của tôi

filetype plugin on
autocmd FileType python setlocal noexpandtab shiftwidth=4 softtabstop=4
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.