ChatGPT解决这个技术问题 Extra ChatGPT

记事本 ++ 中的 EOL 转换

出于某种原因,当我在 Windows 机器上从 unix 服务器打开文件时,它们偶尔会进行 Macintosh EOL 转换,当我再次编辑/保存它们时,它们在 unix 服务器上无法正常工作。我只使用记事本++来编辑来自这个unix服务器的文件,那么有没有办法创建一个宏,当我打开文件时自动将EOL转换为Unix格式?

您的问题可能与您使用的任何 FTP 程序有关。例如,我使用 WinSCP 远程访问 Unix 服务器,Notepad++ 被设置为我的默认编辑器,但我必须进入 WinSCP 的设置并将传输模式设置为 Binary 以保持行尾保留。因此,您可以重新配置您的 FTP/SCP/etc 程序,以不同的方式传输文件。

I
Iwan Plays

该功能已经内置在 Notepad++ 中。从“编辑”菜单中,选择“EOL 转换”->“UNIX/OSX 格式”。

screenshot of the option for even quicker finding (or different language versions)

您还可以通过“设置”->“首选项”->“新建文档/默认目录”在 notepad++ 中设置默认 EOL,然后在“格式”框下选择“Unix/OSX”。


我知道编辑菜单中的转换,您提到的设置仅适用于新文档。我想为我打开的每个文件(或我保存的每个文件)自动进行转换
问题是当我打开一个现有的 Unix 文件时,“EOL Conversion”--> UNIX/OSX 格式是灰色的。 Notepad++ 使用 UNIX 文件令人沮丧,所以我使用 Notetab Lite,它允许我将所有文件保存为 UNIX,而不仅仅是新文件。
@OffTheGold UNIX EOL 选项显示为灰色,因为它是当前选择。
对了。从 2017 年 11 月开始,通过 Google 向您致谢。
这对我不起作用。我一直选择“EOL Conversion -> Unix”,但它什么也没做。我回到菜单,看到 Windows 是灰色的(因此被选中?)选项,所以我再次单击 Unix。我什至尝试先选择我的所有文本,以防它仅适用于选择,然后再次选择 Unix。它仍然什么也没做。
W
Wappenull

在 Notepad++ 中,使用正则表达式替换所有。这比菜单中的转换命令具有优势,您可以对整个文件夹进行操作,而无需打开每个文件或拖放(在数百个文件上它会明显变慢),而且您还可以设置文件名通配符过滤器。

(\r?\n)|(\r\n?)

\n

这会将所有可能的行结束模式(单个 \r、\n 或 \r\n)匹配回 \n。 (或者 \r\n 如果您要转换为 Windows 样式)

要对多个文件进行操作,请执行以下任一操作:

使用“替换”选项卡中的“全部替换所有打开的文档”。您必须先将所有文件拖放到 Notepad++ 中。您可以控制要对哪个文件进行操作,但如果有数百或数千个文件可能会很慢。

“在文件中查找”选项卡中的“在文件中替换”,按您选择的文件过滤器,例如,指定目录下的 *.cpp *.cs。


由于将 \r\n\r\n 替换为单个 \n,这可能会导致 EOL 丢失。我认为。
确认在 Notepad++ 6.9.1 中工作。它会向前搜索,因此不会递归地替换后面的那些。
回复:“这可能会由于用单个 \n 替换 \r\n\r\n 而导致 EOL 丢失”>> 它不会,因为它使用 | (或)两个可能组之间的运算符。
M
MrCalvin

我从WinSCP“直接”打开文件,它在Notepad ++中打开文件我的linux服务器上有一个php文件,无论我做什么,它总是以Mac格式打开:-(

如果我下载了文件,然后从本地(Windows)打开它,它会以 Dos/Windows 的形式打开....嗯

解决方案是将本地文件 EOL 转换为“UNIX/OSX 格式”,保存然后上传。

现在,当我直接从服务器打开文件时,它以“Dos/Windows”的形式打开:-)


D
D. Cook

根据您的项目,您可能需要考虑使用 EditorConfig (https://editorconfig.org/)。有一个 Notepad++ 插件将加载一个 .editorconfig,您可以在其中指定“lf”作为强制行结尾。

我才开始使用它,但到目前为止它还不错,而且我从事的开源项目多年来一直包含 .editorconfig 文件。 “EOL 转换”设置没有更改,因此可能有点混乱,但如果您“查看 > 显示符号 > 显示行尾”,您可以看到它添加的是 LF 而不是 CRLF,即使在“EOL 转换”时" 并且下角显示其他内容(例如 Windows (CR LF))。