replace-string
和/或replace-regexp
将一个字符(例如;
)替换为一个新行。
我尝试了以下命令:
M-x
replace-string
RET;
RET\n
这会用两个字符
\n
替换;
。M-x
replace-regex
RET;
RET\n
这会导致以下错误(在迷你缓冲区中显示):
Invalid use of `' in replacement text.
使用replace-string
有什么问题?还有其他方法吗?
M-x replace-string
RET ;
RET C-q C-j.
C-q代表quoted-insert
,
C-j表示换行符。
我发现有四种方法可以在minibuffer中加入新行。
C-o
C-q C-j
C-q 12
(12是换行符的八进制值)
C-x o 到主窗口,用 C-k 杀掉一个新行,然后回到 minibuffer,用 C-y 粘贴它
C-o
要给个赞!比起 C-q C-j
少按一次键。以前没想过用这个快捷键。 - itsjeydC-o
不会移动光标,因此如果您想在替换字符串中的换行符后插入内容,则仍然需要按右箭头键。 - Robin GreenC-o
会在主窗口插入一个新行,而按 C-q C-j
则会在迷你缓冲区中插入新行。但是在执行查询替换操作时,C-o
是可以正常工作的。 - T.C. Proctor别忘了你随时可以剪切粘贴到迷你缓冲区。
所以你可以从缓冲区中复制一个换行符(或任何字符串),然后在提示输入替换文本时粘贴它。
更明确地说:
要将分号字符(;)替换为新行,请按照以下确切步骤操作:
将光标定位于包含要更改文本的缓冲区的左上角
输入 m-x replace-string
并按下 Return
The mini-buffer 将显示类似下面的内容: Replace string (default ^ -> ):
输入要替换的字符。在这种情况下,输入 ;
并按下 Return
The mini-buffer 将显示类似下面的内容:
string ; with:
现在执行 C-q C-j
所有分号的实例都将被替换为新行(从光标位置到缓冲区末尾的内容将会改变)
比原始说明说得更详细一些。
切换到文本模式:
M-x text-mode
将块高亮以进行缩进。
缩进:Ctrl + M </kbd>
切换回任何模式...
内联:
C-M-S-%
(如果绑定键仍为默认值),然后使用replace-string
命令替换^J。
C-j
是一个字面上的0x0a
控制码,而Ret
键位于引号旁边,发送0x0d
。https://en.wikipedia.org/wiki/C0_and_C1_control_codes - Jonathan ArkellC-j
,而在vim中使用C-m
。 - user5671078