2011-04-06 55 views
11

我想做一個視覺選擇並翻轉它,以便選擇的第一行位於底部。來源:如何翻轉vim中的視覺選擇線?

<other_stuff> 
The 
wheels 
go 
round. 
<more_stuff> 

視覺選擇sentnce,然後翻轉:

<other_stuff> 
round. 
go 
wheels 
The 
<more_stuff> 

任何想法如何簡單地做到這一點。我寧願不必安裝插件就可以做到這一點。

+0

相關:[Reverse selected text @ Vim Wikia](http://vim.wikia.com/wiki/Reverse_selected_text) – Palec 2014-12-27 14:47:28

+1

複製[SU]:[如何在vim中反轉選定的行順序?](http://superuser.com/q/189947/269404) – Palec 2014-12-27 14:50:14

回答

17

當你做出一個目測可供選擇的Vim會自動書籤'<'>在最後一行分別開始和結束,所以你可以用幾種方法做你想做的事情。

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

作爲Ex命令::'>d | '<-1 put

NB書籤保持您退出可視化模式後,這樣你就不必留在可視模式下使用這些。

編輯

哎呀,我誤解了問題,還以爲你只是想最後一行在開始時說,但你要整塊逆轉。最簡單的解決方案,如果你在unix系統上:

:'<,'>!tac 

這通過unix'反向貓'程序管道線。

+5

或OS X上的'tail -r'。 – silvenon 2014-02-10 13:37:47

+0

太棒了!在某些情況下,'!'會節省很多時間! – 2016-09-27 16:08:24

3

根據:help 12.4您可以標記與mt第一線,移動到要扭轉然後使用命令:'t+1,.g/^/m 't

+0

一定要標記你最後一行*不*要移動;不是你想要移動的第一行。 – Alan 2016-03-15 16:12:07

1

對於那些更舒適的視覺模式
1.確定要使用:set nu翻轉選擇上述的行號。
2.使用Shift-V突出顯示要翻轉的選項(可視模式)。
3. :g/^/m <Line number from step 1>

注意,在可視化模式,將自動顯示爲 :'<,'>g/^/m <Line number>當你在命令從3

通過一次移動選擇一行到你給它的行號鍵入此命令的作用。當第二個項目被壓入給定的行號時,它將第一個項目推到行號+1。然後第三個項目將第一個和第二個項目向下推,直到整個列表被推入到單行號碼中,導致反向排序的列表。