我正在使用vim-surround,我正在尝试替换:
'this text needs to be replaced'
与
**this text needs to be replaced**
我已经完成了yss和cst(即。):
:cst**
:yss**
并且两者都只捕获第一个*。
如何用字符串包围文字?
HTML标签显然工作正常,我猜他们会检测到'<'的第一个实例并打开输入缓冲区,但对于其他似乎不可能的文本。
答案 0 :(得分:4)
您可以在VIM中自定义行为,例如
let g:surround_42 = "**\r**"
或基于txt
是文件类型的文件
autocmd FileType txt let b:surround_42 = "**\r**"
其中42是*
的ASCII值。然后像往常一样使用单个*
更改包围的文本对象,它将替换为**
。
答案 1 :(得分:1)
来自sorround
帮助文件:
A replacement argument is a single character, and is required by |cs|, |ys|,
and |vS|. Undefined replacement characters (with the exception of alphabetic
characters) default to placing themselves at the beginning and end of the
destination, which can be useful for characters like / and |.
所以实际上你只能在替换中使用一个字符。无论如何surround
可以自定义,你可以采用另一个答案中提出的解决方案。
但在这种情况下,为什么不使用一些简单的vim
替换?
:s/'/**/g
然后,您可以使用@:
答案 2 :(得分:0)
如果您同时拥有surround.vim和repeat.vim,则可以执行以下操作:
ysi'*
.
ds'
它的作用是什么:
请注意,如果您没有repeat.vim
处理插件地图等.
,则此功能不起作用。