0

让我们从文字开始

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

用例:我想第一次应用更长的宏,第二次快速等。

天真的方法只工作一次:q11Gdd8Gpq

@1 <- 这行得通

@1 <- 这打破了

重复时会中断。我尝试了其他避免 dd 的方法(例如,在第一行 d1j 上方创建一个新行,返回到第 8 行,粘贴,J 加入行)。我尝试的一切都在运行一次时起作用,但是在此运行期间有些东西正在改变宏缓冲区。

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

4

2 回答 2

1

这个页面有答案,https://vim.fandom.com/wiki/Moving_lines_up_or_down

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

q1:1m$<cr>q

对我来说,我在列表之后旋转列表中的项目,整个解决方案最终成为

q1:1m8<cr>q

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

于 2019-09-16T20:05:06.470 回答
1

这种情况不需要宏:常用的成语是

:global/^/move $
于 2019-09-18T17:08:44.077 回答