将最后一个逗号更改为Vim中每行的制表符

时间:2015-07-03 12:51:36

标签: regex vim

你能帮我改变吗?

abc,abc,12345

abc,abc    12345

在vim?

3 个答案:

答案 0 :(得分:6)

很难谷歌wiki

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

:s/old/new/是语法,但vim具有用于搜索和替换的附加功能,\zsfoobar\ze让您选择foobar进行替换。

在您的示例.*中,与任何正则表达式一样,表示任意次数的任何字符,或者只是"一些尽可能长的文本",然后是,使用\zs功能选择的内容。由于它已经是模式的结束,因此您不需要使用\ze。然后用\t AKA ascii选项卡符号替换所选模式。

如果您没有选择任何内容,则将替换整个模式(包括"某些文本"部分)。没有它和其他一些正则表达式你可以做得很好,但如果你使用工具或语言,也可以使用它的功能。

答案 1 :(得分:3)

为了多样性:

:%norm $F,r<C-v><Tab>
  • 移至行尾
  • 跳到左边的第一个逗号
  • 将其替换为<Tab>

答案 2 :(得分: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