复制:
有时我想在 Vim 中缩进一段 C 代码。我通常会逐行标记它。
什么是更好/更快的方法?
我很惊讶还没有人想出=%
。
确保你有:set cindent
,
把自己放在{}
你的块之一上,然后点击:
=%
此块中的所有代码都将正确缩进。
使用 '>' 标记一个块
进入视觉模式,选择到下一个匹配的括号,缩进:
V
%
>
插入时:Cd、Ct
可视时:>、<
正常时:>>、<<
在任何这种模式下使用“。” 进一步缩进。
尝试
:set cindent
这将打开 vim 中的 C 缩进魔法。因此,只要您打开一个支架,它就会自动选择标签,直到您关闭支架。
如果您有看起来像这样的未缩进代码......
if (foo)
{
/* line 1 */
/* line 2 */
/* line 3 */
}
...在命令模式下将光标放在“第 1 行”并键入3==
,其中 3 是要缩进的行数。
我认为这将在没有设置任何缩进开关的情况下完成。
:startRange,stopRange s/^/^\t/g
应该在您提供的行号范围之间的行首添加一个制表符空间
取消缩进:
:startRange,stopRange s/^\t/^/g
除了skinp所说的,如果你有:
int foo()
{
/* line 1 */
/* line 2 */
/* line 3 */
/* line 4 */
}
并且无论出于何种原因希望它看起来像这样(即,您希望所有内容从它们以前的位置缩进 4 个空格*,而不是根据 cindent 规则“正确”缩进):
int foo()
{
/* line 1 */
/* line 2 */
/* line 3 */
/* line 4 */
}
块内的任何位置,执行 viB> (visualselection innerBlock indent)**
*
或任何你的 shiftwidth 设置在
**
vi} 与 viB 相同,并且可能更容易记住,因为 vi} 在 {} 内选择,vi) 在 () 内选择,vi] 在 [] 内选择,vi> 在 <> 内选择。
此外,va}、va) 等除了块中包含的内容外,还选择 {}、() 等。