[英]vim - python autoindent not working correctly when set in .vimrc
我的.vimrc
文件有問題:我正確地編寫python代碼。 但是我有縮進問題。 當我放在.vimrc文件中時:
" indentation python
au BufNewFile,BufRead *.py
\ set tabstop=4
\ set softtabstop=4
\ set shiftwidth=4
\ set textwidth=79
\ set expandtab
\ set ts=4
\ set sw=4
\ set ai
\ set autoindent
\ set fileformat=unix
\ set expandtab ts=4 sw=4 ai
但是,一旦打開python文件,如果我運行set expandtab ts=4 sw=4 ai
vim,將在選擇代碼並按S-=
時正確地開始縮進。 任何想法?
這在Vim中不是有效的語法。 \\
僅取消換行符,它不允許您鏈接命令(為此具有|
)。 您編寫的內容等同於(截斷為選項的一部分):
au BufNewFile,BufRead *.py set tabstop=4 set softtabstop=4 set shiftwidth=4 set textwidth=79
這顯然沒有意義,因為set
不是一個有效的選項。
所以你可以做
au BufNewFile,BufRead *.py
\ set tabstop=4
\ softtabstop=4
\ shiftwidth=4
\ textwidth=79
(使其成為具有多個設置的單個set
命令),或者您可以執行
au BufNewFile,BufRead *.py
\ set tabstop=4 |
\ set softtabstop=4 |
\ set shiftwidth=4 |
\ set textwidth=79
(使其成為多個set
命令)。
但是,這是一個壞習慣,因為這些選項將在全局范圍內設置。 例如,如果您加載一個JavaScript文件,然后加載一個Python文件,然后返回您的JavaScript緩沖區,它將具有您的Python設置。 您應該更喜歡使用setlocal
。
另外,通常使用FileType python
代替BufNewFile,BufRead *.py
是有意義的-在Python的情況下可能不專門,但是某些語言可以具有多種擴展名。
最后,這允許您通過將與語言相關的設置放在.vim/after/ftplugin/python.py
來清理.vimrc
。 您在那里不需要autocmd
只需編寫setlocal
,並確保您的設置將針對每個python
文件類型的緩沖區執行,所以請放心。
因此,我的最終建議是:
" .vim/after/ftplugin/python.py
setlocal tabstop=4
setlocal softtabstop=4
setlocal shiftwidth=4
setlocal textwidth=79
setlocal expandtab
setlocal autoindent
setlocal fileformat=unix
或同等
" .vim/after/ftplugin/python.py
setlocal ts=4 sts=4 sw=4 tw=79 et ai ff=unix
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.