记事本忽略换行符[重复]


36

这个问题已经在这里有了答案:

最近,我在Windows 7下的notepad.exe中打开的大多数文档都没有换行符...一切都可以一起运行。任何其他程序中的相同文档,甚至可以直接在资源管理器中预览,也可以正确显示换行符。许多.info文件,.css,.js ..都在发生这种情况,但并非全部。

我猜测这是某种字符编码的UNIX行尾或其他,但是想知道是否有我可以做的事情,或者其他人是否经历过类似的事情,以及是否可以使记事本正常工作。对于某些用途,我更喜欢Notepad ++ /其他文本编辑器。


请参阅stackoverflow.com/a/50241693/6309:记事本现在支持\ n(Windows 10,2018年第二季度)
VonC

Answers:


45

有换行符,但是不同的操作系统识别换行符的顺序不同。

记事本只能识别CR,LF(0x0d,0x0a),而其他来源可能仅使用CR或仅使用LF。

您不能使记事本的行为有所不同,因此唯一的选择是确保内容具有正确的记事本顺序。请注意,记事本是唯一具有此限制的编辑器,因此,如果您的内容在记事本中可用,它将在其他任何地方使用。

修复换行的一种简单方法是将文本复制并粘贴到Word中,然后再次返回到记事本中,换行将被“更正”为CR,LF序列。


36
啊哈!听起来有点像丢掉记事本可能要容易得多; P
Damon

1
绝对(填充)。
保罗

3
我觉得真令人困惑,这个二十岁的限制从未得到解决……
Haroldo_OK 2016年

1
用单词打开,保存,然后用记事本打开...无需复制粘贴
Gavin Palmer

2
好消息,这项技术终于到来了
mkobit

9

写字板

如果您对notepad ++和其他文本编辑器的厌恶不是所有Windows系统的标准组成部分,请使用Wordpad。它不像记事本那么简单。

写字板将正确读取并显示带有Unix行尾的文本文件。

其他

如果您都不喜欢这两个真正的文本编辑器,那么notepad ++可能是一个不错的选择。


我的带记事本++的问题的确可以快速查看/编辑,实际上是除非我特别关闭它们,否则它可以打开多个文档。只是觉得不合适。我可能只是将文本类型文件与worpad重新关联,并确保它在我的open with...菜单中。
戴蒙

2
对于多年后阅读本
文档的

2
@Damon我也曾经讨厌这种行为,但是您可以禁用它。您只需要配置Notepad ++即可不重新打开旧会话。转到设置->首选项->备份。取消选中“记住当前会话以进行下一次启动”。
培根钻头

可以说,问题不仅仅在于希望文本编辑器与Windows一起移植,还不在于希望Windows提供至少一个像样的文本编辑器。我不会将MS Word或WordPad都视为“文本编辑器”,因为这些工具的目的是生成报告,而不是编辑文本。文本不一定随页面一起提供或必须适合页面。仍然在2018年和Windows 10中,我还没有发现任何这些。
patrik '18 -10-25

5

您可以编写一个简单的批处理脚本:

@ECHO OFF
TYPE %1 | FIND /V "" >%1.1
MOVE %1.1 %1 > NUL 2>&1
START "NOTEPAD" C:\WINDOWS\SYSTEM32\NOTEPAD.EXE %1
EXIT /B

将此保存为notepad.bat您喜欢的任何目录。然后,不要使用记事本打开您的.info/ .css/ .js文件,而是使用此批处理脚本打开它们。它将所有Unix行尾自动转换为DOS,然后使用记事本打开文件。

缺点:

  • 每次打开程序时,它将在文件末尾添加一个换行符。(由@mpag修复
  • 打开命令提示符窗口(使用START第4行修复)
  • 将文件的创建日期更改为当前日期


另一个建议。替换该startSTART "NOTEPAD" "%SystemRoot%\System32\NOTEPAD.EXE" %1以概括那些以D作为其根驱动器或WinNT作为其Windows目录的疯狂文件。
mpag

@mpag当然,除了我不需要将其编辑为我的答案。任何人都不知道他们的根目录都不会C:得到我的支持。C:自DOS在1981
MD XF

1
保留时间戳:mkdir %1.dir TYPE %1 | FIND /V "" >%1.dir\%1 robocopy . %1.dir %1 /copy:t >NUL 2>&1 move %1.dir\%1 . > NUL 2>&1 rmdir %1.dir
mpag

或者,您可以只使用预先存在的实用程序。
mbomb007 '18

4

正如OP中特别提到的Notepad ++一样,它(至少现在)具有以下需要的设置:

编辑-> EOL转换-> Windows格式。


在Notepad ++ 7.5.9版本中,EOL转换下的选项名称为“ Windows(CR LF)”。
安德烈·法里亚

3

您需要更改文件中使用的换行编码的类型。

在Linux中,有一个名为“ unix2dos”的程序可以为您完成此任务。我不确定Windows是否附带了这样的程序,但是这里似乎有类似的程序:http : //www.thefreecountry.com/tofrodos/

Wikipedia中提供了有关此过程的更多信息:http : //en.wikipedia.org/wiki/Unix2dos ,您可以在其中获取可以进行更改的不同命令行程序的示例。


如果已安装Sublime,则可以选择View->Line endings -> Windows然后保存文件以覆盖它。在这种情况下,unix行尾将变成Windows格式。如果您在记事本中打开此保存的文件,它将正确显示行尾。
Junior M

1

您可以做的另一件事:在写字板中打开文件,然后将其保存。它将纠正行尾。这是最快的方法。


1

您是正确的,这是Unix行尾的问题。有几种不同的行尾,但是最常见的是三种变体:

  • “ U + 000A LINE FEED”(LF):Unix,Linux,macOS等
  • “ U + 000D回车”(CR):经典macOS等
  • “ U + 000D回车”,后跟“ U + 000A行进纸”(CRLF):Windows和其他非Unix / IBM操作系统

较旧的Notepad版本仅识别CRLF,但较新的版本支持CRLF,CR和LF

在旧版本的记事本中没有更改此行为的设置,但是您可以在新版本中恢复到旧的行为。大多数其他主流程序在这三行结尾都使用了相当长的一段时间,因此,如果您的内容在旧版本的记事本中可用,则在其他任何地方都应该可以正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.