使用>命令。缩进 5 行,5>>。要标记一行和缩进, V j j >缩进 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
您可以替换{
with }
或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
参考
一个很大的选择是:
gg=G
它真的很快,一切都缩进了;-)