zsh 自动补全致使命令显示重复

关键字:autocomplete, zsh, backspace, securecrt, xterm, linux consolelinux

 

举个例子:git

  1. 输入命令ls 

     

  2. 而后按TAB补全试试,发现居然是这样的

     

  3. 补全多出了一个ls。其余命令也会出一样的问题,不必定是double了,多是duplicate了一部分
  4. 你能够尝试按backspace删除,前面一部分字母怎么也删不掉~~,而后修改补全的命令的时候也容易修改错,执行的和显示的对不上

 

例外状况:编码

  1. 若是仅仅是backspace乱码或没法删除问题,请检查编码问题、zsh的功能键映射keybind、终端(xterm/securecrt/iterm)的功能键映射

 

解决办法:spa

  1. 打上以下patch
  2. 而后source ~/.zshrc 便可
diff --git a/themes/robbyrussell.zsh-theme b/themes/robbyrussell.zsh-theme
index f9eca6a..203534c 100644
--- a/themes/robbyrussell.zsh-theme
+++ b/themes/robbyrussell.zsh-theme
@@ -1,4 +1,4 @@
-local ret_status="%(?:%{$fg_bold[green]%}m<9E><9C> :%{$fg_bold[red]%}m<9E><9C> )"
+local ret_status="%(?:%{$fg_bold[green]%}:%{$fg_bold[red]%})"
 PROMPT='${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
 
 ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"

 

原理:3d

  1. 参考[连接]   
  2. 大概意思是这个主题里面,%的用法会致使zsh没能准确计算prefix的长度,因此在错误的位置输出了补全后的命令
相关文章
相关标签/搜索