Vim 缩进总结

来源:互联网 发布:java写qq登录界面代码 编辑:程序博客网 时间:2024/06/07 12:16

在linux上编辑文件时,有时候从别的地方copy过来的代码要缩进,如果一行一行的搞,忒麻烦耗时了,下面是自己使用中不同模式下的一些缩进快捷方法:

一、 normal 模式下
>> 当前行增加缩进
<< 当前行减少缩进

或者
:10,100>
第10行至第100行缩进
:20,80<
第20行至第80行反缩进

二、 Visual 模式下
normal 模式下按v 即进入VISUAL模式,可选择多行

选择好需要缩进的行后,按一次大于号’>’缩进一次,按’6>’缩进六次,按’<’回缩

三、INSERT 模式下

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

四、 缩进相关的参数

默认vim的缩进宽度为8个空格

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

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符号)
softtabstop小于tabstop且没有设置expandtab时,如果softtabstop=4,tabstop=8,输入一个tab(softtabstop),会变成4个空格(因为不够用一个tabstop表示),输入两个tab会变成一个tab(8列)。 如果softtabstop等于tabstop,而且expandtab没有设置,softtabstop与tabstop就没什么区别了。
如果设置的expandtab,输入一个tab,将被展开成softtabstop值个空格,如果softtabstop=4,那么一个tab就会被替换成4个空格。

  1. 设置expandtab:
    :set expandtab
    取消expandtab:
    :set noexpandtab
    自动缩进
    :set autoindent 回车后自动缩进
    通常Java的配置方式是:
    :set softtabstop=4 shiftwidth=4 expandtab
    Linux kernel的配置方式:
    :set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab

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

参考:
http://liuzhijun.iteye.com/blog/1831548
https://segmentfault.com/q/1010000000343626

0 0
原创粉丝点击