Vim scriptで行範囲指定できるFunctionを作成してみた。
vimで範囲指定できるコマンドを定義する方法 – ぺけみさお とかを参照しつつ作成すると
command! -range=% -nargs=0 RenameMethodCamelCase call s:RenameMethodCamelCase()
でFunction内で
echo a:firstline
echo a:lastline
を呼ぶも
0
0
な結果なのでので
let first = line("'<")
let end = line("'>")
関数内で、こうすることでビジュアルの範囲の開始行、終了行を取得していたが…そもそもとして
command! -range=% -nargs=0 RenameMethodCamelCase :<line1>,<line2>call s:RenameMethodCamelCase()
とすればちゃんと取得できていた…
command! -range=% -nargs=0 RenameMethodCamelCase :<line1>,<line2>call s:RenameMethodCamelCase()
function! s:RenameMethodCamelCase() range abort
let first = a:firstline
let end = a:lastline
if first == 0
let first = 1
endif
if end == 0
let end = line("$")
endif
execute first . ',' . end . 's/\(^\|_\|\.\)\@<=\(.\)/\U&/ge'
execute first . ',' . end . 's/_\|\.//ge'
execute first . ',' . end . 's/^/get/ge'
endfunction
abc_defg_hijk1
abc_defg_hijk2
abc_defg_hijk3
2行目だけ選択して'<,'>RenameMethodCamelCase
すれば、↓となった。
abc_defg_hijk1
getAbcDefgHijk2
abc_defg_hijk3