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] 是键盘左上角的键 +)
- gg——转到文件顶部
- O - 在当前行上方添加新行
- <表格> - 写入 <表格>
- [ESC]-返回命令模式
- Y - 拉出当前行
- G——转到文件末尾
- p - 将复制的行粘贴到当前行下方
- a - 开始插入模式并开始在当前符号后插入
- / - 添加 / 符号
- [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
)
- :2 - 转到文件的第二行
- qq-开始在“q”寄存器中录制宏
- O - 在当前行上方添加新行
- <tr> - 添加 <tr>
- [ESC][DOWN] - 你知道 =)
- I - 转到行首并启动插入模式
- <td> - 写入 <td>
- [ESC键] - ...
- A - 转到行尾并启动插入模式
- - ...
- [ESC][向下]
- 重复6-10
- [ESC键]
- o - 在当前行下方添加行并启动插入模式
- </tr> - ...
- [ESC][DOWN]q - 结束宏录制
答案2
答案3
我知道您可能正在考虑使用宏的一些巧妙的解决方案,但我会让手指来走动(因为您不太可能拥有数百行长的 HTML 表格):
对于文件的每一行,将行首替换为<td>
对于每一行,将行尾替换为</td>
%s/^/<td>/
%s/$/<\/td>/
转到第一行并插入
</tr>
<tr>
拉出这些行,按下箭头直到到达下一个插入点,然后按p
“继续”到文件底部,p
每两行按一次。这里有一种我喜欢使用的简单节奏:向下、向下、p、向下、向下、p,等等。
将最后一行更改为
</table>
回到顶部并将第一行更改为
<table>
显然,我还没试过(我承认对于某些人来说宏可能更容易)