0

我想在 Vim 中使用替换来手动取消缩进(而不是做 <)

所以我这样做:

:%s/^(^I)?//g

但它没有找到模式。我究竟做错了什么?

4

3 回答 3

1

您可能需要使用\(and\)而不是(and )。此外,请确保^I是单个字符(例如,使用 control-v TAB 创建)而不是两个(例如,使用 '^' 和 'I' 创建)。最后,我不确定您是否甚至需要/想要?.

于 2012-06-29T19:36:53.713 回答
1

Vim 不理解您似乎使用的 Perl-ish 正则表达式语法。一定是:

%s/^\t\?//

不是必需的(...),必须写为\(...\)。除了\t,您还可以按Ctrl+ V Tab,或使用通用原子作为空格\s

于 2012-06-29T19:39:20.657 回答
0

我意识到这个问题要求替换,但我觉得有必要提出一些提供类似功能的前命令:

  • 为整个文件减少 1 级缩进::%<
  • 为第 1-5 行减少 1 级缩进::1,5<
  • 为匹配模式的行减少 1 级缩进::g/pattern/<
  • 删除所有缩进::%left:%le简称

如需更多帮助,请参阅:

:h :<
:h :g
:h :left
:h :range
于 2012-07-13T21:28:29.160 回答