我想要选中一段文本并将其翻转,使得该选择的第一行出现在底部。原始文本如下:
<other_stuff>
The
wheels
go
round.
<more_stuff>
可视化选择句子并翻转:
<other_stuff>
round.
go
wheels
The
<more_stuff>
如何简单地实现这个?我不想安装插件来完成它。
我想要选中一段文本并将其翻转,使得该选择的第一行出现在底部。原始文本如下:
<other_stuff>
The
wheels
go
round.
<more_stuff>
可视化选择句子并翻转:
<other_stuff>
round.
go
wheels
The
<more_stuff>
如何简单地实现这个?我不想安装插件来完成它。
:'<,'>!tac
这会将这些行通过Unix的“反向cat”程序处理。
tail -r
命令。 - silvenon!
可以节省很多时间! - Enlico根据:help 12.4
,您可以使用mt
标记第一行,移动到要反转的最后一行,然后使用命令:'t+1,.g/^/m 't
针对那些更喜欢使用可视化模式的人:
:set nu
来查找要翻转的选区上方的行号。Shift-V
来高亮要翻转的选区(可视化模式)。:g/^/m <步骤1中的行号>
。请注意,在可视化模式下,当您从步骤3输入命令时,它会自动显示为:'<,'>g/^/m <行号>
。
该命令通过逐行将所选内容移动到给定的行号来实现翻转。当第二个项目被推入给定的行号时,它会将第一个项目推到行号+1。然后第三个项目将第一个和第二个向下推,以此类推,直到整个列表都被推入单个行号,从而实现了反向排序的列表。
回答Dave Kirby的问题并满足“如何简单地完成此操作”的要求,您可以在.vimrc
文件中创建一个快捷方式。以下示例将F5
键映射到此快捷方式:
map <F5> :'<,'>!tail -r<CR>
或适用于OS X:
map <F5> :'<,'>!tac<CR>