重现步骤:
- 将 zsh 作为默认 shell。
- 打开一个新终端。例如,使用Ctrl+ Alt+ T。
- 按Ctrl+ Shift+T打开新的终端选项卡。
^T%
显示为第一行
我正在使用 lxde 和 zsh-4.3.11 运行 ubuntu 11.10。
Gnome 终端没有这个问题。
内容/etc/zsh/zshrc
:
# /etc/zsh/zshrc: system-wide .zshrc file for zsh(1).
#
# This file is sourced only for interactive shells. It
# should contain commands to set up aliases, functions,
# options, key bindings, etc.
#
# Global Order: zshenv, zprofile, zshrc, zlogin
READNULLCMD=${PAGER:-/usr/bin/pager}
if [[ "$TERM" != emacs ]]; then
[[ -z "$terminfo[kdch1]" ]] || bindkey -M emacs "$terminfo[kdch1]" delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M emacs "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[kdch1]" ]] || bindkey -M vicmd "$terminfo[kdch1]" vi-delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M vicmd "$terminfo[khome]" vi-beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M vicmd "$terminfo[kend]" vi-end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M vicmd "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[cuu1]" ]] || bindkey -M viins "$terminfo[cuu1]" vi-up-line-or-history
[[ -z "$terminfo[cuf1]" ]] || bindkey -M viins "$terminfo[cuf1]" vi-forward-char
[[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" vi-up-line-or-history
[[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" vi-down-line-or-history
[[ -z "$terminfo[kcuf1]" ]] || bindkey -M viins "$terminfo[kcuf1]" vi-forward-char
[[ -z "$terminfo[kcub1]" ]] || bindkey -M viins "$terminfo[kcub1]" vi-backward-char
# ncurses fogyatekos
[[ "$terminfo[kcuu1]" == ""* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history
[[ "$terminfo[kcud1]" == ""* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history
[[ "$terminfo[kcuf1]" == ""* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char
[[ "$terminfo[kcub1]" == ""* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char
[[ "$terminfo[khome]" == ""* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == ""* ]] && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line
[[ "$terminfo[khome]" == ""* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == ""* ]] && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line
fi
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \
/usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin
unalias run-help
autoload run-help
# If you don't want compinit called here, place the line
# skip_global_compinit=1
# in your $ZDOTDIR/.zshenv or $ZDOTDIR/.zprofice
if [[ -z "$skip_global_compinit" ]]; then
autoload -U compinit
compinit
fi
内容~/.zshrc
:
# The following lines were added by compinstall
zstyle ':completion:*' completer _expand _complete _ignored _correct _approximate
zstyle ':completion:*' group-name ''
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]} m:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=* r:|=*' '+l:|=* r:|=*'
zstyle :compinstall filename '/home/kirill/.zshrc'
autoload -Uz compinit promptinit zcalc zsh-mime-setup
compinit
promptinit
zsh-mime-setup
# End of lines added by compinstall
# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory autocd extendedglob notify sharehistory
setopt HIST_EXPIRE_DUPS_FIRST
#{{{ Shell Conveniences
# some more ls aliases
alias ls='ls --color'
alias lt='ls --color -ltr'
alias ll='ls -l'
alias lh='ls -l -h'
alias la='ls -A'
alias l='ls -CF'
alias vir='vim -R'
alias vimnw='vim -R +"set nowrap"'
alias tok='top -n1 -b -u kirill'
alias gt='gnome-terminal'
alias gts='gnome-terminal --window-with-profile=shnurov'
#alias tv='/usr/toolworks/totalview.8.6.2-2/bin/totalview'
#alias mpic='mpiCC.openmpi -o main -I/usr/local/include/boost-1_39/ main.cc -Llibdir -lboost_mpi-gcc43-mt-1_39 -lboost_serialization-gcc43-mt-1_39'
#alias mpir='mpirun.openmpi -np 7 ./main'
alias sage='~/progs/sage-4.8/sage'
#alias gmolden='/home/kirill/progs/molden/gmolden'
#alias molden='/home/kirill/progs/molden/molden'
#export LD_LIBRARY_PATH=/home/kirill/progs/molekel_5_4_0_linux_x86_64/lib:$LD_LIBRARY_PATH
#alias molekel='/home/kirill/progs/molekel_5_4_0_linux_x86_64/bin/Molekel'
#alias molekel='source /home/kirill/progs/molekel_5_4_0_linux_x86_64/launch_molekel.sh'
alias duh='du -s -h'
alias mam='make; time ./main'
alias mac='make clean;make;time ./main'
alias atdtool='~/progs/atdtool/atdtool'
alias acro='acroread -openInNewWindow'
#}}}
bindkey -e
bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward
# End of lines configured by zsh-newuser-install
# Customize to your needs...
export PATH=/opt/intel/composer_xe_2011_sp1.6.233/bin/intel64:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/intel/composer_xe_2011_sp1.6.233/mpirt/bin/intel64
#source /opt/intel/bin/compilervars.sh intel64
autoload -U colors && colors
PROMPT="%{$fg[red]%}%*%{$reset_color%}.%{$fg[cyan]%}%~%{$reset_color%}
%{$reset_color%}%{$fg[magenta]%}>%{$reset_color%}"
#PROMPT="${fg_red}%*${fg_white}${at_normal}.${fg_cyan}%~${fg_white} ${bg_grey}
#${at_normal}${fg_white}>${at_normal}"
答案1
这是一个 lxterminal 错误。
它不会在其他 shell 中显示,因为 zsh 足够好,当您在发出提示之前不包含尾随换行符时,它可以尝试显示上一个命令显示的隐藏字符。
如果你输入echo -n foo
,你就会看到foo%
。表示%
没有换行符。上面发生的情况是 lxterminal^T
在运行 shell 之前输出该内容。
^T%\nprompt>
在其他 shell 中,您看到的不是^Tprompt
。
顺便说一句,Lxterminal 还有另一个错误,它忽略了 的值$SHELL
。