You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vim中使用split()函数以"."作为分隔符?

解决Vim脚本中split()用"."分隔返回空数组的问题

哦,这个坑我踩过!问题出在Vim的split()函数第二个参数默认是正则表达式模式,而.在正则语法里是匹配任意单个字符的通配符——你直接用"."当分隔符,相当于把输入字符串里的每一个字符都当成分隔符,拆分后自然就只剩下空数组了。

正确的解决方法

要让.被当成普通的点号处理,你需要对它进行正则转义:

  • 如果用单引号包裹字符串,直接写'\.'即可(单引号在Vim脚本里是原义字符串,不需要额外转义反斜杠)
  • 如果用双引号包裹,需要把反斜杠也转义,写成"\\."

举个实际的脚本例子:

" 用单引号的写法(推荐,更简洁)
let input_str = 'expr.expr'
let result = split(input_str, '\.')
echo result  " 输出: ['expr', 'expr']

" 用双引号的写法
let input_str = "expr.expr"
let result = split(input_str, "\\.")
echo result  " 同样输出: ['expr', 'expr']

为什么其他字符(比如",")能正常工作?

因为,这类字符在正则表达式里不属于特殊元字符,所以直接作为分隔符时,Vim会把它当成普通字符处理,自然就能正确拆分字符串啦。

内容的提问来源于stack exchange,提问作者Renji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:38:58