zsh和oh-my-zsh安裝
阿新 • • 發佈:2018-05-19
ref ack RM matches del exp CA root sans
一、安裝:
1、安裝zsh
sudo apt-get install zsh
2、把默認的Shell改成zsh
chsh -s /bin/zsh
註意:不要使用sudo。
3、如果總是報 chsh: PAM: Authentication failure
, 則需配置密碼文件,解決chsh: PAM認證失敗的問題
sudo vim /etc/passwd
把第一行的/bin/bash改成/bin/zsh,這個是root用戶的。
把當前用戶的/bin/bash改成/bin/zsh,一般安裝後默認已經是zsh。
4、安裝oh-my-zsh
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
官網:http://ohmyz.sh/
5、重啟電腦,查看效果
6.安裝自動補全插件incr
創建~/.oh-my-zsh/plugins/incr/incr-0.2.zsh,輸入一下腳本
# Incremental completion for zsh # by y.fujii <y-fujii at mimosa-pudica.net>, public domain autoload -U compinit zle -N self-insert self-insert-incr zle -N vi-cmd-mode-incr zle -N vi-backward-delete-char-incr zle -N backward-delete-char-incr zle -N expand-or-complete-prefix-incr compinit bindkey -M viins ‘^[‘ vi-cmd-mode-incr bindkey -M viins ‘^h‘ vi-backward-delete-char-incr bindkey -M viins ‘^?‘ vi-backward-delete-char-incr bindkey -M viins ‘^i‘ expand-or-complete-prefix-incr bindkey -M emacs ‘^h‘ backward-delete-char-incr bindkey -M emacs ‘^?‘ backward-delete-char-incr bindkey -M emacs ‘^i‘ expand-or-complete-prefix-incr unsetopt automenu compdef -d scp compdef -d tar compdef -d make compdef -d java compdef -d svn compdef -d cvs # TODO: # cp dir/ now_predict=0 function limit-completion { if ((compstate[nmatches] <= 1)); then zle -M "" elif ((compstate[list_lines] > 6)); then compstate[list]="" zle -M "too many matches." fi } function correct-prediction { if ((now_predict == 1)); then if [[ "$BUFFER" != "$buffer_prd" ]] || ((CURSOR != cursor_org)); then now_predict=0 fi fi } function remove-prediction { if ((now_predict == 1)); then BUFFER="$buffer_org" now_predict=0 fi } function show-prediction { # assert(now_predict == 0) if ((PENDING == 0)) && ((CURSOR > 1)) && [[ "$PREBUFFER" == "" ]] && [[ "$BUFFER[CURSOR]" != " " ]] then cursor_org="$CURSOR" buffer_org="$BUFFER" comppostfuncs=(limit-completion) zle complete-word cursor_prd="$CURSOR" buffer_prd="$BUFFER" if [[ "$buffer_org[1,cursor_org]" == "$buffer_prd[1,cursor_org]" ]]; then CURSOR="$cursor_org" if [[ "$buffer_org" != "$buffer_prd" ]] || ((cursor_org != cursor_prd)); then now_predict=1 fi else BUFFER="$buffer_org" CURSOR="$cursor_org" fi echo -n "\e[32m" else zle -M "" fi } function preexec { echo -n "\e[39m" } function vi-cmd-mode-incr { correct-prediction remove-prediction zle vi-cmd-mode } function self-insert-incr { correct-prediction remove-prediction if zle .self-insert; then show-prediction fi } function vi-backward-delete-char-incr { correct-prediction remove-prediction if zle vi-backward-delete-char; then show-prediction fi } function backward-delete-char-incr { correct-prediction remove-prediction if zle backward-delete-char; then show-prediction fi } function expand-or-complete-prefix-incr { correct-prediction if ((now_predict == 1)); then CURSOR="$cursor_prd" now_predict=0 comppostfuncs=(limit-completion) zle list-choices else remove-prediction zle expand-or-complete-prefix fi }
7. 在~/.zshrc中添加incr插件,具體配置可參考.zshrc配置
zsh和oh-my-zsh安裝