vim插件surround介绍

在我写程序的时候,经常会遇到一些比较烦的修改情况,比如一个程序块

{
   xxxxx
   xxxxx
}

现在想删除{},怎么办?我是直接删除{然后numG跳到}再删除,但如果代码块比较长,就很不方便,有时候还要加上f}。

再比如,你有一个字符串“<div>foo<div>”,你想把他变成“foo”,怎么变?

Bdf>wdf>

还有很多很多例子,总的来说就是像这种环绕的字符,删除或者修改是非常不方便的。

昨天看到Peteris Krumins的一篇文章,推荐了surround这个插件,试用了一下,觉得非常棒,在这里就推荐一下。简单来说,这玩意就是在你指定某个字符的情况下去删除这一组surrounding字符,举个例子,还是上面这个代码块

{
   xxxxx
   xxxxx
}

现在你只需要把光标移到”{:上,用

ds{

那么下面的}也自然就被删除了。再比如你想删除“<div>foo</div>”的HTML标签,只需要把光标移到前面,用

dst

一切就搞定了。其中t表示html tag。

更爽的是,他有surrounding的替换功能。比如说,我们有字符串”Hello world!”,现在想换成是’Hello world!’,这种情况在python程序员风格不统一的情况下比较常见,那么你只需要

Bcs”‘

就可以了。更多的例子比如“<div>foo</div>”,想变成“<p>foo</p>”,用

cst

就可以了。

这个插件还有更强大的ys命令配合。最简单的例子,“Hello world!”,光标在world上,那么用

ysiw)

就可以将其变为“ Hello (world)!”,其中iw表示对当前word进行插入或者surrounding操作。

如果是想把“foo”变成“foo”,那命令就是

ysiwt

另一个实用的功能就是整行插入,比如你有一行内容

This is a comment

现在你想把它变为

“This is a comment”

命令就是

yss”

比较遗憾的是,对于c程序员来说,经常会有一大堆comment,然后用/* */包含,但貌似这个插件目前还不支持多重字符的输入,我希望的功能是,比如用

ySS/*

效果能变成

/*
This is a comment
*/

但试了几种方式都没有成功,也许只是我没看到吧

这个插件的其他常用功能请:help surround查看

posted @ 2012-04-24 09:47  赵小磊  阅读(1561)  评论(0)    收藏  举报
回到头部