【发布时间】:2016-08-19 11:55:31
【问题描述】:
我正在尝试在 emacs 中使用 ansi-term(配置为 tcsh shell)。我看到显示换行符的一些问题。如果我从终端(ansi-term)尝试以下操作,我会得到正确的输出:
myterm > echo "Line1"; echo "Line2"; echo "Line3";
Line1
Line2
Line3
myterm >
但如果我尝试将相同的行放入 shell 脚本并尝试从 ansi-term 执行脚本,我会得到错误的输出
脚本:(测试)
#!/usr/bin/env tcsh
echo "Line1"; echo "Line2"; echo "Line3";
运行脚本(测试):
myterm > ./test
Line1
Line2
Line3
myterm >
注意:/usr/bin/env tcsh 确实指向正确的 shell(它与我在调用 ansi-term 时使用的 shell 相同)。同样从 gnome-terminal 执行脚本也会显示正确的输出。 我也尝试设置以下变量,但没有解决我的问题:
(set-terminal-coding-system 'utf-8-unix)
(setq default-process-coding-system '((utf-8-unix . utf-8-unix)))
【问题讨论】:
-
最有可能的 \r 和 \r\n 差异。无法在此处重现,因此无法提供更多帮助。
-
infocmp的输出可能有助于在这里生成一些答案 -
尝试使用
printf而不是echo并在每个字符串的末尾明确指定\r\n -
@Ivan :在这种情况下,将 printf 与 \r\n 一起使用将为我提供所需的输出。但问题是我无法控制我使用的工具的输出。这些工具的打印件也有同样的问题。上面的代码是复制问题的最简单示例。
-
@user6170930:我不确定如何使用 infocmp。你能告诉我更多细节吗?
标签: shell emacs terminal tcsh ansi-term