2013-05-15 41 views
1

我想更換爲符號代替的東西,「 - 」既標籤在文件中的第一列:VIM:「:」怎麼只​​有一列

輸入是這樣的:

chr1:100-200 1 2 3e-4 
chr2:300-400 4 5 6e-4 

而且我所要的輸出是:

chr1 100 200 1 2 3e-4 
chr2 300 400 4 5 6e-4 

我知道如何做全球替換 「%s /:/^I/G」 來代替 「:」 到某個標籤。

但是因爲某些條目中有數字,例如3e-4等科學記數法,我不能只用「%s/-/^ I/g」來替換「 - 」到一個標籤。

有誰知道如何指定只替換第一列?

謝謝。

+0

你所需要的全球國旗,'g'? –

+0

該文件有超過1000行,我需要替換每行中的第一列,所以我認爲我需要全局標誌。 – olala

+1

退出全局標誌只會替換每一行的第一個匹配項。 – Schleis

回答

4

如何不要用G這樣

%s/-/^|/ 
+0

是的,作品!謝謝。 – olala

4

可以用「Ctrl + V」,主動「視覺BLOCK」模式,選擇列改變,按「C」,使更改,然後選擇「Esc」,它將應用於所有選定的列。

2

如果只有e的問題,你可以使用%s/\([^e]\)-/\1^I/g找到-「不e前面加上秒。

0

對於第一個列的特殊情況,您確實可以忽略g標誌。對於在任一列工作有一個大致的解決方案,建立塊可視選擇<C-v>(通常<C-q>在Windows上),然後限制替代視覺選擇與\%V原子:

:%s/\%V-/\t/