我已经使用 ViM、TextMate 和 GNU Emacs 多年了。
例如,这是我想编辑的文本
foo
foo
foo
这是我想要的文本结果
bar foo
bar foo
bar foo
当我使用 Vim 时,我可以在第一行第一列按“Ctrl v”,然后按“2 j”,然后按“i”,然后输入“bar”,完成。
当我在 Textmate 上时,我可以同时按下“Apple Command Option”并向下选择(用鼠标),然后输入“bar”,完成。
但是当我使用 GNU Emacs 23.1 时,我不知道该怎么做。:((
我搜索了 EmacsWiki 并在 Google 上搜索,但没有找到解决方案。如果您知道我的解决方案,请指导我。我将不胜感激。
答案1
我想到两个选项。第一个是矩形(如另一个答案中所述)。其明确方向如下:
- 转到第一行,第一列
- C-SPC
- 转到最后一行(第一列)
- C-x r t bar SPC RET
另一个选项提供了非常好的矩形/列编辑命令,它是CUA 模式. 这是一个博客文章(披露:我的博客)描述了如何使用它。要了解 CUA 模式的强大功能,绝对值得一看这段三分钟的视频。
我将 CUA 模式与以下内容集成(因为我不喜欢瞬态标记模式):
(setq cua-enable-cua-keys nil)
(setq cua-highlight-region-shift-only t) ;; no transient mark mode
(setq cua-toggle-set-mark nil) ;; original set-mark behavior, i.e. no transient-mark-mode
(cua-mode)
答案2
在 Emacs-24.4 中,对矩形的基本支持有了一些改进,因此,您不必使用C-SPC
后跟,而是可以执行以下操作:C-x r t
C-x SPC
down down
C-t bar RET
与该方法相比,它的一个优点C-SPC
是,您将获得有关所选矩形的视觉反馈。当然该cua-mode
方法同样有效(并且工作原理类似)。
答案3
在 emacs 中,这类列被称为“矩形”。因此这是相关文档页面。
所有这些命令都要求区域包含您正在操作的矩形。因此,您需要在矩形的左上角字符上设置标记,并将区域扩展到矩形的右下角字符。您需要的命令是,M-x string-insert-rectangle
然后提示您输入要插入的字符串。
答案4
您可以使用 replace-regexp 来实现这一点:
- 将标记设置为最后一行 --> C SPC 并转到最后一行
- 在迷你缓冲区中输入 Mx replace-regexp RET (我有一个针对这个的键绑定)
- 给予 ^ RET
- 输入栏并按 RET
这会将 bar 添加到行首。