在VIM中,如何在保存文件时用空格包装所有英文单词?

在VIM中,如何在保存文件时用空格包装所有英文单词?,vim,Vim,vim中有这样一些词: 你好hello 你好hello你好 hello你好 你好hi-hello你好 hi_hello你好 你好 hello 你好 hello 你好 hello 你好 你好 hi-hello 你好 hi_hello 你好 我想在用一个空格保存文件时自动将英文单词与中文单词分开。最终格式如下: 你好hello 你好hello你好 hello你好 你好hi-hello你好 hi_hello你好 你好 hello 你好 hello 你好 hello 你好 你好 hi-hell

vim中有这样一些词:

你好hello
你好hello你好
hello你好
你好hi-hello你好
hi_hello你好
你好 hello 
你好 hello 你好
hello 你好
你好 hi-hello 你好
hi_hello 你好
我想在用一个空格保存文件时自动将英文单词与中文单词分开。最终格式如下:

你好hello
你好hello你好
hello你好
你好hi-hello你好
hi_hello你好
你好 hello 
你好 hello 你好
hello 你好
你好 hi-hello 你好
hi_hello 你好
我尝试使用此命令但未成功:
:%s/\(\w\+[\u-]*\ w*\)/\1/g

使用此命令,有两件事无法完成:

  • 以英语单词开头的行的开头不应该有空格

  • 重复命令不应重复空格

  • 有什么办法吗?

    这对我很有用:

    :%s/[^\x00-\xff]\zs\ze\w\|\w\zs\ze[^\x00-\xff]/ /g
    
    解释
    • [^\x00-\xff]
      匹配任何汉字
    • \zs
      标记实际匹配的边界
    • \ze
      标记实际匹配的结束
    • \w
      是任何单词字符
    您将注意到
    \zs
    \ze
    彼此相邻,这实际上意味着实际匹配是零,更准确地说,是拉丁字符和汉字之间的零


    然后,只需将这个“无”替换为一个空格

    我试着用
    配置去文件标签显示方式:不填充标签但标签显示为4.个空格的长度,它不能正常工作,结果是
    配置 去文件 标签显示方式:不填充 标签但标签显示为 4.个空格的长度
    但选项卡
    4个是不正确的好捕获,这是我没有想到的!我刚刚纠正了我的解决方案,效果很好,非常感谢!你能解释一下它是怎么工作的吗?