zshのキーバインド切り替えなど

MacBook Air Software Reinstall USB Drive
紹介しようと思って、紹介してなかった設定など。

photo-credit: syui


bindkey | emacs → vi



私は、基本、Emacsキーバインドを使いますが、viのキーバインドも利用します。ノーマルモードですが。


bindkey -s



本来なら、キーバインドの切り替えは、切り替えは以下の様な設定をしたほうが分かりやすいです。

bindkey -sv '^e' 'bindkey -e\n'

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



-sは、プロンプト上で実行しますよということ。なので、実行するには改行が必要。


bindkey -e, -v



しかし、個人的には以下のようにバックグラウンドで実行しています。


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



このようにショートカットを設定。最終行にて、デフォルトをviにしています。


ちなみに、 -aはviのコマンドモード。


これで、C-eを押すと、Emacsのキーバインドに変更できますね。


prompt



プロンプトにキーバインドの状態を表示すると、便利かもですね。




現在使っているキーは、 bindkey -lL main | cut -d ' ' -f 3で取得しています。

# prompt {{{
function zle-line-init zle-keymap-select {
EMACS_INSERT=`bindkey -lL main | cut -d ' ' -f 3`
if echo $EMACS_INSERT | grep emacs > /dev/null 2>&1;then
EMACS_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"
else
EMACS_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"
fi
RPS1="$EMACS_INSERT${${KEYMAP/vicmd/$VIM_NORMAL}/(main|viins)/$VIM_INSERT}"
RPS2=$RPS1
zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select
# prompt }}}



prompt-bindkey



ちなみに、キーを押すことで、プロンプトを変更したい場合は以下のような感じにします。非常に冗長なので、おすすめは出来ませんが。




function airchrome-bindmode-emacs () {
bindkey -e
EMACS_INSERT=`bindkey -lL main | cut -d ' ' -f 3`
if echo $EMACS_INSERT | grep emacs > /dev/null 2>&1;then
EMACS_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"
else
EMACS_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"
fi
RPS1="$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;then
EMACS_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"
else
EMACS_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"
fi
RPS1="$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



z



autojumpがよろしくない挙動をしたので、 zに変えました。

https://github.com/rupa/z

# z
source $HOME/dotfiles/.zsh/tools/z/z.sh
compctl -U -K _z_zsh_tab_completion ${_Z_CMD:-z}
alias j="z"



私は、 brewなので。

. `brew --prefix`/etc/profile.d/z.sh
compctl -U -K _z_zsh_tab_completion ${_Z_CMD:-z}



vim-airline



こちらも使ってたプラグインの挙動が...。ということで、変えてみました。

https://github.com/bling/vim-airline


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


こちらは、テーマを変えないと好みに合わないので、変えています。薄い色が好きなのですが、結構強い色多いです...。


注意点として、ブログ上でうまくフォントが表示されるのかどうかは、微妙だという点。


airgoogleplus



コード整理してみました。順次整理していく予定。


https://github.com/syui/airgoogleplus


表に出せてないものが多すぎて、全く整理できていない状態。なので、割りと適当に出していってる感じです。


コードを何度も読み直し、書きなおすことで新たな発見があって面白いです。


mba-hack2



ブログにも過去環境をまとめていってます。そのうち消えてしまうので。


しかし、正直、メイン環境とは程遠く、自分が日常的に使ってるものを紹介するまでは全然到達してない感があります。


このまま行くと、いつもと同じように、外側だけ整理して、途中めんどくさくなって、やめてしまうというパターンな気がする...。


もしまとめるとすれば、多分、 mba-hack2qiitaになると思います。


しかし、情報が早いのは、やっぱりブログです。


新しいブログ、レイアウト考えなきゃいけないので、レイアウトの参考にするブログ(一言で言えば真似するブログ)を早く見つけないと...。


今のところ、デフォルトをちょっとだけ変更しただけの完全なオリジナルです。この辺りは、自分のセンスが無さすぎて色々と辛いです。


twitter



Web版のトップのレイアウトが変更されましたね。


いい感じになったと思います。より個人に近くなったというか。


なんか、GitHubをちょっと柔らかくしたみたいな感じのページになりました。


前はあくまでサービスの一貫という感じのページでしたので、良くなったと思います。


ということで、少しだけカスタマイズしてみました。画像がちょうどいい大きさなので、アイコンとかを調整してみました。


https://twitter.com/PSP_T


そういえば、IDの変更、ダメでした。使われなくなっているものは、開放してほしい...。