如何在Vim中给列表内的单词添加引号?
用Vim快速给列表元素添加双引号的方法
当然可以!Vim的正则替换功能刚好能完美解决这个问题,我给你分享几种高效的实现方式:
方法1:全局一键替换(最推荐)
直接在命令模式下输入这条替换命令:
:%s/[^,\[\]]\+/"&"/g
命令解析:
%:表示对整个文件内容进行操作(如果只是处理单行,把%换成对应行号即可)s:启动替换模式[^,\[\]]\+:匹配除了逗号、左右方括号之外的任意长度字符,不管元素是单个单词(比如torunn)还是带空格的短语(比如phil coulson)都能精准命中"&":把刚才匹配到的内容用双引号包裹起来(&代表匹配到的原文本)g:全局替换,一次性处理所有符合条件的元素
方法2:带确认的替换(适合怕误改的场景)
如果你想逐个确认每一处替换,避免误操作,就在命令里加个c选项:
:%s/[^,\[\]]\+/"&"/gc
执行后Vim会逐个询问你是否替换,按y确认、n跳过、a直接全部替换、q退出替换流程。
方法3:可视模式局部替换
如果你的列表只是文件中的一小部分,不想全局替换,可以用可视模式选中目标内容:
- 把光标移到列表的左括号
[后面,按v进入可视模式 - 拖动光标选中所有元素(到右括号
]前面为止) - 输入命令:
:'<,'>s/[^,\[\]]\+/"&"/g
这里的'<,'>代表你刚才选中的可视区域,只会替换选中范围内的内容。
效果演示
输入命令前:
[torunn,sentry,moonstone,avispa,phil coulson]
输入命令后:
["torunn","sentry","moonstone","avispa","phil coulson"]
内容的提问来源于stack exchange,提问作者Franco Sorbello
相关产品推荐
相关产品推荐

