Vim 缩进总结

在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个空格

与缩进相关的参数有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个空格。

设置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

查看参数值:
:set $arg(这里的arg是变量,值就是上面的那些参数),比如:set softtabstop
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 光标移动 h 光标左移,同 <Left> 键j ...
    guanguans阅读 5,865评论 0 16
  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 30,937评论 3 48
  • 搜索 Eclipse常用快捷键 编辑 查看 窗口 导航 文本编辑 文件 项目 源代码 运行 重构 其他Eclips...
    CarlosLynn阅读 5,675评论 0 7
  • #########################################################...
    路峰阅读 4,768评论 0 0
  • 在两年前一部喜剧推理片出现在人们的视野中,这部电影就是唐人街探案一。 这部电影的导演是陈思诚,他不经让我想到另一位...
    Michaelzxq阅读 3,280评论 2 1