Vim Foo,列表转 HTML 表格

Vim Foo,列表转 HTML 表格

Vim 中最简单的方法是什么:

hello
world
test
test2
test3
test4

<table>
<tr>
<td>hello</td>
<td>world</td>
</tr>
<tr>
<td>test</td>
<td>test2</td>
</tr>
<tr>
<td>test3</td>
<td>test4</td>
</tr>
</table> 

对于任意长度的列表?

答案1

您可以手动添加 <table> 和 </table>: ggO<table>[ESC]YGpa/[ESC] 其中 [ESC] 是键盘左上角的键 +)

  1. gg——转到文件顶部
  2. O - 在当前行上方添加新行
  3. <表格> - 写入 <表格>
  4. [ESC]-返回命令模式
  5. Y - 拉出当前行
  6. G——转到文件末尾
  7. p - 将复制的行粘贴到当前行下方
  8. a - 开始插入模式并开始在当前符号后插入
  9. / - 添加 / 符号
  10. [ESC]-返回命令行

现在您可以录制一个简短的 vim 宏来多次重复另一组命令:

:2[ENTER]qqO<tr>[ESC][DOWN]I<td>[ESC]A</td>[ESC][DOWN] I<td>[ESC]A</td>[ESC]o</tr>[ESC][DOWN]q

是的,现在你可以重复@q多次......(例如11@q

  1. :2 - 转到文件的第二行
  2. qq-开始在“q”寄存器中录制宏
  3. O - 在当前行上方添加新行
  4. <tr> - 添加 <tr>
  5. [ESC][DOWN] - 你知道 =)
  6. I - 转到行首并启动插入模式
  7. <td> - 写入 <td>
  8. [ESC键] - ...
  9. A - 转到行尾并启动插入模式
  10. - ...
  11. [ESC][向下]
  12. 重复6-10
  13. [ESC键]
  14. o - 在当前行下方添加行并启动插入模式
  15. </tr> - ...
  16. [ESC][DOWN]q - 结束宏录制

答案2

也许你正在寻找禅编码为了vim

答案3

我知道您可能正在考虑使用宏的一些巧妙的解决方案,但我会让手指来走动(因为您不太可能拥有数百行长的 HTML 表格):

对于文件的每一行,将行首替换为<td> 对于每一行,将行尾替换为</td>

%s/^/<td>/
%s/$/<\/td>/

转到第一行并插入

</tr>
<tr>

拉出这些行,按下箭头直到到达下一个插入点,然后按p “继续”到文件底部,p每两行按一次。这里有一种我喜欢使用的简单节奏:向下、向下、p、向下、向下、p,等等。

将最后一行更改为

</table>

回到顶部并将第一行更改为

<table>

显然,我还没试过(我承认对于某些人来说宏可能更容易)

相关内容