我想进行视觉选择并翻转它,使选择的第一行位于底部。来自:
<other_stuff>
The
wheels
go
round.
<more_stuff>
视觉选择句子然后翻转:
<other_stuff>
round.
go
wheels
The
<more_stuff>
如何简单地做到这一点?我宁愿不必安装插件来做到这一点。
当你进行视觉选择时,Vim 会自动在块的开头和结尾分别创建书签
'<
和 '>
,因此你可以通过多种方式执行你想要的操作。
正常模式下:
'>dd'<P
作为 ex 命令:
:'>d | '<-1 put
注意,退出可视模式后书签仍会保留,因此您不必保持可视模式即可使用这些书签。
编辑:
哎呀,我误读了这个问题,以为你只想把最后一行放在开头,但你希望整个块颠倒过来。如果您使用的是 UNIX 系统,最简单的解决方案是:
:'<,'>!tac
这通过 unix“反向猫”程序 - tac,coreutils的一部分来传输线路。
根据
:help 12.4
,您可以用mt
标记第一行,移动到要反转的最后一行,然后使用命令:'t+1,.g/^/m 't
对于那些更熟悉视觉模式的人:
1. 使用
:set nu
识别要翻转的选择上方的行号。Shift-V
突出显示要翻转的选择(可视模式)。:g/^/m <Line number from step 1>
.
请注意,在视觉模式下,它会自动显示为
:'<,'>g/^/m <Line number>
当您输入 3 中的命令时。
此命令的工作原理是将所选内容一次一行移动到您指定的行号中。当第二个项目被推入给定的行号时,它将第一个项目向下推到行号+1。然后第三个项目向下推第一个和第二个,依此类推,直到整个列表被推入单个行号,从而产生逆序列表。
除了 Dave Kirby 的回答并解决“如何简单地做到这一点”的要求之外,您可以在
.vimrc
文件中创建快捷方式。以下示例将 F5
键映射到此快捷键:
map <F5> :'<,'>!tail -r<CR>
或对于 OS X:
map <F5> :'<,'>!tac<CR>