読者です 読者をやめる 読者になる 読者になる

vim のキーバインドをダイヤモンドカーソルに変更する

vi/vim

wikipedia:ダイヤモンドカーソル って何?何なのよー



歴史的背景も、この話題が出た経緯も、どういう空気なのかも全く分かりませんが、つまりは vim でダイヤモンドカーソルのキーバインドに変更するのはどうやるの?って言っているのですよね。

以下のように .vimrc に定義することで簡単にキーバインドを変更できます *1。nmap がノーマルモードでのキーバインドimap が挿入モードのキーバインドです *2 。ダイヤモンドカーソルへキーバインドを変更すること自体はあまり意味がないのですが、例えば、コマンドモードで任意のコマンドをショートカットキーで実行させたいときにとっても便利です。

$ vi ~/.vimrc
" keybind settings
nmap <C-S> <LEFT>
imap <C-S> <LEFT>
nmap <C-E> <UP>
imap <C-E> <UP>
nmap <C-D> <RIGHT>
imap <C-D> <RIGHT>
nmap <C-X> <Down>
imap <C-X> <Down>

Fedora13 の環境で試してみたのですが Ctrl-S のキーバインドの変更が意図したように動作しません。Ctrl-S と Ctrl-Q はフロー制御文字としてターミナルで特別な扱いになっているのでその設定変更が必要です *3 。この辺はターミナルかプラットフォームのデフォルト設定によって異なるのかもしれません。

$ rpm -q vim-common gnome-terminal
vim-common-7.3.055-1.fc13.i686
gnome-terminal-2.30.1-1.fc13.i686
$ stty -ixon -ixoff

これでダイヤモンドカーソルを堪能できました。

最近、見つけたのですが Vim-users.jp が素晴らしいです。Vim Hacks Project に目を通すと vim を使う楽しさがもっと広がると思います。

*1:vimをカスタマイズして、使い慣れたキーバインドを設定する - builder by ZDNet Japan

*2:map は全てのモードで有効になるとあったのですが、私の環境では動作しませんでした

*3:Vim - General - vim | ctrl-s mapping does not work