填写html属性之间的空格以简化块模式下的编辑

时间:2012-07-25 16:41:05

标签: html vim

我想定期填充html属性之间的空格,以简化块模式下的编辑。

示例:

<p><input type="a" name="a" value="foo a"></p>
<p><input type="ab" name="ab" value="ab bar"></p>
<p><input type="abc" name="abc" value="baz abc"></p>

在视觉模式下选择三个输入并做一些魔术。

输出:

<p><input type="a"   name="a"   value="foo a"  ></p>
<p><input type="ab"  name="ab"  value="ab bar" ></p>
<p><input type="abc" name="abc" value="baz abc"></p>

(最好不填写值之间的空格。)

我该怎么做?

编辑:回过头来(编辑后)也很不错。

4 个答案:

答案 0 :(得分:2)

您可以使用Align plugin

执行此操作
:AlignCtrl mIp1P0=l
:Align \i\+=

或使用它构建映射:

map <unique> <SID>WS    <Plug>AlignMapsWrapperStart
nmap <unique> <SID>WE   <Plug>AlignMapsWrapperEnd
map <silent> <script> <Leader>aa <SID>WS:AlignCtrl mIp1P0=l<CR><CR>:'a,'zAlign \i\+\s*=<CR><SID>WE

另外还有Align的替代品,名为Tabularize。

答案 1 :(得分:1)

您可以使用外部工具,我使用astyle进行C / C ++编码,使其自动化我将以下内容插入〜/ .vimrc文件中:

if filereadable("/usr/bin/astyle")
    silent! %!astyle
endif

如果符合您的需求,您可以搜索Tidy

Obs。:带:%!您将所有代码传递给外部工具“!,进行特定选择”&lt;,'&gt;!应该使用。

现在您可以将快捷方式映射到此命令。

答案 2 :(得分:0)

您在阻止模式下进行了哪些编辑?可能有一种更简单的编辑方式。

以下是一个例子:

删除type =“*”:

  • 按行目测选择块(即V})
  • 类型:norm WdW

说明:

  • 当您输入:通过视觉选择时,您应该看到:'&lt;,'&gt;在命令行中。这意味着仅对选择
  • 执行以下命令
  • :norm意味着在正常模式下解释以下字符
  • W跳到下一个Word的开头
  • dW删除,直到下一个Word的开头

我确实必须按照你描述的方式对齐一些特定情况,因为它是可读性的首选(通常不赞成)。我最终做了一个快速的黑客来完成工作。在您的情况下,它看起来像:

  • (选择区块)
  • :'&lt;,'&gt; s / / / g
  • (在“输入”之后转到第一个空格)
  • (请注意右下角的列号(10))
  • gv(重新选择块)
  • :norm 10ldw(删除
  • (转到“abc”之后的第一个空格(因为这是此列的最长值))
  • (注意列号(21))
  • :norm 21ldw

......等等

如果你只想删除一个列,你可以只将1个空格转换为多个,阻止选择包含每边一些空格的列,删除,并将许多空格转换回一个。

正如我之前所说,这种方法非常脆弱,只有在空格仅用于分隔列时才有可能。您可以考虑制作宏或尝试使用查找和替换来完成编辑任务,而不是使用块上的规范

答案 3 :(得分:0)

如果属性之间只有一个空格,您可以这样做:

 :s/"\s/"\t/g

您可以看到更多here