在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