3

尊敬的 Meld 和 Emacs/ESS 用户,

我做了什么:

  1. 使用 Emacs/ESS 创建一个 script.r。
  2. 通过从 another_script.r 中提取一些代码行来对 script.r 进行一些修改
  3. 在 Emacs/ESS 中重新打开 another_script.r(或 script.r)以继续工作。

another_script.r 中所有推送到 script.r 的行都以 ^M 结尾

有时情况正好相反——只有被推/拉的线以 ^M 结尾。到目前为止,我还没有完全确定哪个动作决定了 ^M 的放置位置。无论哪种方式,我最终仍然会到处都是 ^M,我想避免在使用 Meld 后得到它们!

FWIW:Dropbox 正在同步目录;在 Meld,Preferences > Encoding 选项卡中,在文本框中输入“utf8”;所有操作均在 Linux (Ubunt 12.04) 下使用 Meld v1.5.3、Emacs v23.3.1 执行

当前的解决方法是在终端中运行:dos2unix /path/to/script.r剥离^Ms. 但这不应该是必要的,我希望这里有人可以告诉我如何避免这些。

干杯。

4

1 回答 1

1

在我运行的终端cat script.r | hexdump -C | head中,在返回的输出中找到了 a 0d 0a,这是新行的 DOS 格式(回车后0d紧跟换行0a)。我在 another_script.ri 上运行了相同的命令,但只观察到0a, no 0d 0a​​,表示 Unix 格式。

为了进一步检查这是否是 ^M 行结尾的来源,script.r 已通过dos2unix script.r& 验证转换为 unix 格式,该格式0d 0a已转换为0a使用 hexdump -C ,如上所述。我使用 Meld 执行了合并,试图复制在我的脚本中产生 ^M 行结尾的过程。我在 Emacs/ESS 中重新打开了这两个文件,发现没有 ^M 行结尾。没有将 script.r 转换dos 格式并重复上述过程以查看 ^M 行结尾是否重新出现,我相信我已经解决了我的 ^M 问题,这只是我不知道的,我的一个文件是dos格式的。我带回家的信息:在 Windows 主导的环境中,永远不要假设一个人的个人 linux 环境不包含 DOS 位。或行尾。

于 2012-12-14T12:58:15.487 回答