Vim 相当于 Emacs 的开放式矩形

标签 vim

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

Before
After

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

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

这实际上缩进了整行,而不是打开这个选定的区域。我试过更换:
:'<,'>s/\v(.*)/   \1/

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

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

最佳答案

怎么样:

yPgvr<Space>

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

关于Vim 相当于 Emacs 的开放式矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13097548/

相关文章:

c# - 是否有任何带有 C# 代码完成插件的 emacs 或 vim 编辑器?

regex - 使用 Vim 将 Regex Search 的结果保存到文件中

vim - 如何让 Vim 自动放置结束大括号?

Vim 查找并替换时间 hh :mm

vim - 使用 listchars 在 Vim 中显示前导空格

vim - 更改到该目录时,如何自动从目录加载标签文件?

vim - 如何将当前的视觉选择短语插入命令行?

vim - 继续上次的 VIM 语法高亮直到出现新的关键字?

vim - 禁用 vim 中特定的 autocmd 项目

vim - Vim:语法文件未自动加载