当在.vim中设置时,vim python autoindent无法正常工作

2024-09-25 08:37:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我的.vimrc文件有问题: 我写的python代码是正确的。但我有压痕问题。 当我把is放入我的.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 当选择代码并点击S-=时,vim将正确地开始缩进。 有什么想法吗?在


Tags: 文件代码pyisswvimrcaiau
1条回答
网友
1楼 · 发布于 2024-09-25 08:37:31

这在Vim中不是有效的语法。\只取消换行符,它不允许您链接命令(您有|来执行)。您所写的内容相当于(截断为选项的一个子集):

au BufNewFile,BufRead *.py set tabstop=4 set softtabstop=4 set shiftwidth=4 set textwidth=79

这显然没有意义,因为set不是一个有效的选项。在

所以你可以选择

^{pr2}$

(使它成为一个具有多个设置的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

相关问题 更多 >