vimの「最後に編集した」関係のコマンド

編集作業しているとき、最後の編集位置というのはかなり重要度が高いのではないかと思います。
vimには gi `[ `` `< `. 等々、「最後の編集位置」への移動コマンドが覚えきれないぐらい有ります。

自分としては最後に内容変更したカーソル位置へジャンプする `. と、編集位置をさかのぼる g; をメインに使用と言うあたりで落ち着きました。
使用頻度としてはかなり高いコマンドになっています。

nnoremap gb `.zz
nnoremap <C-g> g;

編集位置をさかのぼる g; はカウント指定も可能ですがコマンドの性質上カウント指定はしにくいですし、いちいち2ストロークではちょっと辛いのでに割り当てています。
まあ使用頻度は少ないので問題ないと言えば問題ないのですが。
さかのぼった編集位置を戻すのは g, ですが、こちらは更に使用頻度が低いので何もしていません。
のデフォルトはファイル名とカーソル位置を表示するコマンドですが、その辺の情報はステータスラインに表示する事にしています。

  set statusline=%<%f\ %m\ %r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=\ (%v,%l)/%L%8P\ 

gbは連続で使用しないし、元々キー割り当てがないので特に問題無いかと。


また最近編集したバッファへの移動は :b# の裏バッファへの移動と、mru.vimを色分け表示して、簡単な絞り込みを追加した改変版のmru.vimを使用しています。
裏バッファへの移動はウィンドウ分割していないとき、時々手癖でで裏バッファへ切替しようとする事があるのでスクリプトを追加しています。
この辺はちゃんとしたバッファ切替用のプラグインとか :e での補完とか使った方がよいのだろうけど、手癖というのはなかなか直らないものだということで。

nnoremap <silent> <C-w><C-w> :<C-u>call MyWincmdW()<CR>
nnoremap <silent> <C-w>w :<C-u>call MyWincmdW()<CR>
function! MyWincmdW()
  let pn = winnr()
  silent! wincmd w
  if pn == winnr()
    silent! b#
  endif
endfunction