用字符串替换vim-surround中的周围引号

时间:2014-01-09 04:55:52

标签: vim

我正在使用vim-surround,我正在尝试替换:

'this text needs to be replaced'

**this text needs to be replaced**

我已经完成了yss和cst(即。):

:cst**
:yss**

并且两者都只捕获第一个*。

如何用字符串包围文字?

HTML标签显然工作正常,我猜他们会检测到'<'的第一个实例并打开输入缓冲区,但对于其他似乎不可能的文本。

3 个答案:

答案 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.vimrepeat.vim,则可以执行以下操作:

ysi'*
.
ds'

它的作用是什么:

  1. 用星号围绕引号内的文字。
  2. 重复上一个命令。
  3. 删除环绕引号。
  4. 请注意,如果您没有repeat.vim处理插件地图等.,则此功能不起作用。