如何在vim中不离开编辑模式的情况下取消缩进?

62

最近我写了很多Python代码,并在vim中使用了tab-to-space模式。我正在思考如何在vim中不离开编辑模式进行取消缩进操作,例如在完成if ...:块后。通常,我可以键入<<来取消缩进,但这需要太多的按键操作,有没有更好的方法?


2
将以下代码添加到您的 .vimrc 文件中,即可使用 4 个空格代替 TAB 字符,使用 <TAB> 键进行缩进,使用 <BACKSPACE> 键进行反缩进。set tabstop=4 set shiftwidth=4 set expandtab set smarttab set cindent - Ivan Nikolaev
4个回答

100

在键盘上按下 Ctrl-D,可以一次移除一个制表位,适用于空格替代制表符。


它在运行在Windows上的gVim上工作。不确定它是否在其他地方也能工作。 - R. Martinho Fernandes
26
对于多行文本,我会切换到可视模式“Shift-V”,选择需要操作的行,然后使用<和>符号来改变缩进。 - Evgeny
看起来编辑模式下所有有用的命令都像emacs风格。 - user989762
2
如果有人和我一样想知道如何在编辑模式下缩进行(在行的任何位置),可以键入 Ctrl-T。在插入模式下执行这些操作的帮助信息可以在 :help i_CTRL-D 中找到。 - Gavin

35
在Linux的Vim编辑器中,您可以使用V选择第一行,按下箭头以选择多行,然后键入<来取消缩进所有行。
如果您想要缩进,则输入>

6
这在编辑模式之外有效。虽然事实上是正确的,但它并不是对所提出问题的回答。 - anishpatel
2
虽然这并没有回答问题,但这是关于取消缩进的一般信息在谷歌上的第一个链接(所以我点了赞)。 - Dr-Bracket

3

按下退格键可以一次取消一个缩进级别。


似乎在Windows上使用Vim时退格键无法正常工作,需要进行一些配置吗? - Thomson
1
这取决于你设置了什么选项。 - Keith Pinson
1
我相信(如果我错了请纠正)这取决于你的 'backspace' 选项(使用 :set backspace? 检查)。我的设置为空(只有 backspace=),退格键对我无效。也许调整该选项(查看 :help 'backspace')可以允许您在缩进上进行退格操作。 - ameed
1
为什么它不能像其他合理的编辑器一样,只是用SHIFT-TAB呢? - BitTickler

1
你可以按下 Ctrl-U,它会删除到行的开头。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接