如何设置 vimrc 配置使其自动缩进 4 个空格而不是制表符?
How to set vimrc configuration so that it automatically indent with 4 spaces instead of a tab?
这是我当前的 .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 程序时,它会抱怨。比如我在下面添加了打印语句:
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 个空格的长度相同,但这就是它抱怨的原因。
我测试了其他一些打印语句,当我插入打印语句时,它似乎总是影响以下行。
我该如何作废?我不想在我对代码做一点改动时手动修复缩进。我在 Centos 7.
首先,让我们从 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'
的默认值很好,并且已经涵盖了很多内容。添加本地编码比重新定义整个事情更有意义。
并规范化选项名称:
set number
现在我们可以把注意力转移到其他方面了……
set cindent
是专门为 C 编写的,因此如果您正在处理 Python 代码,它是无用的,因此可以安全地删除。
set noexpandtab
明确告诉 Vim 使用硬制表符。此行有两个问题:
:help 'expandtab'
默认情况下被禁用,因此没有必要手动进行。
您实际上需要空格,而不是制表符,因此正确的值应该是 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
。
这是我当前的 .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 程序时,它会抱怨。比如我在下面添加了打印语句:
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 个空格的长度相同,但这就是它抱怨的原因。
我测试了其他一些打印语句,当我插入打印语句时,它似乎总是影响以下行。
我该如何作废?我不想在我对代码做一点改动时手动修复缩进。我在 Centos 7.
首先,让我们从 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'
的默认值很好,并且已经涵盖了很多内容。添加本地编码比重新定义整个事情更有意义。
并规范化选项名称:
set number
现在我们可以把注意力转移到其他方面了……
set cindent
是专门为 C 编写的,因此如果您正在处理 Python 代码,它是无用的,因此可以安全地删除。set noexpandtab
明确告诉 Vim 使用硬制表符。此行有两个问题::help 'expandtab'
默认情况下被禁用,因此没有必要手动进行。您实际上需要空格,而不是制表符,因此正确的值应该是
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
。