在 Emacs 或 Vim 中阻止编辑*实时*

l0b*_*0b0 9 vim editors emacs

jEdit 支持块编辑,但 Emacs 和 Vim 似乎在同一主题上存在一些严重的可用性问题。如果有人可以在这里填写未知数,那么使用任一编辑器都会更容易接受:

  • 实际矩形选择屏幕上的选择是一个矩形,而不是一个线性选择,然后用于计算 Emacs 似乎仅限于的区域。
    • jEdit:按住Ctrl并选择。
    • Vim:单击Ctrl-v并选择。
    • Emacs:未知;看起来需要一个 400 多行的插件
  • 实时矩形编辑:在选择块后进行编辑时,查看所有行上的结果。
    • jEdit:只要开始输入,你就会看到最终的结果。
    • Vim:单击Shift-i并键入。将仅在第一行显示最终结果,直到您按下Esc退出插入模式。未知是否有某种方法可以立即查看所有行的结果。
    • Emacs:未知;看起来唯一的方法是C-x r t在按下后设置要填充的文本Ret
  • 在文本外的位置开始和结束选择:例如,我想删除每行的前 N ​​个字符,但第一行和最后一行包含少于 N 个字符。
  • 内联粘贴块:粘贴复制的块,就像粘贴多行一样,例如,将已经存在的文本向下推,不正确。
    • jEdit:默认。要将块粘贴为块,您需要先进行另一个块选择。
    • 维姆:OEscVp
    • Emacs:未知

可以在cua-mode插件中找到通用的 Emacs 块选择功能。

Jan*_*der 7

我可以回答 Vim,但不能回答 Emacs。

在文本外的位置开始和结束选择:

:set virtualedit=block将启用您想要的行为。如果您愿意,您可以删除初始冒号并将其添加到您的 .vimrc 中。有关更多信息,请:help 'virtualedit'从 Vim 中获取。

粘贴块内联:

如果你只是p在命令模式下点击,Vim 将插入块,将字符推到每行的右侧。如果您选择另一个块并点击p,Vim 将用粘贴的块替换该块。

您可以使用命令模式键序列“逐行”粘贴块OEscVp。这将在当前行 ( O Esc)上方插入一行,按行选择 ( V),然后粘贴在其上 ( p)。您可以将其缩短为(例如)yp使用诸如:nmap yp O<Esc>Vp-- 字面意义的映射;使用五个按键<Esc>而不是按 Escape 键。


Tom*_*Tom 5

例如,我想删除每行的前 N ​​个字符,但第一行和最后一行包含少于 N 个字符。

Emacs:从第一行开始选择并简单地将缺少的字符数(例如空格)添加到最后一行,然后使用 kill-rectangle

或者,查看artist-modepicture-mode允许您在窗口中自由移动而不管行长如何。

粘贴块内联

Emacs:首先通过kill-rectangle 或将其保存到寄存器来保存块,然后转到插入点,使用delete-rectangle 然后插入保存的矩形。

看起来需要一个 400 多行的插件

在 Emacs 的情况下,为什么会出现问题?可以编译插件,而 emacs 的理念是您不要将所有内容都放在核心中,而是使用插件来扩展编辑器。