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:没问题,块选择可以从文本外部开始。
- 维姆:
:set virtualedit=block
。 - Emacs:或许有可能和
artist-mode
和/或picture-mode
。
- 内嵌粘贴块:粘贴复制的块,就像粘贴多行一样,例如,推送已经存在的文本向下, 不对。
- jEdit:默认值。要将块粘贴为块,您需要先进行另一个块选择。
- 维姆:OEscVp。
- Emacs:未知。
一般 Emacs 块选择功能可以在cua-mode
插入。
答案1
我可以回答 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 键。
答案2
例如,我想删除每行的前 N 个字符,但第一行和最后一行包含的字符少于 N 个。
Emacs:从第一行开始选择,只需将缺少的字符数(例如空格)添加到最后一行,然后使用kill-rectangle
或者,请参阅artist-mode
或 ,picture-mode
它允许您在窗口中自由移动,无论行长如何。
内嵌粘贴块
Emacs:首先通过kill-rectangle或将其保存到寄存器来保存块,然后转到插入点,使用delete-rectangle,然后插入保存的矩形。
看起来需要 400 多行插件
如果是 Emacs,为什么会出现问题?可以编译插件,emacs 的理念是不要将所有内容放入核心,而是使用插件来扩展编辑器。
答案3
答案4
在 vim 中,删除前 n 个字符的典型方法是执行类似:%s/.\{0,6\}//
.
%
将完成整个文档;您可以将其替换为选择或您关心的实际行。该s
命令用于“替换”。它将用您提供的任何内容替换正则表达式,并且除非您添加特定选项,否则每行只会匹配一次。是/
一个分隔符 - 可以是任何字符,但/
通常会使用,除非使用其他字符更有利(因此您不必/
在命令的其余部分中转义)。第一个分隔符后面的参数是一个正则表达式,将用于在您的选择中查找匹配的字符串。第二个分隔符后面的参数是匹配项将被替换的内容。
所以这个命令表示查找任意字符的 0 到 6 个实例,然后将其替换为空。