我有一個XML文件中:如何使用VIM複製XML文件中的整個條目?
<TypeDef name="a">
<ArrayType high="14" low="0">
<UndefType type="node">
</UndefType>
</ArrayType>
</TypeDef>
我想複製這個項目。通常我會去第一行,使用V
進入行視模式,下到最後一行,然後粘貼。
如何複製整個條目而無需自己查找條目的結尾?
我有一個XML文件中:如何使用VIM複製XML文件中的整個條目?
<TypeDef name="a">
<ArrayType high="14" low="0">
<UndefType type="node">
</UndefType>
</ArrayType>
</TypeDef>
我想複製這個項目。通常我會去第一行,使用V
進入行視模式,下到最後一行,然後粘貼。
如何複製整個條目而無需自己查找條目的結尾?
除了Nathan的回答,你可能想看看matchit.vim ...如果你有一個新的安裝,你可能有它
http://www.vim.org/scripts/script.php?script_id=39
matchit擴展vim的%(尋找匹配的支架)覆蓋xml/html標籤等等。因此,對於您的解決方案,動作將從開始標記
V%y
matchit當然對於常規導航目的非常有用。
我今天學到的解決方案(感謝CMS誰回答了this問題)是使用VIM的text object議案。根據下面的運動
y
洋基: 將光標放在要複製的條目,並輸入命令模式如下:yat
。
at
選擇當前標籤。請注意,如果遊標位於「ArrayType」標記內,那麼這將被抽出。
另外請注意,這不會導致整個行。僅從開始標記的開始大括號到結束標記的結束大括號。如果您不小心,這可能會導致對齊問題。
解決此問題的一種方法是粘貼:put
而不僅僅是p
,如下所示:yat:put
。
請注意,這不會保留縮進,因爲XML條目並未作爲整行被抽出。
另一種方式來做到這一點是:vatVy
:
v
進入可視化模式。at
如上所述。V
切換到線視覺模式並選擇整條線。y
選擇了這個選項。
令人印象深刻的方法!我試圖定義一個新的vim函數,但是文本對象似乎足夠強大。 – 2009-02-18 09:30:02