在vi中快速缩进多行

应该是微不足道的,它甚至可能在帮助,但我不知道如何浏览它。 如何在vi中快速缩进多行?


使用>命令。 缩进5行,5 >>。 要标记一行块并缩进它,Vjj>缩进3行(仅限vim)。 要缩进花括号,请将光标置于其中一个大括号上并使用>%。

如果您正在复制文本块并需要将块的缩进对齐到新位置,请使用p而不是p。 这将粘贴的块与周围的文本对齐。

此外, shiftwidth设置允许您控制缩进多少个空格。


这个答案总结了这个问题的其他答案和评论,并且增加了基于Vim文档和Vim wiki的额外信息。 为了简洁起见,这个答案没有区分Vi和Vim特定的命令。

在下面的命令中,“重新缩进”表示“根据缩进设置缩进线条。” shiftwidth是控制缩进的主要变量。

一般命令

>>   Indent line by shiftwidth spaces
<<   De-indent line by shiftwidth spaces
5>>  Indent 5 lines
5==  Re-indent 5 lines

>%   Increase indent of a braced or bracketed block (place cursor on brace first)
=%   Reindent a braced or bracketed block (cursor on brace)
<%   Decrease indent of a braced or bracketed block (cursor on brace)
]p   Paste text, aligning indentation with surroundings

=i{  Re-indent the 'inner block', i.e. the contents of the block
=a{  Re-indent 'a block', i.e. block and containing braces
=2a{ Re-indent '2 blocks', i.e. this block and containing block

>i{  Increase inner block indent
<i{  Decrease inner block indent

您可以用{ }B替换,例如=iB是一个有效的块缩进命令。 看一看“缩进代码块”,以获得一个很好的例子来试用这些命令。

另外,请记住

.    Repeat last command

,所以缩进命令可以轻松方便地重复。

重新缩进完整的文件

另一种常见情况是需要在整个源文件中修改缩进:

gg=G  Re-indent entire buffer

您可以将此想法扩展到多个文件:

" Re-indent all your c source code:
:args *.c
:argdo normal gg=G
:wall

或多个缓冲区:

" Re-indent all open buffers:
:bufdo normal gg=G:wall

在可视化模式下

Vjj> Visually mark and then indent 3 lines

在插入模式下

这些命令适用于当前行:

CTRL-t   insert indent at start of line
CTRL-d   remove indent at start of line
0 CTRL-d remove all indentation from line

Ex命令

当您想要缩进特定范围的行时,这些功能非常有用,而无需移动光标。

:< and :> Given a range, apply indentation e.g.
:4,8>   indent lines 4 to 8, inclusive

使用标记进行缩进

另一种方法是通过标记:

ma     Mark top of block to indent as marker 'a'

...将光标移动到结束位置

>'a    Indent from marker 'a' to current location

管理缩进的变量

你可以在你的.vimrc文件中设置它们。

set expandtab       "Use softtabstop spaces instead of tab characters for indentation
set shiftwidth=4    "Indent by 4 spaces when using >>, <<, == etc.
set softtabstop=4   "Indent by 4 spaces when pressing <TAB>

set autoindent      "Keep indentation from previous line
set smartindent     "Automatically inserts indentation in some cases
set cindent         "Like smartindent, but stricter and more customisable

Vim具有基于文件类型的智能缩进。 尝试添加到您的.vimrc中:

if has ("autocmd")
    " File type detection. Indent based on filetype. Recommended.
    filetype plugin indent on
endif

参考

  • 缩进代码块
  • 视觉上移动块
  • 缩进源代码
  • :help =

  • 一个很大的选择是

    gg=G
    

    它真的很快,一切都缩进;-)

    链接地址: http://www.djcxy.com/p/745.html

    上一篇: Indent multiple lines quickly in vi

    下一篇: "Least Astonishment" and the Mutable Default Argument