2014-10-17 34 views
0

我有一些文字像這樣從表格文本做一個清單:如何使用VIM

UUU F  CUU L  AUU I  GUU V 
UUC F  CUC L  AUC I  GUC V 
UUA L  CUA L  AUA I  GUA V 
UUG L  CUG L  AUG M  GUG V 

我想使它看起來像這樣:

'UUU': 'F', 
'CUU': 'L', 
'AUU': 'I', 
'GUU': 'V', 
'UUC': 'F', 
'CUC': 'L', 
'AUC': 'I', 
'GUC': 'V', 
'UUA': 'L', 
'CUA': 'L', 
'AUA': 'I', 
'GUA': 'V', 
'UUG': 'L', 
'CUG': 'L', 
'AUG': 'M', 
'GUG': 'V', 

什麼是最好的方式使用VIM來做到這一點?

+0

你有什麼試過?我也不知道你是如何從開始到結束的文本。 – FDinoff 2014-10-17 03:43:08

+0

我是Vim的新手。我實際上是在gedit中手動完成的,但它肯定是一個更好的方法。 – GuidoLP 2014-10-17 04:02:45

+0

有更好的方法,但輸入文本與輸出文本不匹配。例如,輸入中有16組,但輸出中只有8組。輸出的第一行是UUC,輸入是UUU。 – FDinoff 2014-10-17 04:13:15

回答

1

在vim中有很多方法可以做到這一點。一種方法是使用替代。

:%s/\(\w\w\w\) \(\w\)\_s*/'\1': '\2',\r/g 

這看起來對三個字母后面加一個空格,然後另一封信,並把第一個三個字母的第一個捕獲組(\1)和單字母到第二擷取組(\2)英寸我們也消耗所有尾隨空格(包括\_s*的換行符)。

然後將其替換爲'\1': '\2',\r,其中\r是換行符。

+0

它工作!我將更多地瞭解關於常規表達式和Vim。謝謝! – GuidoLP 2014-10-17 04:34:18

1

如果將它分解爲塊,轉換就不那麼令人生畏(並且更容易排除故障)。

:%s/ \{2,}/\r/g

UUU F 
CUU L 
AUU I 

然後你周圍的琴絃用單引號:

:%s/\w\+/'&'/g

'UUU' 'F' 
'CUU' 'L' 
'AUU' 'I' 
首先,你用一個換行符替換多個空格合併列到一個單獨的列

添加逗號爲止:

:%s/$/,

'UUU' 'F', 
'CUU' 'L', 
'AUU' 'I', 

添加冒號:

%s/' /': /

'UUU': 'F', 
'CUU': 'L', 
'AUU': 'I', 

...和你設置。