如何在Emacs中去除^M符号

14

如何在Emacs中删除^M字符?

使用dos2unix文件名unix2dos文件名无效。

通常我看不到任何^M字符,但使用命令 cat -A文件名时,这就是输出结果:

请用简单明了的语言详细解释一下......

cat -A ABC.sh
#!/bin/csh -f^M$
^M$
^M$
set input = `ls -1 *.py`^M$
echo $input^M$

2
dos2unix 应该 可以将其转换。它会给你什么输出? - phils
2个回答

26

[搜索了一下是否有关于替换(而不是防止等)的重复问题,但没有找到。如果有一个重复的话,那么这个或那个应该被关闭。]

在Emacs中,打开包含^M字符的文件。转到文件开头(M-<),然后执行以下操作:

M-x replace-string RET C-q C-m RET RET

也就是说,在要替换的提示符处,使用Control + q,然后Control + m,最后按Enter。在要替换为什么内容的提示符处,只需按下Enter(不用替换为任何东西)。


谢谢。这个方法很好用,但是在 replace-stringC-q 之间必须插入一个 RET - Ytrog
这对我实际上没有起作用,命令被正确识别并替换了^M为空字符串,但是没有替换任何内容。 - Aiden Cullo
@AidenCullo:你的缓冲区实际上包含^M字符吗?C-s C-q C-m显示了什么? - Drew

8

我一直在使用这个

(defun delete-carrage-returns ()
  (interactive)
  (save-excursion
    (goto-char 0)
    (while (search-forward "\r" nil :noerror)
      (replace-match ""))))

我相信有更好的方法,但这个方法已经足够好了,所以我不再继续寻找。


这对于从剪贴板粘贴时出现的^M非常有帮助。否则,其他系统将无法正常工作。 - gsl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接