如何在vim中翻转视觉选择的线条?

时间:2011-04-06 03:53:29

标签: vim

我想进行视觉选择并将其翻转,以便选择的第一行位于底部。从:

<other_stuff>
The
wheels
go
round.
<more_stuff>

视觉选择发送然后翻转:

<other_stuff>
round.
go
wheels
The
<more_stuff>

任何想法如何简单地做到这一点。我宁愿不必安装插件就可以了。

4 个答案:

答案 0 :(得分:26)

当您进行视觉选择时,Vim会分别在块的开头和结尾自动生成书签'<'>,这样您就可以通过多种方式完成所需的操作。

在正常模式下:'>dd'<P

作为前命令::'>d | '<-1 put

注意退出可视模式后书签仍然存在,因此您无需保持可视模式即可使用这些书签。

修改

哎呀,我误解了这个问题,并认为你只想把最后一行放在开头,但是你想让整个街区逆转。如果您使用的是unix系统,那么这是最简单的解决方案:

:'<,'>!tac

这通过unix'obverse cat'程序管道。

答案 1 :(得分:4)

根据:help 12.4,您可以使用mt标记第一行,移至您要反转的最后一行,然后使用命令:'t+1,.g/^/m 't

答案 2 :(得分:3)

对于那些对可视模式更满意的人:
 1.使用:set nu确定要翻转的选项上方的行号  2.使用Shift-V突出显示要翻转的选项(视觉模式)  3. :g/^/m <Line number from step 1>

请注意,在可视模式下,它会自动显示为     当您从3输入命令时:'<,'>g/^/m <Line number>

此命令的工作原理是将选择一行一行移动到您提供的行号。当第二个项目被推入给定的行号时,它将第一个项目向下推到行号+ 1.然后第三个项目将第一个和第二个项目向下推,依此类推,直到整个列表被推入单个行号,从而导致逆序清单。

答案 3 :(得分:2)

进一步了解Dave Kirby的答案并解决“如何简单地做到这一点”的要求,您可以在.vimrc文件中创建一个快捷方式。以下示例将F5键映射到此快捷方式:

map <F5> :'<,'>!tail -r<CR>

或对于OS X:

map <F5> :'<,'>!tac<CR>