vim Tab的设置问题

VIM 中处理 TAB 异常的方便。

键盘上的 TAB 键,与文件中的 TAB 符号一定要区分开,这是两个概念。

显示当前文件中的 Tab

/\t

实际上,就是查询 \t 符号。

shiftwidth

用于设置

  • 换行时的自动缩进列数
  • 行选择后,使用 < 或者 > 做缩进时,缩进的列数

疑问来了!

shiftwidth 引入的缩进,是 Tab 还是 Space?

从测试来看

  • 如果 expandtab 开启是 Space
  • noexpandtab 且 softtabstop 与 tabstop 一致时,是 TAB 符号。

那就是说,如果在 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
  • insert 模式下,按 TAB,依然是 4 个 space。
  • 但是 insert 模式下连按两个 TAB 键,就变成了一个 TAB 符号。
  • 连续按下3个 TAB 键,就变成了一个 TAB 符号,加上 4 个空格。

如图:

此时,关闭 PHP 测试文件。修改 .vimrc 如下:

autocmd FileType php setl shiftwidth=4 tabstop=16 softtabstop=4 noexpandtab

再次打开之前的 PHP 测试文件。会发现 TAB 符号被显示成了 16 个空格。而其之后的 space 依旧是4个。

这说明了什么?

说明,tabstop 有两个作用

  • 识别多少个空格形成一个 TAB
  • 显示既有文件时,将 TAB 显示成多个个空格

不同语言的规范并不一致

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

上面这两行命令即可

原文地址:https://www.cnblogs.com/foreverlin/p/10146181.html

时间: 2024-11-08 20:28:38

vim Tab的设置问题的相关文章

find,vim的编程设置,SUID,SGID,SBIT,软.硬链接,重定向

1.find命令: 基本格式:find 路径 选项 参数 -name  : 根据文件名字查找 -size  :根据文件大小查找    +(比这个大)  -(比这个小) -type  :根据文件类型查找    - 普通文件 -d 目录 -l 链接文件 -c 字符设备文件 -b 块设备文件 -p 管道文件 -uid   : 根据用户的UID查找 -gid   :根据用户所属组查询 -nouser :查询没有所属用户的 -nogroup:查询没有所属组的 -perm  :根据权限查找 最后可以-exe

vim编辑器的设置文件

vim配置特点: 1.按F5可以直接编译并执行C.C++.java代码以及执行shell脚本,按“F8”可进行C.C++代码的调试 2.自动插入文件头 ,新建C.C++源文件时自动插入表头:包括文件名.作者.联系方式.建立时间等,读者可根据需求自行更改 3.映射“Ctrl + A”为全选并复制快捷键,方便复制代码 4.按“F2”可以直接消除代码中的空行 5.“F3”可列出当前目录文件,打开树状文件目录 6. 支持鼠标选择.方向键移动 7. 代码高亮,自动缩进,显示行号,显示状态行 8.按“Ctr

vim中vimrc设置

注意:如果刚安装好ubuntu,要先安装一下vim:apt-get intall vim sudo vim /etc/vim/vimrc  set nu // 在左侧行号 set tabstop //tab 长度设置为 4 set nobackup //覆盖文件时不备份 set cursorline //突出显示当前行 set ruler //在右下角显示光标位置的状态行 set autoindent //自动缩进 set mouse=a //使用鼠标 syntax on  //语法高亮 set

IAR修改工程名称、Tab键设置

IAR 修改工程名称 很多时候用IAR开发都是基于已有工程模板开发的,但是工程模板的名称经常让人头疼:以下是修改办法: 从一个实例工程复制后缀名为"dep,ewd,ewp,eww"的四个文件,并将其重命名为 你自己的名字,如:enddev_module.dep,enddev_module.ewd,enddev_module.ewp,enddev_module.eww. 修改右键打开enddev_module.eww文件,并修改该文件中的中的"<path>$WS_D

【转】vim - tab变空格

vim中将tab自动转换成空格 在vim中,有时需要将tab转换成space.使用ret命令(replace tab).[range]ret[ab]! [new-tabstop] 举例:将第一行到文件尾的tab转换成space,每个tab用4个space替代.:set expandtab:%ret! 4如果没有给定4,则用当前的tab宽度设定替换为space. 其它相关命令::set tabstop=4        设定tab宽度为4个字符:set shiftwidth=4     设定自动缩

vim各种编码设置问题

vim各种编码设置问题 vim中主要有四个编码相关的设置,具体是~/.vimrc中: 以下是我的设置: set fileencodings=gb18030,utf-8,gb2312,gbk: set termencoding=gb18030: set encoding=utf-8: fileencoding注意这个不是有我们设置的,这是vim探测. encoding 设置vim的工作编码,确保编码要尽量的全,否则会有数据损失,通常会用utf-8编码: fileencodings vim读取文件的

vim tab设置为4个空格

为了vim更好的支持python写代码,修改tab默认4个空格有两种设置方法: 1. vim /etc/vimrc 1 set ts=4 2 set sw=4 2. vim /etc/vimrc 1 set ts=4 2 set expandtab 3 set autoindent 推荐使用第二种,按tab键时产生的是4个空格,这种方式具有最好的兼容性. 在 Vim 中设置 Tab 缩进用 tab 制表符还是空格,这不是个问题,就像 python 用四个空格来缩进一样,这是要看个人喜好的.在 V

设置vim tab为4个空格

Vim 编辑器默认tab为8个空格,但对于pythoner来说,必须要调整到4个空格. 方法如下: 在~/.vimrc文件中加入下面设置: 1 set ts=4 #设置tabstop为4个空格 2 set expandtab 重新打开vim就可以快乐的tab了~ 原文地址:https://www.cnblogs.com/chfang007/p/8922582.html

Ubuntu 设置Vim tab为四个空格

使用root权限打开 /etc/vim/vimrc 添加下列配置 set tabstop=4 set softtabstop=4 set shiftwidth=4 set noexpandtab set nu set autoindent set cindent 然后保存