Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

zshのbindkeyとprompt

$
0
0

bindkey

emacsとvi

bindkey -s

キーバインドには一括した設定が用意されています。切り替えは、以下の様なキーを設定すると分かりやすいです。

~/.zshrc
bindkey -sv '^e''bindkey -e\n'

bindkey -se '^v''bindkey -v\n'

bindkey -e,v

個人的には以下のように設定しています。

~/.zshrc
function airchrome-bindmode-emacs (){
bindkey -e
}
zle -N airchrome-bindmode-emacs
bindkey -v '^e' airchrome-bindmode-emacs
bindkey -a '^e' airchrome-bindmode-emacs

function airchrome-bindmode-vi (){
bindkey -v
}
zle -N airchrome-bindmode-vi
bindkey -e '^v' airchrome-bindmode-vi

bindkey -v

prompt

bindkey_mode

しかし、上記では現在どのキーバインドを使用しているのか分かりにくいです。よって、以下のようにプロンプトに表示すると分かりやすいです。

~/.zshrc
# prompt-bindkey_mode# http://mba-hack.blogspot.jp/2014/04/zsh.htmlfunction airchrome-bindmode-emacs (){
bindkey -e
EMACS_INSERT=`bindkey -lL main | cut -d ' ' -f 3`if echo$EMACS_INSERT| grep emacs > /dev/null 2>&1;thenEMACS_INSERT="%K{black}%F{011}⮂%k%f%K{011}%F{034} % $EMACS_INSERT %k%f"VIM_NORMAL="%K{011}%F{125}⮂%k%f%K{125}%F{015} % NORMAL %k%f%K{125}%F{black}⮂%k%f"VIM_INSERT="%K{011}%F{075}⮂%k%f%K{075}%F{026} % INSERT %k%f%K{075}%F{black}⮂%k%f"elseEMACS_INSERT="%K{black}%F{034}⮂%k%f%K{034}%F{011} % $EMACS_INSERT %k%f"VIM_NORMAL="%K{034}%F{125}⮂%k%f%K{125}%F{015} % NORMAL %k%f%K{125}%F{black}⮂%k%f"VIM_INSERT="%K{034}%F{075}⮂%k%f%K{075}%F{026} % INSERT %k%f%K{075}%F{black}⮂%k%f"fiRPS1="$EMACS_INSERT${${KEYMAP/vicmd/$VIM_NORMAL}/(main|viins)/$VIM_INSERT}"RPS2=$RPS1
zle reset-prompt
}
zle -N airchrome-bindmode-emacs
bindkey -v '^e' airchrome-bindmode-emacs
bindkey -a '^e' airchrome-bindmode-emacs
 
function airchrome-bindmode-vi (){
bindkey -v
EMACS_INSERT=`bindkey -lL main | cut -d ' ' -f 3`if echo$EMACS_INSERT| grep emacs > /dev/null 2>&1;thenEMACS_INSERT="%K{black}%F{011}⮂%k%f%K{011}%F{034} % $EMACS_INSERT %k%f"VIM_NORMAL="%K{011}%F{125}⮂%k%f%K{125}%F{015} % NORMAL %k%f%K{125}%F{black}⮂%k%f"VIM_INSERT="%K{011}%F{075}⮂%k%f%K{075}%F{026} % INSERT %k%f%K{075}%F{black}⮂%k%f"elseEMACS_INSERT="%K{black}%F{034}⮂%k%f%K{034}%F{011} % $EMACS_INSERT %k%f"VIM_NORMAL="%K{034}%F{125}⮂%k%f%K{125}%F{015} % NORMAL %k%f%K{125}%F{black}⮂%k%f"VIM_INSERT="%K{034}%F{075}⮂%k%f%K{075}%F{026} % INSERT %k%f%K{075}%F{black}⮂%k%f"fiRPS1="$EMACS_INSERT${${KEYMAP/vicmd/$VIM_NORMAL}/(main|viins)/$VIM_INSERT}"RPS2=$RPS1
zle reset-prompt
}
zle -N airchrome-bindmode-vi
bindkey -e '^v' airchrome-bindmode-vi
 
bindkey -v

bindkey -lL main | cut -d ' ' -f 3で現在のキーバインドを取得してます。

最終行のbindkey -vはデフォルト設定です。-aはviのノーマルモードです。

show_buffer_stack

zshのコマンドラインスタックをプロンプトに表示させる

コマンドラインスタックをプロンプトに表示することもできます。

~/.zshrc
# prompt-show_buffer_stack# https://gist.github.com/yukirin/7067299#bindkey "^Q" show_buffer_stacklocal p_buffer_stack=""local -a buffer_stack_arr

function make_p_buffer_stack(){if[[ ! $#buffer_stack_arr> 0 ]];thenp_buffer_stack=""return    fip_buffer_stack="%F{cyan}<stack:$buffer_stack_arr>%f"}function show_buffer_stack(){local cmd_str_len=$#LBUFFER[[ cmd_str_len > 10 ]]&&cmd_str_len=10
    buffer_stack_arr=("[$LBUFFER[1,${cmd_str_len}]]"$buffer_stack_arr)
    make_p_buffer_stack
    zle push-line-or-edit
    zle reset-prompt
}function check_buffer_stack(){[[$#buffer_stack_arr> 0 ]]&&shift buffer_stack_arr
    make_p_buffer_stack
}

zle -N show_buffer_stack
bindkey "^Q" show_buffer_stack
add-zsh-hook precmd check_buffer_stack

RPROMPT='${p_buffer_stack}'

branch

記号なども使えます。この辺りは、vim-powerlineで使われてるものが参考になりますね。

~/.zshrc
zstyle ':vcs_info:git:*' stagedstr "⇊"
zstyle ':vcs_info:git:*' unstagedstr "⭠"

話は変わりますが、最近、vimのステータスラインをvim-airlineに変更してみました。

~/.vimrc
let g:airline_theme             ='powerlineish'let g:airline_enable_branch     = 1
let g:airline_enable_syntastic  = 1

" vim-powerline symbols
let g:airline_left_sep          ='⮀'let g:airline_left_alt_sep      ='⮁'let g:airline_right_sep         ='⮂'let g:airline_right_alt_sep     ='⮃'let g:airline_branch_prefix     ='⭠'let g:airline_readonly_symbol   ='⭤'let g:airline_linecolumn_prefix ='⭡'let g:airline#extensions#tabline#enabled = 1

お勧めのキーバインドがあれば、是非、教えて下さい。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>