更新:仅当我从Windows计算机访问特定服务器时才会出现这种情况
使用emacs tramp(plink)我正在登录2台不同的服务器,其中一个服务器遇到find-file
时出现问题。
如果我在目录中执行制表符完成,则所有文件名都附加了^ M,例如:
Click <mouse-2> on a completion to select it.
In this buffer, type RET to select the completion near point.
Possible completions are:
-name^M ../^M
./^M .bash_history^M
.git/^M .gitconfig^M
.gitignore^M .lesshst^M
.ssh/^M .subversion/^M
当我选项卡完成文件名时,它以^ M后缀完成,后缀是不存在的文件的文件名:
/plink:user@myserver.com:/home/me/.gitignore^M
有人遇到过类似的问题吗? ^M
不可访问!
答案 0 :(得分:0)
^ M确实是回车/换行的回车部分(十六进制0x0d,oct 015)。您可能需要将服务器配置为使用换行符作为行结尾。可能有办法在emacs中解决这个问题,但我不知道。
在某种程度上,它是MS Windows(回车/换行)与Linux(换行)问题。然而,它并不是那么简单,两种类型的行结尾都是出于历史的好理由。
答案 1 :(得分:0)
如其他地方所述,^ M是CR字符,它构成了在DOS中用作行终止符的CR LF对的前半部分。 Unix / Linux只使用LF,因此^ M显示为一个额外的字符。
当我在vim
中看到此消息时,我会通过搜索^ M并将其替换为 nothing 来删除它。要指定^ M,请按ctrl-V然后按M
我确信emacs有办法做同样的事情。
答案 2 :(得分:0)
尝试
(add-hook 'comint-output-filter-functions
'shell-strip-ctrl-m nil t)
(add-hook 'comint-output-filter-functions
'comint-watch-for-password-prompt nil t)
或者甚至
'(ansi-color-for-comint-mode-on)
'(ansi-color-for-comint-mode-filter)
答案 3 :(得分:-1)
^ M是回车。
这可能与DOS与Unix换行有关。
DOS: (13, 10)
Unix: (10)
因此,当您想使用DOS样式编写行时,Unix样式渲染器会说:
your like(char13)
another line
检查您的终端和类似的东西......
并且......如果你在DOS中为Unix编写批处理文件也是如此。您必须使用dos2unix filename
转换它以删除文件中的额外13个。