Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs开放矩形的Vim等价物_Vim - Fatal编程技术网

Emacs开放矩形的Vim等价物

Emacs开放矩形的Vim等价物,vim,Vim,Emacs有一个名为open rectangle的函数,它允许您选择一个矩形区域,即Vim的视觉块模式,然后点击组合键以用空格填充该矩形,将任何现有内容推到右侧: 这在处理垂直对齐的文本列时非常有用。我觉得我也应该能够在Vim中使用VisualBlock+a search&replace轻松完成这项工作。但我似乎不明白为什么我的搜索和替换在尝试时没有绑定到我的矩形 :'<,'>s/\^/ / 这实际上使整行缩进,而不是打开此选定区域。我已尝试替换: :'<,'>

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

这在处理垂直对齐的文本列时非常有用。我觉得我也应该能够在Vim中使用VisualBlock+a search&replace轻松完成这项工作。但我似乎不明白为什么我的搜索和替换在尝试时没有绑定到我的矩形

:'<,'>s/\^/    /
这实际上使整行缩进,而不是打开此选定区域。我已尝试替换:

:'<,'>s/\v(.*)/   \1/
但这也有同样的效果。我如何才能让我的图案理解我只想用空格+选定区域替换选定块中的每一行?简单的替换方法,比如仅仅更改字母就可以了,但是使用^or.*并不能达到我预期的效果

我知道可以按I键并在下拉菜单中插入一些空格,使其返回到正常模式,但当您在多行上进行大量缩进时,这更难判断。

如何:

yPgvr<Space>
这将拖动块并粘贴以复制它,然后重新选择原始块并用空格替换它。

另一种方法:


视觉块仅选择一列

点击nI,n是您想要的空白列数

作为Romaill答案的一个变体,我有以下内容:

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

它允许通过预先指定的计数一次插入n个空格,并通过重复应用映射迭代添加列。

@hammar这似乎做得不对。它当然会在选定的区域填充空格,但会使文本变得混乱。啊,当然。事实上,我在回来之前就知道了。你能把这个作为回答吗很好用!我假设你正在处理一行中的事件,否则会更有效。发生在中间的行,是的。我改变了图像,使之更加明显,因为它不清楚左边是什么;效率更高:用y.@ChrisMorgan替换dP,如果您决定撤销,这肯定更有意义,并且可以减少混乱的撤销序列。我在我的vimrc中将此绑定到。这一直是我在Emacs中错过的事情之一,现在我又回来了。非常感谢。这适用于任意数量的列。在块选择模式下,我在选择之前的每一行中插入文本,就像在选择之后的每一行中追加文本一样。这是一个更一般的解决方案。我喜欢。但是你知道它是在哪里记录的吗?我在上面找不到任何东西。遗憾的是,visual block模式的文档记录相当差。visual block仅选择一列。好吧,你可以选择更多,如果你想。。。然后,nI也可以替换为I,后面是n个空间,这可能更容易在视觉上感知。[呸,我讨厌用于评论的降价实现!它甚至比用于格式化问题和答案的降价实现更糟糕!]这是我过去的做法,但你必须思考,因为它不够直观。但它确实有效。我想如果你要数到5个以上的空间,那就不切实际了。基于视觉选择打开区域的关键点映射更容易查看我的图片,以查看对齐方式的清晰程度。@d11wtq:如果这样做,我更可能使用I。。。比尼;这样你就可以看到你在第一行插入了什么。