2015-11-06 34 views
0

我想在Vim中編寫命令,它可以刪除第三行中的第9和第11個符號。我做了這個3s/.{9,11}//但它沒有工作。如果您的建議能夠做到這一點,我們將不勝感激。 這裏是一個例子。我有三條線海大海在vim中替換第n個符號的命令

下面

3米以上

3米需要一些幫助,在vim

所以我想刪除第三行第9個象徵符號,在單詞「some」中是「e」字母,在單詞「help」中是第11個字母是字母「h」。

+1

對於VIM,許多正則表達式鄰perators需要反斜槓轉義。而%c是匹配列op。 '3s/\%9c。''將會替換第9列中的任何字符。 –

+0

您也可以連接替換。在這種情況下,位置11會在第一次變化後下降到10,所以':3s/\%9c .// | s/\%10c。'' –

+0

這是一個很酷的解決方案!!我該怎麼做這個命令兩次?我的意思是我想用一個命令替換第9列和第11列的任何字符。 – fuser

回答

2

移動的註釋答案

對於Vim的,許多正則表達式特價要求反斜槓。 %c是列匹配操作。因此,

:3s/\%9c.// 

將在位置9處的「任何字符」替換爲無。您也可以連接替換,但是每個表達式之間的內容會有所不同。在這種情況下,刪除第9欄後,11(在幫助 'H')實際上是在只對第三線位置10

:3s/\%9c.//|s/\%10c.// 
4

:3norm! 9|x10|x 

:norm! 3G9|x10|x 

取適量塗抹於整個緩衝區:

:%norm! 9|x10|x 
+0

我得到了答案,但謝謝你,肯特。現在,老了,參考了一個很久以前的電視節目,以及我經常使用的節目。歡呼聲,規範! –