问题
I am trying to replace a character - say ;
- with a new line using replace-string
and/or replace-regexp
in Emacs.
I have tried the following commands:
M-x
replace-string
RET;
RET\n
This will replace
;
with 2 characters:\n
.M-x
replace-regex
RET;
RET\n
This results in the following error (shown in the minibuffer):
Invalid use of `\' in replacement text.
What's wrong with using replace-string
for this task? Is there any other way to do it?
Thanks.
回答1:
M-x replace-string
RET ;
RET C-q C-j.
C-q for
quoted-insert
,C-j is a newline.
Cheers!
回答2:
There are four ways I've found to put a newline into the minibuffer.
C-o
C-q C-j
C-q
12
(12 is the octal value of newline)C-x o to the main window, kill a newline with C-k, then C-x o back to the minibuffer, yank it with C-y
回答3:
Don't forget that you can always cut and paste into the minibuffer.
So you can just copy a newline character (or any string) from your buffer, then yank it when prompted for the replacement text.
回答4:
More explicitly:
To replace the semi colon character (;) with a newline, follow these exact steps.
- locate cursor at upper left of buffer containing text you want to change
- Type m-x replace-string and hit RETURN
- the mini-buffer will display something like this: Replace string (default ^ -> ):
- Type in the character you want to replace. In this case, ; and hit RETURN
- the mini-buffer will display something like this: string ; with:
- Now execute C-q C-j
- All instances of semi-colon will be replaced a newline (from the cursor location to the end of the buffer will now appear)
Bit more to it than the original explanation says.
回答5:
Switch to text-mode
M-x text-mode
Highlight block to indent
Indent
C+M \
Switch back to whatever mode..
回答6:
inline just:
C-M-S-%
(if binding keys still default) than
replace-string
^J
来源:https://stackoverflow.com/questions/613022/how-to-replace-a-character-with-a-newline-in-emacs