`
lantian_123
  • 浏览: 1360158 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

每日一Vim(9)缩进

 
阅读更多

每日一Vim(9)----缩进

缩进在程序开发的时候是实用的一个功能,尤其Python这种靠缩进来组织代码段的语言来说更重要了。今天特意google了下vim缩进,结果很失望,有的只有配置没有说明,有说明的也没说清楚,特此自己总结一下。

normal 模式下:

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

insert模式下:

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

默认vim的缩进宽度为8个空格,修改缩进的宽度::set shiftwidth=4,具体什么意思,看下面的详细解释。

与缩进相关的参数有shiftwidth、tabstop、softtabstop、expandtab。

shiftwidth  reindent 操作(<<和>>)时缩进的列数(这里的一列相当于一个空格)
tabstop     一个tab键所占的列数,linux 内核代码建议每个tab占用8列
softtabstop 敲入tab键时实际占有的列数。
expandtab   输入tab时自动将其转化为空格
  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个空格。

  5. 设置expandtab:

    :set expandtab
    
  6. 取消expandtab:

    :set noexpandtab
    
  7. 查看参数值:

    :set $arg(这里的arg是变量,值就是上面的那些参数),比如::set softtabstop
    
  8. 自动缩进

    :set autoindent   回车后自动缩进
    
  9. 通常Java的配置方式是:

    :set softtabstop=4 shiftwidth=4 expandtab
    
  10. Linux kernel的配置方式:

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

以后的章节我会来一个完整的Python配置。

 

转载请注明出处,谢谢合作,作者----zhijun

2
1
分享到:
评论
3 楼 isensen 2013-03-19  
我是在考虑,有这种需求吗?或许是我没接触到过,
2 楼 lantian_123 2013-03-19  
最终一个tab键显示的宽度(列数)由softtabstop决定,没有设置expandtab时由tabstop和空格表示,设置了expandtab时就只由空格表示。或许还是没有描述清楚,一边实践操作,一边理解1、2两句话,相信能很快明白
1 楼 isensen 2013-03-19  
softtabstop   tabstop     1和2 说的这两个,感觉意思就是  这两个里面最终决定 显示多少空格的就是 softtabstop 是吗?

相关推荐

Global site tag (gtag.js) - Google Analytics