2013-04-08 42 views
2

我經常發現自己左對齊其他文本中的文本。
我知道有插件來對齊列,但在許多其他文本中,它不是最簡單的方法。對齊:如何修剪從塊選擇到文本開始的空格?

這是我的文字:

>...this is text    X  more text 
>...this is more text   X   more text 
>...text text text    X    more text 
>...this is text    X  more text 
>...this is more text   X  more text 

我想要做的就是選擇(在上面的例子中X)一列的塊,並刪除我的塊和塊之後的文本開始之間的所有空間。

這樣做的最好方法是什麼?

回答

3

直觀地選擇對齊文本,然後使用這個ex命令:由您選擇的塊列數'<,'>s/\%Xv\s*// (代替X。 )

  • '<,'>限定的範圍內的替代命令,

  • \%Xv是零寬度正則表達式模式來定位特定的列,檢查:help pattern

+1

+1很棒。對我來說一個新的竅門和對OP的回答。 – 2013-04-08 09:51:09

+0

是一個很好的解決方案!我試圖把它放在地圖上,但沒有成功:'map :let r = col(「。」) gv:exe「s/\\%」。r。「v \\ s * //」'先選擇塊('X'),然後爲了捕獲列,再次gv重新選擇塊,然後執行你的命令。這裏有什麼問題? :( – Reman 2013-04-08 10:02:07

+1

試試這個:'noremap :let r = col(「。」):exe「'<,'> s/\\%」。r。「v \\ s * //」'問題是,在可視模式下,ex命令行會自動添加''<,'>',所以vim看到的實際上是''<,'> exe''<,'> s \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'一個錯誤,我建議在映射時總是比較喜歡noremap,除非你想故意使用遞歸行爲,我換了':'和';',所以這對我來說是必須的。 ':map' :) – ipirlo 2013-04-08 11:03:30

4

不是查找和替換的解決方案,但如何約

  • 將光標置於開始位置
  • @=d 瓦特j

擊穿

  • d 瓦特:d(elete)W(ORD)(刪除所有的空白,直到下一個wordt的開頭)
  • j:並轉到下一行
  • @:99次
+1

只是爲了更清楚,' dw'在空白處,將刪除所有的空格,直到下一個單詞的開始。 – 2013-04-08 08:00:32

+0

@XavierT。 - Thx,好多了。我已將您的評論添加到答案中。 – 2013-04-08 08:06:47