如何在Emacs中用换行符替换字符?

Lei*_*Lei 266 emacs replace

我正在尝试;使用replace-string和/或replace-regexp在Emacs中使用新行替换字符 - 比如说.

我尝试了以下命令:

  • M-x replace-string RET ; RET \n

    这将取代;2个字符:\n.

  • M-x replace-regex RET ; RET \n

    这会导致以下错误(显示在迷你缓冲区中):

    替换文本中使用"\"无效.

使用replace-string此任务有什么问题?还有其他办法吗?

谢谢.

Jon*_*ell 404

M-x replace-string RET ; RET C-q C-j.

  • C-q对于quoted-insert,

  • C-j 是换行符.

干杯!

  • `Cj`是一个文字`0x0a`控制代码,而`Ret`是你的引号旁边的键,发送'0x0d`.https://en.wikipedia.org/wiki/C0_and_C1_control_codes (7认同)
  • 那么为什么``Ret`不会在`Cq`之后工作而不是`Cj`? (4认同)
  • Cq实际上是`quote-insert`引用下一个字符. (2认同)
  • 我认为它实际上是"引用"而不是"引用",如"引用插入".至少就是它在22.1版本上的方式. (2认同)
  • 注意对于vim用户,在**emacs**中使用`Cj`,而在**vim**中使用`Cm`. (2认同)
  • @JonathanArkell这是一个描述*它是如何工作的,但不是*为什么*.在编辑器中,Ret产生0x0a,为什么它应该在quoted-insert中产生0x0d?这没有任何意义.(仅仅因为内部键盘代码是历史原因的0x0d?我们在各地使用关键地图,为什么不在这里完全合理?) (2认同)

小智 68

我发现有四种方法可以将新行放入迷你缓冲区.

  1. C-o

  2. C-q C-j

  3. C-q 12 (12是换行符的八进制值)

  4. C-x o到主窗口,杀了一个换行符C-k,然后C-x o回到迷你缓冲区,猛拉它C-y

  • 提及`Co`的+1!与"Cq Cj"相比,一个关键的击球次数减少了.以前没想过要用那个. (9认同)

小智 24

不要忘记,您可以随时剪切并粘贴到迷你缓冲区中.

因此,您只需从缓冲区中复制换行符(或任何字符串),然后在提示输入替换文本时将其拉出.

  • 对于我不知道键绑定的角色来说,这确实是一个好主意. (2认同)

小智 8

更明确地说:

要用换行符替换半冒号字符(;),请按照以下确切步骤操作.

  1. 将光标定位在包含要更改的文本的缓冲区的左上角
  2. 输入mx replace-string并按RETURN
  3. 迷你缓冲区将显示如下内容:替换字符串(默认为^ - >):
  4. 输入要替换的字符.在这种情况下, ; 并点击RETURN
  5. 迷你缓冲区将显示如下内容:string; 有:
  6. 现在执行Cq Cj
  7. 所有分号实例都将替换为换行符(从光标位置到缓冲区末尾将出现)

比原来的解释所说的要多得多.