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