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のときはマッチしたテキスト全体を返す。