如何创建重新排列行的vim宏?

时间:2019-09-16 19:57:34

标签: vim vim-macros

让我们从文字开始

1 The
2 Quick
3 Brown
4 Fox
5 Jumps
6 Over
7 The
8 Lazy
9 Dog

然后让我们说,您想使用宏重复使第一行成为最后一行。也就是说,这是1次跑步后的目标状态

1 Quick
2 Brown
3 Fox
4 Jumps
5 Over
6 The
7 Lazy
8 Dog
9 The

用例:我想在单词“第一次”中应用一个更长的宏,第二次使用“ Quick”,等等。

幼稚的方法只工作一次: q11Gdd8Gpq

@ 1 <-这有效

@ 1 <-此中断

重复时此中断。我尝试了避免dd的其他方法(例如,在第一行d1j上方新建一行,返回到第八行,粘贴J以加入行)。我尝试运行的所有内容一次运行都可以,但是在此运行期间某些更改宏缓冲区。

您如何制作一个可以多次运行的宏?

2 个答案:

答案 0 :(得分:1)

此页面的答案为https://vim.fandom.com/wiki/Moving_lines_up_or_down

在我的特定应用程序之外(感谢评论中的@Amadan)

q1:1m$<cr>q

对我来说,我在列表中旋转项目时,其内容在列表之后,整个解决方案最终得以实现

q1:1m8<cr>q

但是对于上述问题,用$而不是行号是正确的。

答案 1 :(得分:1)

这种情况不需要宏:常见的习惯用法是

:global/^/move $