Variables 删除所有出现的单词列表vim

Variables 删除所有出现的单词列表vim,variables,vim,str-replace,Variables,Vim,Str Replace,如果文档的第一行是foo,bar,baz,qux,qux,有没有办法将这些单词存储在变量中,作为列表['foo','bar','baz','qux','qux'],并使用vim删除文档中出现的所有单词 与在视觉模式下突出显示列表的命令:removeall类似: 更安全的方法是编写函数,如果需要转义某些内容,请检查“列表”的每个部分。然后进行替换(移除)。使用输入执行此操作的快捷方法是使用以下映射: nnoremap <leader>R :s/,/\|/g<cr>dd:%s

如果文档的第一行是
foo,bar,baz,qux,qux
,有没有办法将这些单词存储在变量中,作为列表
['foo','bar','baz','qux','qux']
,并使用vim删除文档中出现的所有单词

与在视觉模式下突出显示列表的命令
:removeall
类似:
更安全的方法是编写函数,如果需要转义某些内容,请检查“列表”的每个部分。然后进行替换(移除)。使用输入执行此操作的快捷方法是使用以下映射:

nnoremap <leader>R :s/,/\|/g<cr>dd:%s/\v<c-r>"<c-h>//g<cr>
nnoremap R:s/,/\\\124;/gdd:%s/\v//g
然后在正常模式下,当您转到包含删除部分且必须为CSV格式的行时,按
R
您将获得预期的输出


如果该行具有正则表达式特殊字符,例如
/
*
\
等,则替换将失败。

更安全的方法是编写函数,检查“列表”的每个部分,如果有需要转义的内容。然后执行替换(删除)。使用此映射可快速完成输入操作:

nnoremap <leader>R :s/,/\|/g<cr>dd:%s/\v<c-r>"<c-h>//g<cr>
nnoremap R:s/,/\\\124;/gdd:%s/\v//g
然后在正常模式下,当您转到包含删除部分且必须为CSV格式的行时,按
R
您将获得预期的输出


如果该行具有regex特殊字符,例如
/
*
\
等,则替换将失败。

类似于此一行的内容应该可以工作:

:for f in split(getline("."), ",") | execute "%s/" . f | endfor | 0d
请注意,最后会有很多尾随空格

编辑

上面这个版本的命令会处理那些讨厌的尾随空格(但不是示例文本第2行的空格):

结果:

hello how are you 
doing
good

类似这样的一行应该可以工作:

:for f in split(getline("."), ",") | execute "%s/" . f | endfor | 0d
请注意,最后会有很多尾随空格

编辑

上面这个版本的命令会处理那些讨厌的尾随空格(但不是示例文本第2行的空格):

结果:

hello how are you 
doing
good

在你建议的地图中,
dd
代表什么?@Jcao02 dd删除该行<代码>:h dd
哦,对不起,我试图在没有映射的命令模式下执行命令,但它没有识别出
dd
@jca002这是一个正常模式映射,在
将您推回到正常模式后。您可以将第一个
:s
dd
:s/../../../d
连接成一个,以删除该行<代码>:h dd哦,对不起,我试图在没有映射的命令模式下执行命令,但它没有识别出
dd
@jca002这是一个正常模式映射,在
将您推回到正常模式后。您可以将第一个
:s
dd
:s/../../../d