博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vim tab设置
阅读量:3556 次
发布时间:2019-05-20

本文共 5316 字,大约阅读时间需要 17 分钟。

对于已保存的文件,可以使用下面的方法进行空格和TAB的替换

TAB替换为空格:
:set ts=4
:set expandtab
:%retab!
空格替换为TAB:
:set ts=4
:set noexpandtab
:%retab!

 

在linux环境下,作为python开发环境,设置的.vimrc

set autoindent     " 换行自动缩进set shiftwidth=4   " 自动缩进时的宽度set ts=4           " tabstop的宽度set expandtab      " tab换成空格  set softtabstop=4  " 退格键set paste          " 粘贴时不自动换行

 

关于使用tab还是空格的争执很多...各有各的道理...可参考以下文章:


我的感觉:

1. 使用tab制表符时, 对于行首的缩进等没有关系。

但对于数据结构/注释/define宏的定义的对齐,  如以下情况:

struct dwc3 {                                                                                                                                                                      ›       struct work_struct›     drd_work;                                                                                                                                          ›       struct dwc3_trb››       *ep0_trb;                                                                                                                                          ›       void›   ›       ›       *bounce;                                                                                                                                           ›       void›   ›       ›       *scratchbuf;                                                                                                                                       ›       u8›     ›       ›       *setup_buf;                                                                                                                                        ›       dma_addr_t›     ›       ep0_trb_addr;                                                                                                                                      ›       dma_addr_t›     ›       bounce_addr;                                                                                                                                       ›       dma_addr_t›     ›       scratch_addr;                                                                                                                                      ›       struct dwc3_request›    ep0_usb_req;                                                                                                                                       ›       struct completion›      ep0_in_setup;

内核中建议tab不展开为空格, 且一个tab宽度为8个字符。故你的IDE必须按要求设置。

如果将tab宽度设置为4个, 则代码就变成下面这样了....

struct dwc3 {                                                                                                                                                                      ›   struct work_struct› drd_work;                                                                                                                                                  ›   struct dwc3_trb››   *ep0_trb;                                                                                                                                                  ›   void›   ›   ›   *bounce;                                                                                                                                                       ›   void›   ›   ›   *scratchbuf;                                                                                                                                                   ›   u8› ›   ›   *setup_buf;                                                                                                                                                        ›   dma_addr_t› ›   ep0_trb_addr;                                                                                                                                                  ›   dma_addr_t› ›   bounce_addr;                                                                                                                                                   ›   dma_addr_t› ›   scratch_addr;                                                                                                                                                  ›   struct dwc3_request›ep0_usb_req;                                                                                                                                               ›   struct completion›  ep0_in_setup;

..... 

其他还有注释, 宏定义等情况... 

都会遇到类似的问题...

 


另外code review的网页浏览器, 一个制表符为多少, 并不一定和你一致...

 

所以也会遇到代码对齐的问题....



所以我的习惯还是将tab制表符展开成空格。宽度为4个...

如此任何IDE, 浏览器一类, 看上去效果是一样的了...

 


但Linux内核却是使用制表符的, 包括你修改其他人的代码...

归根结底...对于你不是作者的代码... 还是尽量和作者保持一致吧...


一些常见软件的缩进设置, 请参考以下文章...

 

Tabs are eight columns wide. Each indentation level is one tab. (Popular with the Linux kernel.)

:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab

 

Tabs are four columns wide. Each indentation level is one tab. (Popular with Windows developers using Visual Studio.)

:set tabstop=4 softtabstop=4 shiftwidth=4 noexpandtab

 

Each indentation level is four spaces. Tabs are not used. (Popular with Java programmers.)

:set softtabstop=4 shiftwidth=4 expandtab

 

还有...

Just to prove it's possible, here are some more ... creative indentation styles and their vim representation:

  • Tabs are eight columns wide. Each indentation level is three columns, which may be spaces or tabs.
    :set tabstop=8 softtabstop=3 shiftwidth=3 noexpandtab
  • Tabs are five columns wide. Each indentation level is six columns, which may be spaces or tabs.
    :set tabstop=5 softtabstop=6 shiftwidth=6 noexpandtab

... you get the idea.

 

 

 

 

转载地址:http://upcrj.baihongyu.com/

你可能感兴趣的文章
小甲鱼Python第三讲(小插曲之变量和字符串)
查看>>
小甲鱼Python第十一讲(一个打了激素的数组2)
查看>>
小甲鱼Python第十三讲(戴上了枷锁的列表)
查看>>
小甲鱼Python第十四讲(各种奇葩的内置方法)
查看>>
小甲鱼Python第十五讲(格式化)
查看>>
小甲鱼Python第十七讲(Python的乐高积木)
查看>>
小甲鱼Python第十九讲(函数,我的地盘听我的)
查看>>
小甲鱼python第二十讲(内嵌函数和闭包)
查看>>
小甲鱼Python第二十一讲(lambda表达式)
查看>>
小甲鱼Python第二十三讲、第二十四讲(递归-这帮小兔崽子、汉诺塔)
查看>>
小甲鱼Python第二十七讲(集合)
查看>>
可调谐半导体激光器的窄线宽测试及压缩
查看>>
matlab中 %d,%f,%c,%s
查看>>
常见的光纤接头汇总
查看>>
半导体激光器—问题整理(二)
查看>>
科研日记7.31
查看>>
zemax仿真二向色镜
查看>>
stm32单片机编程时extern的用法
查看>>
UART4和5的问题
查看>>
Spring框架中在并发访问时的线程安全性
查看>>