Vim相当于Emacs的开放矩形

时间:2012-10-27 05:32:49

标签: vim

Emacs有一个名为open-rectangle的函数,它允许你选择一个矩形区域(即Vim的可视块模式),然后点击一个组合键用空格填充该矩形,将任何现有内容推到右边:< / p>

Before After

在使用垂直对齐的文本列时,这非常有用。我觉得我也应该能够在Vim中轻松地使用visual block + a search&amp;更换。但我似乎无法弄清楚为什么我的搜索&amp;当我尝试时,replace不会绑定到我的矩形。

:'<,'>s/\^/    /

这实际上缩进了整行,而不是打开这个选定的区域。我试过更换:

:'<,'>s/\v(.*)/   \1/

但这有同样的效果。如何让我的模式理解我只想用空格+所选区域替换所选块中的每一行?简单的替换就像更改字母一样有效,但使用^.*并不像我期望的那样工作。

我知道有能力点击“I”并将一些空格插入正常模式,但是当你在很多行中缩进时,这很难判断。

3 个答案:

答案 0 :(得分:8)

怎么样:

yPgvr<Space>

这会阻止块并粘贴它以复制它,然后重新选择原始块并用空格替换它。

答案 1 :(得分:6)

另一种方式:

  1. Visual-block只选择一列。

  2. 点击nI<Space><Esc>n为您想要的空白列数。

答案 2 :(得分:2)

作为 romainl 的答案的变体,我有这个:

vnoremap <C-Space> I<Space><Esc>gv

它允许通过前置计数同时插入 n 空格,并通过重复应用映射来迭代添加列。