2012-02-28 149 views
10

我使用了令人敬畏的https://github.com/tpope/vim-surround插件用圆括号括住单词,例如我经常使用:viws<space><space>用空格包围单词。在vim中删除周围的空白

我所缺少的是与此相反的,即删除单词周围的空格。

对我来说,最常见的用途是函数参数,如 foo(bar)vs foo(bar),具体取决于代码风格。

有没有人知道一个很好的方法来做到这一点?

+0

是否'DS '工作? README提供了'ds''作为一个机制来删除一个例子中的分隔符。 – sarnold 2012-02-28 10:53:01

+0

它不幸。虽然好的观察。 – 2012-02-28 11:05:11

+1

我发现有趣的是,您发现'viws '命令是比所有替代方案更简单的解决方案,包括使用箭头键和退格键! – puk 2012-02-28 11:36:51

回答

11

注意:此解决方案需要问题中引用的环绕声插件。

为了您的具体情况,你可以做到以下几点:

cs() 

这改变foo(bar)foo(bar),但是,它是不是你的问题的通用解决方案。

+1

种优雅..怪异但优雅:) – 2012-02-28 11:56:04

+0

这是应该做什么?它对我没有任何帮助 – puk 2012-02-28 12:14:41

+1

如果您没有OP中提到的环绕声插件,那么它不会做预期的事情。对于环绕声,'csXY'表示“用周围字符Y改变周围字符X”,'('被定义为“带有填充空间的周围圆括号”,而'''被定义为“没有填充的圆括号空间”。 – 2012-02-28 12:23:52

3

也许只是在正常模式下为BXElx

+0

或'BXf x' – puk 2012-02-28 11:25:40

4

我经常高效地拖延搜索vim插件,当我可以为此定义映射时。

nnoremap <leader>dd F<space>xf<space>x 

EDIT更多信息

  • <leader>用于用户定义的映射公共密钥(,是一个很好的)

  • dd组合使用(任何其他助记符一个就足够了)

  • F<space>x搜索倒着一空,然后将其删除

  • f<space>x正向搜索空间,然后将其删除

+0

哈哈......是啊...... :) – 2012-02-28 11:57:47

1

其实,对我来说完美的解决方案是由@puk提供的映射,但使用钥匙@sarnold在第一个地方(如果它实现了这一点,可以期望从环绕插件期望的)。

这就是:

nnoremap ds<space> F<space>xf<space>x