Vim中

2015-07-03 28 views
0
改變最後一個逗號以製表符每行

你能幫我改變Vim中

abc,abc,12345 

abc,abc 12345 

在vim?

回答

6

不是很難谷歌wiki

:%s/.*\zs,/\t/:%s/.*\zs,/^I/

:s/old/new/是語法,但VIM有aditional的功能,用於搜索和特別更換,\zsfoobar\ze讓我們爲您更換選擇foobar

在你的榜樣.*,就像在任何正則表達式,意味着任意字符任意次數,或只是「一些文字,是儘可能長時間」,然後,與該\zs功能選擇。由於它已經是模式的結尾,因此不需要使用\ze。然後,您用\t替換選定的模式,並使用ascii標籤符號。

如果您沒有選擇任何內容,整個模式(包括「某些文本」部分)將被替換。如果沒有它和其他一些正則表達式,你可以做得很好,但是如果你使用的是工具或語言,那麼也可以使用它的功能。

+0

該死的是'\ z'是強大的,我還沒有聽說過。我想從現在開始我會用很多! - 插入'\ t'不會起作用,你應該插入'^ I'。 – ShellFish

+0

很酷,我想vim對\ {character}有很多特殊的含義,所以\ t可能無法工作並不奇怪。 –

+0

@ShellFish'\ t'工作得很好。 – lcd047

3

佛多樣性的緣故:

:%norm $F,r<C-v><Tab> 
  • 招行
  • 跳結束第一個逗號向左
  • <Tab>替換它。
1
:%s/,\([^,]*\)$/ \1 

說明

: ........ command 
% ........ entire file 
/........ start searching 
, ........ comma 
\(....... opening regex group 
[^,]* .... anything but comma 
\) ....... closing regex group 
$ ........ at the end of line 
/........ end search 
Ctrl-v TAB .... to insert tab 
\1 ...... back reference to regex group