Vim缩进与python变得奇怪

Posted

技术标签:

【中文标题】Vim缩进与python变得奇怪【英文标题】:Vim indentation with python getting wierd 【发布时间】:2016-08-15 10:54:28 【问题描述】:
def main():

        todo=TODO()#this line shows one tab one sublime text
        print("The indentation is not right")# THIS ONE SHOWS TWO TABS

我遇到了一个奇怪的问题,我不能再使用 vim 来编辑我的 python 文件了。上面的缩进和我的一样,但是我说缩进是错误的。顺便说一句,正确的第一行是由另一台计算机编辑的。我的操作系统使用 Fedora 23,vim 的默认选项卡在任何其他文件上是 8 个空格,只需要一个退格键即可删除,当我创建 .py 文件时,选项卡变为 4 个空格,需要退格 4 次 现在我不能用我的 vim 来编辑文件了。

【问题讨论】:

你能提供更多关于你的情况的细节吗?你能提供以下输出吗? :set tabstop:set shiftwidthset softtabstop 你还在为 python 使用任何插件吗?像python-modepyflakes 之类的? @sudobangbang 我刚刚检查了一下,当我创建.py以外的文件时,所有这三个输出都是=8,但是当它是.py文件时它们=4,我的.vimrc没有改变这个 【参考方案1】:

如果您想使用 8 个空格宽的制表符,并且每个缩进级别一个制表符,请使用

:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab

或将其放入您的.vimrc

set tabstop=8
set softtabstop=8
set shiftwidth=8
set noexpandtab

要专门为 python 设置此首选项,请将其放入您的 vimrc

autocmd Filetype python setlocal ts=8 sts=8 sw=8

autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab

更多信息请阅读secrets of tabs in vim和indenting source code (vim wiki)

你也可以在旧的 vim 文档中了解它

:help tabstop
:help softtabstop

【讨论】:

这在 vim 中确实有效,但是当我在 .vimrc 中编写这些时,它不起作用。为什么只有 .py 有这个问题 你在使用任何用于 python 的 vim 插件吗? ***.com/questions/158968/… setroubleshoot (1.1) setuptools (18.0.1) 六 (1.9.0) slip (0.6.4)slip.dbus (0.6.4)sosreport (3.2.0a1)SSSDConfig (1.13.3) urllib3 (1.13.1)yumex-dnf (4.1.3) 不,@C.Qian 我说的是 vim 插件或脚本。您是否尝试过我添加到问题中的命令? ` autocmd 文件类型 python setlocal ts=8 sts=8 sw=8`?

以上是关于Vim缩进与python变得奇怪的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中使用 beautifullsoup4 抓取网页时出现奇怪的文本缩进

为啥 switch 语句上有奇怪的缩进?

VIM使用奇怪问题总结

VIM使用奇怪问题总结

scanf 和错误的输入使输出变得奇怪

修复 Debian 中的 vim 奇怪行为 | Linux 中国