vim tab

Vim tab

tab键是文本编辑中很常用的格式化文本样式的工具,在vim中有各种选项可以对tab键进行精细的控制,配置适当的tab键可以使得文本编辑效率提高

常见的设置项

输入tab键时将其扩展成空格

    set expandtab

*在已经设置了该选项时,如果不想让输入的tab键被转换为空格,可以通过输入Ctrl+V<Tab>来输入一个tab*

扩展tab键使用的空格数量

    set tabstop=4

*这只会影响设置了该选项之后新添加的tab,而不会影响文本中已经存在的tab,要转换已存在tab键参见下文的retab命令*

对用于缩进的tab设置特定的扩展空格数量

    set shiftwidth=4

对已输入文本的空格和tab进行转换,在vim命令中运行命令:

    :retab          # 将文本中所有已存在tab转换为空格

    :retab!         # 将文本中所有已存在空格转换为tab

    :.retab         # retab命令可以使用range语法,当前命令表示仅作用于当前行

    :%retab         # 作用于整个文件

*注意:对所有空格/tab进行转换,即便是位于字符串中的也会被转换,所以一定要慎用,如果你仅仅是想要转换文本行开头部分的空白请使用下文介绍的SuperRetab*

SuperRetab,文本行开头的空格转换为tab

定义SuperReatab命令

    command! -nargs=1 -range SuperRetab <line1>,<line2>s/\v%(^ *)@<= {<args>}/\t/g

在vim命令行中使用SuperRetab命令

    :%SuperRetab 4          # 将整个文件中所有文本行开头的4个空格转换为一个tab

    :20,50SuperRetab 4      # 作用于20到50行

文本行开头的空格/tab之间的转换

定义命令

    command! -range=% -nargs=0 Tab2Space execute '<line1>,<line2>s#^\t\+#\=repeat(" ", len(submatch(0))*' . &tabstop . ')'

    command! -range=% -nargs=0 Space2Tab execute '<line1>,<line2>s#^\( \{'.&tabstop.'\}\)\+#=repeat("\t", len(submatch(0))/' . &tabstop . ')'

使用命令,在vim命令行中

    :Space2Tab          # 将整个文件所有行开头部分的空格转换为tab

    :Tab2Space          # 将整个文件所有行开头部分的tab转换为tab

    :10,50Tab2Space     # Space2Tab和Tab2Space都可以使用range语法
Previous
Next