【Vim】編集中ファイルのリネームをショートカットで簡単にする設定


背景

  • vim編集時でもファイルリネームをしたい時に、以下の点で気になったため、可能であるのか調査。
    • 長いコマンドではなく、キーバインドを利用してショートカット風に短くしたい。
    • :wのような保存処理を忘れたとしても、自動で行えるようにしたい。
    • 対話的に処理を行えるようにしたい。
  • そこでLeader機能を利用して、簡単リネーム設定を記述していく。

手順

  • vimrc(設定ファイル)を開く。
vim ~/.vimrc
  • 下記の内容を.vimrcへ書き込む。
~/.vimrc
" leader設定
" 「スペースキー + 他キー」で利用できるようにする。
let mapleader = "\<Space>"

" リネーム関数呼び出し
" vim上で「スペースキー + n」でリネーム処理が行えるようにする。
map <leader>n :call RenameCurrentFile()<cr>

" リネーム関数定義
function! RenameCurrentFile()
  let old = expand('%')
  let new = input('新規ファイル名: ', old , 'file')
  if new != '' && new != old
    exec ':saveas ' . new
    exec ':silent !rm ' . old
    redraw!
  endif
endfunction
  • vim内で設定読み込み。
:source ~/.vimrc
  • 試しに変更したいファイルをvimで開き、「スペースキー + n」で下記のように変更して、問題なければ完了。

参考