如何删除/替换第一个空格直到任何英文字符 - VIM

时间:2015-08-24 11:42:00

标签: vim

我有一个包含日文和英文字符的文本文件

母音  ぼいん vowel   
子音  しいん consonant   
対話型 たいわがた   interactive 
基本形, 基本型    きほんけい, きほんがた    fundamental form, basic form, basic pattern, basic model, basic type, prototype 
能動態 のうどうたい  active voice    
受動態 じゅどうたい  passive voice   

如何删除/替换第一个空格后的所有内容,直到任何英文字符?

结果:

母音,vowel    
子音,consonant    
対話型,interactive 
基本形,fundamental form, basic form, basic pattern, basic model, basic type, prototype 
能動態,active voice    
受動態,passive voice   

3 个答案:

答案 0 :(得分:4)

尝试此命令:

%s/ [^a-zA-Z]*\ze/,/

更新,添加一些解释:

此命令的两个关键点是:

  • \ze :h \ze了解详情
  • 使用正则表达式贪婪

所以基本上,该行执行问题标题中描述的事情:找到第一个SPACE,(位置X),以及SPACE之后的第一个英文字母(位置Y),将X-Y替换为{{1 }}

正则表达式中的

,是贪婪的,因此*将找到我们要替换的文本部分。

答案 1 :(得分:1)

一种方法:

:%s/\m\s[^a-zA-Z]\{-}\ze[a-zA-Z]/,/

答案 2 :(得分:0)

:%s/ .\{-}[a-zA-Z0-9]\@=/,/

(替换空格和任何非贪婪数字的字符,直到字母数字跟随逗号的位置)

(使用set magic

编辑:正如肯特所说,g标志不应该在那里。