Vimのキーマップを弄ってみた

/web/tool

Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。


最近ですが、エディタに Vim を使うようになりました。WinとLinuxで同じエディタが使えるし、マウス使わなくて良いので楽しいです。正確にはWin では gVim ですが。あと、自宅で使ってる HHKB にも合ってるのでメチャ楽~♪

Vim では .vimrc(Vimの設定ファイル) に記述を加えることで、初期設定を書き換えることができます。タブ幅からオートコマンドまで、殆どなんでも。この辺の解説は他に譲るとして、今回は今んとこ使ってるキーバインドを晒してみます。微妙に Emacs 風味。

移動系

  1. inoremap <Leader>a <Home>
  2. inoremap <C-e> <End>
  3. inoremap <C-d> <Del>
  4.  
  5. inoremap <C-h> <Left>
  6. inoremap <C-j> <Down>
  7. inoremap <C-k> <Up>
  8. inoremap <C-l> <Right>

まずは基本の移動系。inoremap で挿入モード限定。<C-k>で「Ctrl+k」です。通常モードでの特徴的な hjkl(←↓↑→)移動を挿入モードでも使えるようにしたもの。

<Home>とか<End>なんかはオマケですが、割と重宝してます。ちなみに<Home>だけ Ctrl キーじゃないのは、C-a が Linux の Screen と競合するから。ちなみに<Leader>はバックスラッシュ(\)。

キル&ヤンク

  1. inoremap <Leader>k <ESC>d$i
  2. inoremap <Leader>p <ESC>pi

いわゆるコピー&ペースト。Emacs の C-k/C-y は凄く便利だと常々感じてるので、その代用品として作ってみました。ただしレジスタに入るのは1回分だけです。複数行どうこうしたい場合は素直にコマンド打ちましょう。Sig.は主に行末まで一気に消すために使ってます。

日付挿入マクロ

  1. inoremap <Leader>date <C-R>=strftime('%Y/%m/%d (%a)')<CR>
  2. inoremap <Leader>time <C-R>=strftime('%H:%M')<CR>
  3. inoremap <Leader>w3cd <C-R>=strftime('%Y-%m-%dT%H:%M:%S+09:00')<CR>

キーワードから現在の日付を挿入する、ちょっとしたマクロ。あんま使わないけど、ちょい便利。

ウィンドウ分割

  1. nnoremap <silent> <C-x>1 :only<CR>
  2. nnoremap <silent> <C-x>2 :sp<CR>
  3. nnoremap <silent> <C-x>3 :vsp<CR>

Emacs風の画面分割ショートカット。これは便利です。<C-x>2 から「:e ファイル名」でバッファ展開するのがマイブーム。いちお「:vsp」のも作ったけど、縦割りは妙に重くなるので結局つかってなかったり。

おまけ

  1. inoremap {} {}<LEFT>
  2. inoremap [] []<LEFT>
  3. inoremap () ()<LEFT>
  4. inoremap "" ""<LEFT>
  5. inoremap '' ''<LEFT>
  6. inoremap <> <><LEFT>

括弧とか引用符はセットで入力する癖が付いてるんですが、いちいち←に戻るのが手間に感じてました。これで解決!

memo: ほんとは Alt キーをもっと積極的に使いたかったんだけど、端末によっては ESC と激しく衝突するので断念。

Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。

6 Comments

Anonymous wrote:
uzai 2008–02–01 14:14
Sig. wrote:
hogehoge 2008–02–01 22:27
road wrote:
screenのエスケープキーを変えたらいかがでしょうか。
C-aだと色々被って使いづらいと思うんですよね。
僕はC-zにしてますが、他によくみるのはC-tとかですかね。 2008–02–12 13:17
Sig. wrote:
そういう発想はなかった。確かにソレは良いね。
しかしC-zは強制停止っぽくて怖いw C-tはアリですな。むむむ。
C-aが使えないのは確かに痛いっす~ T-T)

...あ。
良く考えたらいちお共用アカウントなので止めたほうが良いかもしれない。
ま~基本的に触るのは俺だけだけど。 2008–02–12 13:42
road wrote:
共用のアカウントだと難しいですね・・・。
C-zで設定してると、C-zを2回押すとサスペンドになるわけですが、
やっちまったらコマンドで
$ fg
って打てば大抵戻るんであんまり困ったことはないかも。
C-tだとvimでタグジャンプして戻るコマンドと被るんですよね・・・。
まあ自由にいじれる環境ができたときはぜひぜひ。
.screenrcに
escape ^t^t
って書けばC-tがエスケープキーになりますよ :D 2008–02–14 04:44
Sig. wrote:
thx!
My PCでやってみます^^b 2008–02–15 14:49