2012-02-28 202 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