ccoming

博客园 首页 联系 订阅 管理

缩进:

参考自http://liuzhijun.iteye.com/blog/1831548,http://blog.csdn.net/chenxiang6891/article/details/41348073(如有版权问题,请联系沟通)

normal 模式下:

>>  当前行增加缩进
<<  当前行减少缩进

insert模式下:

CTRL+SHIFT+T:当前行增加缩进
CTRL+SHIFT+D:当前行减少缩进  

shiftwidth、tabstop、softtabstop、expandtab:

shiftwidth  reindent 操作(<<和>>)时缩进的列数(这里的一列相当于一个空格.   set shiftwidth=4命令来设定tab宽.
tabstop     只在文档中读到\t (Tab) 時,要解释为几个space数,常设定为set tabstop=4. abstop本身是一个常量,进行\t与space的宽度兑换,即一个\t能兑换成多少个宽度的space字符。在没有设置softtabstop之前(即softtabstop=0,如果触发一个\t操作输入时兑换成的tab宽度就是一个\t且宽度等于tabstop,还有就是作为读档时一个\t键能占多少个宽度。
softtabstop 敲入tab键时,或者编辑动作(backspcae)时,实际占有的列数(对空白的解释)。softtabstop是一个转换器,当你通过键盘触发了一个\t操作时,他会将其转换为多少个宽度的字符,但是vim中此时他只点有\t而不是很多个你设定的sottabstop的宽度的spaces,这个属性是一个很有意思的东西。当你开启他时(即 softtabstop!=0),这个时候只要点击键盘上的Tab键时,就会触发一个兑换与合并的功能(当然这个你得开启noexpandtab这个属性,这个属性下面会讲),那么这个时候就输入的tab就不是直接输入到vim中了,这个时候tab键就充当一个扳机触发了兑换与合并的操作,当然如果expandtab了,那么你键入tab键时,就直接总换成softtabstop所对于的宽度的space了
expandtab set expandtab将tab装换为space(实际file存储以space形式,not tab).如想將既有的<Tab> 轉成 space, 可在set expandtab之后附加命令:retab! 
  • expandtab当然就是展开了。就是将所有输入到vim中的\t转化成为多少个空格了,

如果未开启softtabstop,则直接展开tabstop常数个spaces,如果开启sfottabstop,那么就以softtabp为常数个spaces,
  • 如果noexpandtab,那么就是解释上同不过仅仅是一个\t点用多少个宽度的spaces的位置(注意了,其实质是占位)。

举例:
set noexpandtab
set sw=4
set tabstop=4
set softtabstop=4
新加入的 Tab 都會是 \t , Tab 為 4 個 space ,讀取檔案的 \t 會被翻譯為 4 個 space ,在操作 BS 的時候,4 個空白會被當作一個 tab 刪除
實際上 softabstop 比較常用在 expandtab 的模式下:
set expandtab
set sw=4
set tabstop=4  " 怕檔案裡頭仍有 \t
set softtabstop=4
如此被延展為空白的 space 也可以像是 tab 一樣被刪除固定的 space 數(softtabstop=4)附帶一題,由於 tab 每個人的用法都不一樣,而且變化很多而現在很多專案
都只使用 space 而不使用tab了!
  • 也就是:

set et sw=4 ts=4 sts=4這樣的設定通常是被建議的。
1)softtabstop>tabstop,无expandtab设置时,
例如:softtabstop=12,tabstop=8,那么当输入一个tab时(softtabstop:实际占用的是12列),最后会变成一个tab(tabstop)加4个空格(8+4),
输入两个tab(2个softtabstop:24列)会变成3个tab(tabstop),也就是说vim或用tabstop+空格来表示,最终你能看到的缩进的列数一定是softtabstop*按的tab键次数。
(ps::set list 可以查看tab符号)

2)softtabstop<tabstop,无expandtab时,如果softtabstop=4,tabstop=8,输入一个tab(softtabstop),会变成4个空格(因为不够用一个tabstop表示),
输入两个tab会变成一个tab(8列)。

3)softtabstop=tabstop,无expandtab时,softtabstop等效tabstop。

4)如果设置的expandtab,输入一个tab,将被展开成softtabstop值个空格,如果softtabstop=4,那么一个tab就会被替换成4个空格。

设置expandtab:
:set expandtab

取消expandtab:
:set noexpandtab

查看参数值
:set $arg(这里的arg是变量,值就是上面的那些参数),比如::set softtabstop

自动缩进
:set autoindent


  • vim对于空白符要么是通过全space来实现【expandtab】上面的缩进和\tab,要么最少化\t和space【noexpandtab】

posted on 2017-04-14 17:28  ccoming  阅读(220)  评论(0)    收藏  举报