vim Tab的设置问题
VIM 中处理 TAB 异常的方便。 键盘上的 TAB 键,与文件中的 TAB 符号一定要区分开,这是两个概念。 显示当前文件中的 Tab/t ? 实际上,就是查询 t 符号。 shiftwidth用于设置
疑问来了! shiftwidth 引入的缩进,是 Tab 还是 Space? 从测试来看
那就是说,如果在 PHP 代码文件中,不对 Tab 做自动转换,那么代码中的缩进就是 Space 与 Tab 混用的。 PHP 代码规范是如何规定缩进的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。 实践出真知:tabstop 与 softtabstop 的区别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 作为缩进。 将既有文件中的 TAB 符号替换为 Space:set expandtab
:retab
? 注意,这个操作存在风险,其不但会把缩进使用的 tab 符号替换为 space。非缩进使用的 TAB 符号也会被替换。 ? 转载自:https://www.sunzhongwei.com/difference-between-vim-tabstop-and-softtabstop-shiftwidth ? ? 下面是如何设置vim缩进方法的(转载):
找到/etc/vimrc文件(路径或者在/etc/vim/vimrc)在文件,用vim将其打开,在此文件开头加上如下
1)设置(软)制表符宽度为4:
set tabstop=4
set softtabstop=4
2)设置缩进的空格数为4
set?shiftwidth=4
3)设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:
set autoindent
4)设置使用 C/C++ 语言的自动缩进方式:
set cindent
5)设置C/C++语言的具体缩进方式(以我的windows风格为例):
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
6)如果想在左侧显示文本的行号,可以用以下语句:
set nu
在此文件尾部加入如下信息:
最后,如果没有下列语句,就加上吧:
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif
还有中文显示问题,
可以添加:
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
上面这两行命令即可
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |