如何设置vimrc配置,使其自动缩进4个空格而不是制表符?

2024-09-26 22:53:57 发布

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

这是我目前的状态。vimrc:

cat ~/.vimrc 
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
set nu
set autoindent
set cindent
set encoding=utf-8
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8

我正在调试其他人的代码,当我插入新行时,它似乎自动与下一行缩进。然而,当我执行python程序时,它会抱怨。例如,我在下面添加了一个print语句:

for i, third in enumerate(third_list):
    j = i % 4
    third_group4[j] = third
    print('i, j', i, j)
    if j == 3:
     ....

印刷品似乎与其他线条很协调,但它抱怨:

python test.py 
  File "test.py", line 156
    if j == 3:
    ^
IndentationError: unexpected indent

下一行收到了有关缩进的投诉。我手动检查发现,与“if”前面原来的8个前导空格不同,前4个空格是一个制表符,也是4个空格长。1-tab+4空格的长度与8空格的长度相同,但这就是它抱怨的原因

我测试了一些其他的print语句,当我插入print语句时,它似乎总是影响下一行

我怎样才能取消这个?我不想每次对代码做一点更改时都手动修复缩进。我在Centos 7


Tags: if语句bomvimrcutf空格printset
1条回答
网友
1楼 · 发布于 2024-09-26 22:53:57

首先,让我们从vimrc中删除冗余行:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
set nu
set autoindent
set cindent

其次,让我们修复编码部分:

set encoding=utf-8
set fileencodings+=gb18030,gbk,gb2312,cp936
  • :help 'termencoding':help 'encoding'获取其值,因此如果希望两个选项具有相同的值,则只需要“set encoding=utf-8

    请注意,Vim从您的环境中获取其'encoding'的默认值,因此最好将其正确设置,而不是对单个程序进行黑客攻击,使其按您想要的方式工作

  • 如果'encoding'utf-8,那么:help 'fileencodingd'的默认值是utf-8很好的,并且已经覆盖了很多领域。添加本地编码比重新定义整个过程更有意义

和规范化选项名称:

set number

现在我们可以把注意力转移到剩下的

  • set cindent是专门为C语言设计的,因此如果您正在处理Python代码,那么它是无用的,因此可以安全地删除

  • set noexpandtab明确告诉Vim使用硬制表符。这条线有两个问题:

    1. 默认情况下:help 'expandtab'是禁用的,因此手动执行没有意义

    2. 实际上,您需要的是空格,而不是制表符,因此正确的值应该是set expandtab

以下是您的vimrc在这一阶段的看法:

set encoding=utf-8
set fileencodings+=gb18030,gbk,gb2312,cp936
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
set number

这似乎不会影响示例代码的格式

注意,Vim附带了一个内置的文件类型检测机制,其中包括为Python设置标准缩进规则。只需将以下行添加到vimrc即可从中获益:

filetype plugin indent on

:help :filetype

相关问题 更多 >

    热门问题