使用>>缩进下一个缩进级别


9

有时,我不得不使用未缩进缩进级别的代码,通常在复制/粘贴文件中的某些内容后,我已将Vim设置为(每级4个空格)。我通常使用<<>>。问题在于它们不会跳到下一个缩进级别,它们只会增加或减少4个空格。

如果我有这样的代码

if condition:
    do this
   do that

>>下去do that会导致

if condition:
    do this
       do that

我要它去

if condition:
    do this
    do that

除了轻松匹配上面的行的缩进之外,我希望它跳到下一个缩进级别,而不是添加4个空格。

这是我在.vimrc中关于缩进的内容

:set tabstop=4 shiftwidth=4 expandtab

如果你也有filetype plugin indent on你的.vimrc,文件类型(和插件)压痕相关的规则将适用。即,在编辑时检查您的tabstop实际是什么(set tabstop?将与其他设置相同),然后通过将行添加到“之后”文件中来更改这些值,例如:stackoverflow.com/a/159066/5000478
VanLaser

3
>><<分别添加和删除不需要的缩进。您想要的是“格式化”,可通过完成==
romainl

:nnoremap >> ^i<tab><esc>如果您确实希望启用标签页行为,也可以进行映射>>
Wolfie

@romainl ==将跳到上面一行的水平。知道这是一件好事,但并非在我感兴趣的所有情况下都有效。作为问题的补充,我想要的是针对>><<缩进/缩进从该方向沿边界的下一个shiftwidth倍数。
Dumitru

2
不,==使用equalexprequalprg重新格式化给定的行。
romainl

Answers:


12

当您使用的一个命令{count}>>{count}<<>{motion}或者<{motion},在已经被缩进一些行,你希望自己的新的缩进级别是您的倍数'shiftwidth'选项,你可以启用'shiftround'选项,并在您添加此行vimrc

set shiftround

2

如果您总是要>>缩进下一个制表位并<<删除到最后一个制表位,可以像这样重新绑定它们:

:nnoremap << ^i<BS><esc>
:nnoremap >> ^i<tab><esc>

这将移动光标,但是您可能会做一些标记技巧来将其移回。^不会留下任何m'标记,但是您可以在装订中手动留下一个标记。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.