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

如何从第一个空格删除/替换到任何英文字符-VIM,vim,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   
如何删除/替换第一个空格后的所有内容,直到任何英文字符

结果:

母音,vowel    
子音,consonant    
対話型,interactive 
基本形,fundamental form, basic form, basic pattern, basic model, basic type, prototype 
能動態,active voice    
受動態,passive voice   
(替换空格和任何非贪婪的字符数,直到字母数字后跟逗号为止)

(使用
设置魔术


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

(替换空格和任何非贪婪的字符数,直到字母数字后跟逗号为止)

(使用
设置魔术


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

试试这个命令:

%s/ [^a-zA-Z]*\ze/,/
更新,添加一些解释: 此命令的两个关键点是:

  • \ze
    :h\ze
    了解详细信息
  • 正则表达式的用法
因此,基本上,行完成了问题标题中描述的事情:找到第一个空格(位置X),以及空格后的第一个英文字母(位置Y),将
X-Y
替换为

正则表达式中的
*
是贪婪的,因此
(空格)[^a-zA-Z]*
将找到我们要替换的文本部分。

尝试以下命令:

%s/ [^a-zA-Z]*\ze/,/
更新,添加一些解释: 此命令的两个关键点是:

  • \ze
    :h\ze
    了解详细信息
  • 正则表达式的用法
因此,基本上,行完成了问题标题中描述的事情:找到第一个空格(位置X),以及空格后的第一个英文字母(位置Y),将
X-Y
替换为

正则表达式中的
*
是贪婪的,因此
(空格)[^a-zA-Z]*
将找到我们要替换的文本部分。

一种方法:

:%s/\m\s[^a-zA-Z]\{-}\ze[a-zA-Z]/,/
一种方法是:

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

非常感谢你们的帮助,肯特和阿玛丹谢谢你们的帮助。我尝试了你的代码,但仍然得到一些奇怪的空格,所以我选择了佐藤胜村的答案。再次,非常感谢你们的帮助。非常感谢你们的帮助,Kent&Amadan谢谢你们的帮助。我尝试了你的代码,但仍然得到一些奇怪的空格,所以我选择了佐藤胜村的答案。再次感谢您的帮助。这更适合作为对问题的评论。如果你花时间解释这个建议的话,也许可以。@Coshman如果你想要解释,你可以要求解释。但我不同意这是一个评论。它提供了有效的解决办法。如果这应该是评论,那么接受的答案也应该是评论。我认为我的答案不值得投否决票,除非它是一个错误的答案。你的答案出现在评论队列中。“这不是一个好的答案,只是简单地说明可能解决问题的一行代码从来没有被认为是一个好的答案。”科什曼ok解释补充道。我个人认为我的cmd比公认的好。例如,不必要的
\m
\ze和\{-}
这更适合作为对问题的评论。如果你花时间解释这个建议的话,也许可以。@Coshman如果你想要解释,你可以要求解释。但我不同意这是一个评论。它提供了有效的解决办法。如果这应该是评论,那么接受的答案也应该是评论。我认为我的答案不值得投否决票,除非它是一个错误的答案。你的答案出现在评论队列中。“这不是一个好的答案,只是简单地说明可能解决问题的一行代码从来没有被认为是一个好的答案。”科什曼ok解释补充道。我个人认为我的cmd比公认的好。例如,不必要的
\m
\ze和\{-}
g
标志不应存在。
g
标志不应存在。