在emacs中,如何剥离CR(^ M)并留下LF(^ J)字符?

Bra*_*ran 35 emacs hex hex-editors

我正在尝试使用hexl模式从文本文件中手动删除一些特殊字符,但是看不到如何在hexl模式下删除任何内容.

我真正想要的是删除回车并保持换行符.Hexl模式是正确的方法吗?

Can*_*ick 85

无需寻找替代品.只是用.

M-x delete-trailing-whitespace
Run Code Online (Sandbox Code Playgroud)

您还可以通过设置文件编码

C-x RET f unix
Run Code Online (Sandbox Code Playgroud)


小智 30

哎呀.那个^ J ^ M需要输入为两个文字字符.使用c-q c-j, c-q c-m以及替换字符串,使用c-q c-j.

  • 是的,这应该更高。另外,您可以只替换^ M而忽略^ J。 (2认同)

小智 10

这不需要hexl模式.只需用^ J Works为我做全局搜索和替换^ J ^ M. :)然后保存文件,杀死缓冲区,并重新访问该文件,以便窗口显示新的文件模式(Unix vs DOS).

  • 为什么甚至懒得这样做?做keysersoze建议并使用dos2unix和/或unix2dos. (2认同)

Key*_*oze 9

还有一个名为unix2dos/dos2unix的命令行工具,专门用于转换行结尾.


rem*_*vee 8

假设您希望将DOS编码文件更改为UNIX编码,请使用Mx set-buffer-file-coding-system(Cx RET f)将编码系统设置为"unix"并保存文件.


Tre*_*son 5

如果要删除回车符(通常显示为^M)并保留换行符.你可以访问文件w/out任何转换:

M-x find-file-literally /path/to/file
Run Code Online (Sandbox Code Playgroud)

因为带有回车符的文件通常以DOS模式显示(隐藏回车符).模式行可能会显示(DOS)在左侧.

完成后,^M会出现,你可以像删除任何角色一样删除它们.