2009-02-18 61 views
5

我有一個XML文件中:如何使用VIM複製XML文件中的整個條目?

<TypeDef name="a"> 
    <ArrayType high="14" low="0"> 
    <UndefType type="node"> 
    </UndefType> 
    </ArrayType> 
</TypeDef> 

我想複製這個項目。通常我會去第一行,使用V進入行視模式,下到最後一行,然後粘貼。

如何複製整個條目而無需自己查找條目的結尾?

回答

2

除了Nathan的回答,你可能想看看matchit.vim ...如果你有一個新的安裝,你可能有它

http://www.vim.org/scripts/script.php?script_id=39

matchit擴展vim的%(尋找匹配的支架)覆蓋xml/html標籤等等。因此,對於您的解決方案,動作將從開始標記

V%y 

matchit當然對於常規導航目的非常有用。

6

我今天學到的解決方案(感謝CMS誰回答了this問題)是使用VIM的text object議案。根據下面的運動

  • y洋基:

    將光標放在要複製的條目,並輸入命令模式如下:yat

  • at選擇當前標籤。

請注意,如果遊標位於「ArrayType」標記內,那麼這將被抽出。
另外請注意,這不會導致整個行。僅從開始標記的開始大括號到結束標記的結束大括號。如果您不小心,這可能會導致對齊問題。

解決此問題的一種方法是粘貼:put而不僅僅是p,如下所示:yat:put
請注意,這不會保留縮進,因爲XML條目並未作爲整行被抽出。

另一種方式來做到這一點是:vatVy

  • v進入可視化模式。
  • at如上所述。
  • V切換到線視覺模式並選擇整條線。
  • y選擇了這個選項。
+0

令人印象深刻的方法!我試圖定義一個新的vim函數,但是文本對象似乎足夠強大。 – 2009-02-18 09:30:02

相關問題