2012-12-10 36 views
3

尊敬的MELD和Emacs/ESS用户,为什么在用Meld修改后将^ M添加到script.r中?

我做了什么:

  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的所有地方,我想避免得到他们后,使用梅尔德!

FWIW:该目录正在被Dropbox同步;在Meld中,首选项>编码选项卡,在文本框中输入“utf8”;所有操作都在Linux下进行(Ubunt 12.04),使用Meld v1.5.3,Emacs v23.3.1

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

干杯。

+2

这看起来不像一个R问题。也许你应该在确定哪个工具引入该工具之后,在Meld/Git论坛上发布此消息(通过逐步删除一个工具) –

+0

@A_K我同意这可能与R-R标签无关。但是,stackoverflow已经返回了迄今为止我所有的git google搜索的90%,包括与'^ M'有关的搜索,因此我的出发点在这里。 – kbrand

+0

这是关闭的话题?网站范围明确包括“程序员常用的软件工具”,如Git和Meld。 –

回答

1

在终端我跑cat script.r | hexdump -C | head和之间的输出返回的发现了一个0d 0a,其被格式化DOS为一个新行(回车0d紧跟一个换行0a)。我在another_script.r上运行了相同的命令,我正在合并但仅观察到0a,没有0d 0a,表示Unix格式化。

为了进一步检查这是否是经由dos2unix script.r &证实0d 0a使用如上hexdump都-C转化为0a的^ M行结尾,script.r转化为UNIX格式源。我使用Meld进行合并,试图复制在脚本中产生^ M行结尾的过程。我在Emacs/ESS中重新运行了这两个文件,发现没有^ M行结尾。短的转换script.r 到dos格式化和重复上述过程,以查看是否^ M行结束再次出现,我相信我已经解决了我的^ M问题,简而言之,我不知道,一个我的文件被dos格式化。我带回家的消息:在Windows占主导地位的环境中,绝不要假设个人的Linux环境不包含DOS位。或行结束。

相关问题