Hack #118: ホームディレクトリをラクに入力する
Posted at 2010/01/20ツイート
問題
Vimのコマンドラインでホームディレクトリを入力する機会は比較的多いものの、~/
という文字列を見ただけで小指に疲労が走ってくるのは、ほとんどのVimユーザに共通するのではないでしょうか。
もしも入力しやすいキー、例えばバックスラッシュなどで一発で~/
が入力できれば、どんなに素晴らしいことでしょうか。
解決
以下のコードを~/.vimrc
に記述することで、コマンドラインモードでバックスラッシュで~/
が入力できる上、~/
が来て欲しくなさそうなところではそのままバックスラッシュが入力されます。
function! HomedirOrBackslash()
if getcmdtype() == ':' && (getcmdline() =~# '^e ' || getcmdline() =~? '^r\?!' || getcmdline() =~? '^cd ')
return '~/'
else
return '\'
endif
endfunction
cnoremap <expr> <Bslash> HomedirOrBackslash()
この設定を有効にしたVimで:e \と打鍵すると、ただちに:e ~/
に展開されます。
また、:s/\と打鍵した場合は、:s/\
とそのままになります。(:s/~/
のように展開されません)
発展
本Hackはcho45さんの.zshrc
へのハックへのアナロジーで考案されました。
残念ながら現在cho45さんの最新版の.zshrc
にはそのコードは存在していないようですが、
少し古いところに残っています。
著者の手元の.zshrc
から引用すると、以下のようなコードでした。
expand-to-home-or-insert () {
if [ "$LBUFFER" = "" -o "$LBUFFER[-1]" = " " ]; then
LBUFFER+="~/"
else
zle self-insert
fi
}
zle -N expand-to-home-or-insert
bindkey "\\" expand-to-home-or-insert
ujihisa
もどる
blog comments powered by Disqus