这很奇怪.我在下面定义了以下提示zsh:
local user_host='%{$terminfo[bold]$fg[green]%}%n @ %m%{$reset_color%}'
local current_dir='%{$terminfo[bold]$fg[blue]%} %~%{$reset_color%}'
local git_branch='$(git_prompt_info)%{$reset_color%}'
local return_code="%(?..%{$fg[red]%}%? ?%{$reset_color%})"
PROMPT="??${user_host} %D{[%a, %b %d %I:%M:%S]} ${current_dir} ${git_branch}
??%B$%b "
RPS1="${return_code}"
Run Code Online (Sandbox Code Playgroud)
它在Emacs()gnome-terminal中的ansi-term终端以及终端中运行良好M-x ansi-term- 请参阅下面的示例:

但是,它multi-term在Emacs 下运行不正常,如下所示:

我认为multi-term能够解释终端喜欢gnome-terminal或ansi-term做的同一组转义字符 .为什么不git-prompt_info正确解释由其他人返回的转义字符?
我也尝试过:
set-terminal-coding-system 并将其设置为 utf-8-unixTERM=eterm-color 在多学期终端内,或在致电Emacs之前,等等.TERM= 在多学期终端内,或在致电Emacs之前,等等.export TERM我的.zshrc到目前为止,最好的解决方案似乎是执行以下操作:
TERM=xterm-256color
但是导致我在这里报告的另一个问题:在Emacs中将转义序列传递给ansi-term中的shell.
我经常看到这两种模式用于向Seq附加一个Optional值:
def example1(fooList: Seq[Foo], maybeFoo: Option[Foo]): Seq[Foo]) = {
if (maybeFoo.isDefined)
fooList :+ maybeFoo.get
else
fooList
}
def example2(fooList: Seq[Foo], maybeFoo: Option[Foo]): Seq[Foo]) = {
maybeFoo match {
case Some(foo) => fooList :+ foo
case None => fooList
}
}
Run Code Online (Sandbox Code Playgroud)
这两种方法都有效,但它们看似冗长和丑陋.是否有现有的操作员或方法可以更自然地/功能性地完成此操作?
谢谢!