【问题标题】:(emacs) Inserting line break into a rectangle(emacs)在矩形中插入换行符
【发布时间】:2019-02-02 04:20:21
【问题描述】:

用字符串替换矩形内容时,我似乎无法在其上插入换行符。

我试过按“Enter”,它只是完成了字符串编辑并将其替换为矩形内容。

我还尝试了 'Ctrl + q',用于引用插入,然后输入 'Enter',但 emacs 输入了 '^M'。

我的问题:

<img id="img1" src="images/img1.jpg">
<img id="img2" src="images/img1.jpg">
<img id="img3" src="images/img1.jpg">

我想同时在所有这些行中添加一个属性,如下所示:

<img id="img1" onclick="load_another_image()" src="images/img1.jpg">
<img id="img2" onclick="load_another_image()" src="images/img1.jpg">
<img id="img3" onclick="load_another_image()" src="images/img1.jpg">

然后我想在新放置的函数之后插入一个换行符,这样行就不会变得太大:

<img id="img1" onclick="load_another_image()"
src="images/img1.jpg">
<img id="img2" onclick="load_another_image()"
src="images/img1.jpg">
<img id="img3" onclick="load_another_image()"
src="images/img1.jpg">

我也发现了这个post,但它并不能完全回答问题。

那么,如何在字符串中添加换行符来替换 emacs 中的矩形内容?

【问题讨论】:

  • 不清楚(对我来说)你在问什么。请逐步展示您尝试过的内容(使用矩形)。目前尚不清楚您在示例中插入换行符的位置 - 所需结果似乎与原始结果具有相同的行 - 没有额外的换行符。

标签: emacs


【解决方案1】:

希望我没有误解你的目标。但是,这里是:

1) 将光标移动到要插入文本的顶部:

2) 在顶部设置标记(对我来说是 CTRL+SPACE

3) 将光标移动到区域底部:

4) 现在我们需要运行命令 (M+x string-rectangle) 对我来说,它映射到键盘快捷键 CTRL+x R T

5) 然后你开始输入你的文本,你应该看到它在矩形中实时编辑。当您高兴时,您可以按 Enter 键:

希望这会有所帮助。如果你想做一个新行('\n'),那么你应该使用一个调用来查询用捕获模式替换正则表达式(如果你愿意,我可以解释更多)

【讨论】:

  • n.b.您可以键入C-q C-j 在所有位置插入换行符。
  • 感谢 phils,这正是我想要的。
【解决方案2】:

我试过按“Enter”,它只是完成了字符串编辑并将其替换为矩形内容。

我还尝试了 'Ctrl + q',用于引用插入,然后输入 'Enter',但 emacs 输入了 '^M'。

[...]

那么,如何在字符串中添加换行符来替换 emacs 中的矩形内容?

您已经非常接近解决方案了。

换行符不是^M,而是^J

也就是说,而不是键入 C-qRET (由于历史原因与 C-qC-m 相同) 你想要的:

C-qC-j

RET 做一些不同的事情时,这是在任何情况下插入换行符的方法。 (有关另一个示例,请参阅您找到并链接到的问答。)

这似乎与string-rectangle 一起可靠地工作,您也可以将它与multiple-cursors 库一起使用。

对于cua-set-rectangle-mark,我不确定——它可以在那里工作,因为几分钟前我第一次测试时它工作了;但我也看到它只在其中一个位置插入换行符,所以要么不可靠,要么我只是遗漏了一些东西。

【讨论】:

    【解决方案3】:

    Emacs 包含两个矩形实现,一个在cua-rect.el 中,一个在rect.el 中。我更喜欢cua-rect。请注意,cua-rect 独立于 cua-mode

    M-x cua-rectangle-mark-mode(我把它绑定到C-RET),注意在你开始移动之前minibuffer中有一些帮助(虽然你可能不需要它来完成这个任务),用箭头扩展你的矩形,输入一些文字。文本将插入矩形的每一行,并插入光标所在的列中。

    【讨论】:

    • n.b.您可以键入C-q C-j 在所有位置插入换行符。
    • 哦。也许。我突然无法重现这种行为,但我以前可以 - 所以这绝对是可能的,但我也错过了一些东西......
    • 是的,我没有看到问题的换行部分,似乎cua-rect 不允许这样做。
    【解决方案4】:

    我不清楚您要在示例中插入换行符的位置。

    我会说,如果你使用multiple-cursors,你可以默认用C-j插入换行符。如果您希望 Enter 插入换行符,可以在配置中使用 (define-key mc/keymap (kbd "&lt;return&gt;") nil)

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 2014-01-09
      相关资源
      最近更新 更多