簡體   English   中英

vim-在.vimrc中設置時python autoindent無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM