使用“!”维护现有缩进Vim中的命令

使用“!”维护现有缩进Vim中的命令,vim,editor,indentation,Vim,Editor,Indentation,我正试图清理vim中的一堆yaml文件。yaml文件是测试的固定装置,它们包含XML的文本字符串。它们看起来像: - - "<xml>blah blah blah …1000 characters later</xml>" - "<more>…</more>" - - > <xml> <nicely>formatted</nicely> … </x

我正试图清理vim中的一堆yaml文件。yaml文件是测试的固定装置,它们包含XML的文本字符串。它们看起来像:

-
  - "<xml>blah blah blah …1000 characters later</xml>"
  - "<more>…</more>"
-
  - >
    <xml>
      <nicely>formatted</nicely>
      …
    </xml>
  - >
    <more>
      …
    </more>
但是我尝试用我知道的唯一方法格式化xml:
shift
-
v
来选择行<代码>:'1'来格式化xml,我得到

-
  - >
<xml>
  <nicely>formatted</nicely>
  …
</xml>
-
- >
格式化
…
然后我必须重新选择xml,并使用
2>
重新插入


在执行
时,有没有更好的方法来保持缩进command?

您的问题并没有明确说明这一点,但它在某种程度上暗示了缩进被剥离的原因是Vim,因此需要明确的是,缩进是由xmllint取出的

您可以先尝试保存缩进,但如果不同行之间的缩进不同,则可能会造成混淆。在这种情况下,查看正在运行的命令,稍后只添加缩进可能更有意义-您可以通过将缩进添加到命令过滤器中来自动执行缩进,例如:

:'1'| sed-e's/^/\t/'

-
  - >
<xml>
  <nicely>formatted</nicely>
  …
</xml>