basyura's blog

あしたになったらほんきだす。

plugin/rails.vim を読む - その6

function! s:escvar(r)
  " ファイル名を変更
  " /Users/basyura/.vim/plugin/vim-rails/plugin/rails.vim
  "     → ~/.vim/plugin/vim-rails/plugin/rails.vim 
  let r = fnamemodify(a:r,':~')
  " アルファベット、数字やアンダーバー以外の文字を置換
  let r = substitute(r,'\W','\="_".char2nr(submatch(0))."_"','g')
  " 数字始まりを置換(?)
  let r = substitute(r,'^\d','_&','')
  return r
endfunction

fnamemodify

fnamemodify({fname}, {mods})
    ファイル名{fname}を{mods}にしたがって変更する。
    {mods}はコマンドラインで使われるのと同様な文字列である。
    :~  ファイル名をホームディレクトリについて相対的な名前に
        (可能ならば) 切り詰める。
        ファイルがホームディレクトリの下になければ、
        ファイル名は修正されない。

submatch

submatch({nr}) *submatch()*
    substitute の中の式でのみ使われる。
    マッチしたテキストの{nr}番目の部分マッチを返す。
    {nr}が0のときはマッチしたテキスト全体を返す。