【问题标题】:Can vim indent XML without changing the file?vim 可以在不更改文件的情况下缩进 XML 吗?
【发布时间】:2015-03-16 18:02:46
【问题描述】:

我已经阅读了Vim indent xml fileIndenting entire file in Vim without leaving current cursor location,但我想要一些稍微不同的东西:

  • 我可以使用 vim 缩进整个 XML 文件但不更改文件吗?唯一应该改变的是表示,而不是文件本身。

对于那些感兴趣的人:我使用 xml 格式的书籍。如果文件被更改,这通常是通过添加制表符和/或空格。这会弄乱我的数据(因为文本本身实际上可能有制表符或空格)。

【问题讨论】:

  • 你不能缩进它之后不保存文件吗?
  • @Zenadix 否,因为我实际上想在使用这种视觉(但不是真实)缩进时对文件进行更改。

标签: xml vim indentation


【解决方案1】:

你有一些选择:

更改标签宽度

如果您的 XML 具有基于制表符的缩进,您可以通过更改 'tabstop' 值来更改缩进的视觉外观。这根本不会影响文件中的物理 <Tab> 字符。

前/后处理

您可以在阅读后更改缩进量,并在写入前不久撤消。这是一个将空格减半/加倍的示例:

:autocmd BufReadPost,BufWritePost  * %substitute/^\( \+\)\1/\1/e
:autocmd BufWritePre               * %substitute/^ \+/&&/e

【讨论】:

  • 这些文件不是带有“基于制表符”缩进的文件。它们只是未缩进的 XML 字符串。不错的建议,但在这里行不通。
  • 好吧,你可以在读取后修改:autocmds 为缩进(例如通过:normal! gg=G),并在写入前删除所有缩进%s/^\s\+//e
【解决方案2】:

在 Vim 中,您的所有编辑都在缓冲区上完成,缓冲区是文件的内部表示。只要您不将更改写入磁盘,您的文件就不会受到影响。

但是,如果您真的不想冒这个风险……请复制一份。

【讨论】:

  • 我希望能够对文件进行更改。
  • 我的意思是,完成后写入文件而不更改文件的初始缩进(从而恢复与缩进相关的任何更改)。
猜你喜欢
  • 1970-01-01
  • 2014-02-19
  • 2011-04-26
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 2021-05-24
  • 2019-06-21
  • 1970-01-01
相关资源
最近更新 更多