6

Emacs 有一个名为 open-rectangle 的功能,它允许您选择一个矩形区域(即 Vim 的可视块模式),然后按组合键以用空格填充该矩形,将任何现有内容推到右侧:

前 后

这在处理垂直对齐的文本列时非常有用。我觉得我也应该能够在 Vim 中轻松地做到这一点,使用可视块 + 搜索和替换。但是当我尝试它时,我似乎无法弄清楚为什么我的搜索和替换没有绑定到我的矩形。

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

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

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

但这具有相同的效果。如何让我的模式理解我只想用空格+所选区域替换所选块中的每一行?简单的替换,比如只是改变字母工作,但使用^or.*不能按我期望的方式工作。

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

4

3 回答 3

8

怎么样:

yPgvr<Space>

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

于 2012-10-27T05:54:41.680 回答
6

其他方式:

  1. 视觉块只选择一列。

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

于 2012-10-27T08:36:19.360 回答
2

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

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

它允许通过前置计数一次插入n 个空格,以及通过重复应用映射来迭代添加列。

于 2012-10-27T19:48:12.213 回答