我正在阅读/学习一些关于vim,并发现宏可用于重复动作。我的问题是:vim可以使用宏(或其他一些vim魔法)实现以下文本转换
输入:
- 1 Show invisibles (2:52)
- 2 Tabs and Spaces (6:22)
- 3 Whitespace preferences and filetypes (3:29)
- 4 Tidying whitespace (4:33)
January 2010
- 5 Indentation commands (5:41)
- 6 Working with buffers (3:28)
- 7 Working with windows (5:32)
- 8 Working with tabs (3:17)
February 2010
输出:
January 2010
- 1 Show invisibles (2:52)
- 2 Tabs and Spaces (6:22)
- 3 Whitespace preferences and filetypes (3:29)
- 4 Tidying whitespace (4:33)
February 2010
- 5 Indentation commands (5:41)
- 6 Working with buffers (3:28)
- 7 Working with windows (5:32)
- 8 Working with tabs (3:17)
我会采取一些步骤,但不知道如何在vim中写这个:
这是另一种更优雅(我认为)的方法,但它需要从后面读取文件:
这可能在VIM中吗?谢谢
答案 0 :(得分:3)
试试这个cmd:
:g/^[^-]/norm! dd(P
答案 1 :(得分:1)
以下是肯特作为宏的解决方案(<CR>
表示按 Enter ):
qq/^[^-]<CR>dd(Pq
这记录在寄存器q
中。您可以通过@q
重复一次。
如果您事先使用qqq
清除了注册表,并使用@qq@q
代替q
结束宏,那么您将拥有重复的递归宏直到没有更多的工作要做。 (在这里,你需要:set nowrapscan
,否则它将永远循环。)