環境構築と書いてげんじつとうひと読む

ビムゥ……

僕はエディタとしてVimを愛用してる。
んでもって、標準のキーバインドはなるべくいじらない主義だったわけなんだが、いい加減気になる部分もふえてきたのでごく控えめに弄ることにした。

" ======== Key Mapping ======== {{{
" ---- nomal mode ----{{{
"<NOP> means to set no command
nnoremap q: <NOP>
nnoremap ; :
nnoremap <Backspace> :%s/

"move cursor
nmap 1 ^
nmap 9 $

"}}}

" ---- insert mode ---- {{{
"emacs like key-bind in insert mode
inoremap <C-a> <Home>
inoremap <C-e> <End>
inoremap <C-f> <Right>
inoremap <C-b> <Left>
inoremap <C-p> <Up>
inoremap <C-n> <Down>
inoremap <C-h> <Backspace>
inoremap <C-d> <Del>
inoremap <C-k> <C-d>D
inoremap <C-u> <C-o>d0
inoremap <C-y> <C-o>P

"command mode
inoremap <Backspace> <C-o>:
inoremap $ <C-o>:%s/

こんな感じで、ようはInsert modeの時のキー移動をEmacs風にしただけというありがちなアレw

んで、ついでに、BSを封印して一気にcommand modeへ移動出来るようにした。
あとUS配列だと:の入力がだるいので;でも受け付けるようにする。あと置換は多用するので、一発で待機にもっていけるように。

この程度なら標準で備わってそうだけど……とりあえずは満足。作業効率も三倍は軽い。

ズシュゥ……


右プロンプトの表示が、VCS_info周りで実際おかしいだったので調整。
その時にいくつかわかったことがあるのでメモ。

# --------- show vcs's branch --------------------
# :=> %s:vcs's name, %b: branch's name, %a: action name
autoload -Uz vcs_info

zstyle ':vcs_info:*' formats '[%b]' #_default_ '(%s)-[%b]'
zstyle ':vcs_info:*' actionformats '[%b|%a]' #'(%s)-[%b|%a]'
if is-at-least 4.3.7; then
    local br_name="%F{yellow}%b%f"
    local stgd="%F{green}%c%f"
    local unst="%F{red}%u%f"
    zstyle ':vcs_info:git:*' check-for-changes true
    zstyle ':vcs_info:git:*' stagedstr '+'
    zstyle ':vcs_info:git:*' unstagedstr '-'
    zstyle ':vcs_info:git:*' formats "($br_name) [$stgd/$unst]"
    zstyle ':vcs_info:git:*' actionformats "[$br_name|%F{red}%a%f] [$stgd/$unst]"
fi

#psvarの中身は%1vとかの形で参照できる
precmd () {
    psvar=()
    LANG=en_US.UTF-8 vcs_info
    psvar[1]=$vcs_info_msg_0_
    }

# %1vとして指定すると、カラー指定が反映されなくなるので直接参照
RPROMPT='%F{cyan}[%~]%f %1(v|$psvar[1]|)'
  • 色の指定

%F{色名} 文字 %f
これで囲うとその範囲だけ色を変えられる。

  • psvar

psvar[\d]に値を格納して、%v\dで参照してたわけなんだけど、なんだか色指定のエスケープ的なのが効かなくなってた。
これはpsvarを直接参照することで回避。

後者はこれはバグなのかなー。人によっては出来てたりすんだよね。