只需一次击键即可删除 Vim 中扩展的空间“制表符”?

只需一次击键即可删除 Vim 中扩展的空间“制表符”?

我编辑Python使用 Vim 编写代码。

使用这个tab键,我插入了四个空格用于缩进。我怎样才能用一次“Backspace”(?) 删除这些空格 - 而不是四次?

必须有一些“设置”选项......

这是我的.vimrc:

set autoindent
set ts=4
set sw=4
set et

答案1

您可以使用Ctrl+D向后移动一个制表位。这实际上将整行向左移动一个制表位;Ctrl+T向右移动一个制表位。请注意,这些按键仅在插入模式下有效(在命令模式下使用<<和可获得等效效果)。>>

答案2

set softtabstop=4

答案3

总结:set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab

简写:set ts=4 sts=-1 sw=0 et

解释

如果您将softtabstop(或sts) 设置为,它将自动表现得与( )-1相同,如果您经常更改制表符,这将为您省去一些麻烦。将( ) 设置为也应该可以有效地使其与 相同。tabstoptsshiftwidthsw0tabstop

详细

shiftwidth sw

每一步(自动)缩进使用的空格数。用于cindent>><<等。
当为零时,tabstop将使用该值。

tabstop ts

文件中 a 所占的空格数。另请参阅 :重新标签命令和 softtabstop选项。

softtabstop sts

Tab执行编辑操作(例如插入Tab或使用 )时a 所占的空格数BS。它 感觉比如Tab插入了 s,而实际上使用的是空格和 s 的混合。这对于保持tabsis 设置处于其标准值很有用,同时能够像将其设置为 一样进行编辑sts当 为负数时,使用sts的值。shiftwidth如果您经常更改制表位,这将为您省去一些麻烦。当expandtab未设置时,使用 s 可最大限度地减少空格数Tab

expandtab et

在插入模式下:使用适当数量的空格插入 。当 处于打开状态时,空格用于缩进><命令。要在处于打开状态autoindent时插入真正的制表符,请使用- 。另请参阅 expandtabCtrlV Tab:重新标签

答案4

几个选项:

  1. 您可以“重新标记”所有空格,以便用制表符替换它们。这样就可以轻松删除它们。
  2. 您可以(这未经测试,因此我在此仅提出想法)创建一个函数,在正常模式下“执行”4 次退格键。然后将其映射到某个东西。但是,它无法知道是否会删除空格或某些重要字符,因此这可能是不安全的。
  3. “4X”将删除最后 4 个字符(这是大 X,而不是小 X,小 X 将起到 Del 键的作用)。

相关内容