首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在vim列表中添加引号?

如何在vim列表中添加引号?
EN

Stack Overflow用户
提问于 2018-06-01 14:49:26
回答 3查看 666关注 0票数 2

我有以下清单:

代码语言:javascript
复制
[torunn,sentry,moonstone,avispa,phil coulson]

是否可以使用Vim将其更改为此?

代码语言:javascript
复制
["torunn","sentry","moonstone","avispa","phil coulson"]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-01 16:52:32

替代Ex命令是一个很好的工具来操作CSV线

我经常使用替换的Ex命令操作CSV。

在这种情况下,我只是通过一个字符范围来匹配集合中的值:

[ a-zA-Z]

->类似于\w,但是您的集合没有_0-9,我们需要空间。

我使用转义括号将其放在一个字符组中。

另外,由于我们接下来可以有一个逗号或结束括号,所以我创建了另一个字符组,并允许使用交替运算符的任意一个字符:

\(,\|\]\)

在这里检查我们的模式匹配:

然后在替换字符串中引用这些字符组(并包括引号)。

将所有这些都放在一起,下面是替换命令:

代码语言:javascript
复制
:s/\([ a-zA-Z]\+\)\(,\|\]\)/"\1"\2/g

在此之前:

之后:

小于工程解决方案

正如@bimlas所指出的,一个较少设计的解决方案如下:

:s/[^,]\+/"\0"/g

\0只是引用整个匹配的模式(参见:help \0)。

票数 1
EN

Stack Overflow用户

发布于 2018-06-01 15:07:53

环绕声和宏的帮助下,很容易:

我假设您的光标位于第一个字母上(在本例中为“t”):qqys/\v,|]<cr>"nlq99@q

让我们一步一步地把它分解:

代码语言:javascript
复制
qqys/\v,|]<cr>"nlq99@q
qq               q       # record a macro in the q register
  ys                     # surround something with something
    /\v,|]<cr>           # search for comma or closing bracket
              "          # surround until there with double-quotes
               n         # jump to the next match
                l        # go one to the right
                  99@q   # run the macro 99 times (will stop at first failure)

搜索查询\v,|]只是打开v or魔术模式,然后匹配逗号或(|)结束括号。我们不需要逃离托架,因为我们没有打开一个。

票数 2
EN

Stack Overflow用户

发布于 2018-06-01 18:17:21

您可以使用替换:

代码语言:javascript
复制
s/\v(\w|\s)+/"&"/g

这将匹配单词\w或空格\s字符的一次多次(\w)事件。替换字符串"&"是由引号包围的匹配模式&&字符用:help s/\&描述

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50646052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档