标签:不一致 行号 问题 pytho 相等 git etl nbsp linu
VIM 中处理 TAB 异常的方便。
键盘上的 TAB 键,与文件中的 TAB 符号一定要区分开,这是两个概念。
/\t
实际上,就是查询 \t 符号。
用于设置
疑问来了!
shiftwidth 引入的缩进,是 Tab 还是 Space?
从测试来看
那就是说,如果在 PHP 代码文件中,不对 Tab 做自动转换,那么代码中的缩进就是 Space 与 Tab 混用的。
PSR 是PHP Standard Recommendations 的简写。
PSR-2: 即编码规范 http://www.php-fig.org/psr/psr-2/
Code MUST use 4 spaces for indenting, not tabs.
所以对于 PHP,使用如下配置即可
autocmd FileType php setl shiftwidth=4 tabstop=4 softtabstop=4 expandtab
expandtab 设置之后,insert 模式下按下 TAB 键就会变成 softtabstop 设置的数个 space。
softtabstop 很好理解,即在 insert 模式下,一个 tab 键按下后,展示成几个空格。 而 tabstop 就不好理解了,需要动手测试一下
autocmd FileType php setl shiftwidth=4 tabstop=4 softtabstop=4 expandtab
这种配置下,自己编辑不会引入 tab, 但是如果是打开别人的 php 文件,虽然看上去缩进是一样的,但是如果用
/\t
查看,会看到,还是存在 TAB 符号。
再测试一下这个配置
autocmd FileType php setl shiftwidth=4 tabstop=8 softtabstop=4 noexpandtab
如图:
此时,关闭 PHP 测试文件。修改 .vimrc 如下:
autocmd FileType php setl shiftwidth=4 tabstop=16 softtabstop=4 noexpandtab
再次打开之前的 PHP 测试文件。会发现 TAB 符号被显示成了 16 个空格。而其之后的 space 依旧是4个。
这说明了什么?
说明,tabstop 有两个作用
C 语言在 Linux Kernel 中
tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab
从 github 上看源码如图
而 PHP PSR-2 则是推荐 4 空格缩进。
当然 Python 最极端,不是 4 个空格的缩进,直接报错;并且不允许使用 TAB 作为缩进。
:set expandtab
:retab
注意,这个操作存在风险,其不但会把缩进使用的 tab 符号替换为 space。非缩进使用的 TAB 符号也会被替换。
转载自:https://www.sunzhongwei.com/difference-between-vim-tabstop-and-softtabstop-shiftwidth
标签:不一致 行号 问题 pytho 相等 git etl nbsp linu
原文地址:https://www.cnblogs.com/foreverlin/p/10146181.html