Этот пример частично работает, но без заглавной буквы последнего слова в визуально выделенном тексте. Идея состояла в том, чтобы уменьшить нагрузку, оставаясь в Vim. Получите это, чтобы воздействовать на последнее слово в визуальном выборе, и вы там. :) В соответствии с обновленными характеристиками, пройдите "\\ |" разделенный список маленьких слов, с первой буквы в верхнем регистре.
" Visually select some text
":call title_case_selection:()
" and probably want to map it to some abbreviation
"
function title_case_selection:( list_of_words_bar_delimited )
let g:start_column=virtcol("'<") - 1
let g:end_column=virtcol("'>") + 1
let g:substitution_command=':s/\%>'.g:start_column.'v\<\(\w\)\(\w*\)\>\%<'.g:end_column.'v/\u\1\L\2/g'
call feedkeys ( g:substitution_command )
call feedkeys ("\<cr>", 't')
let g:substitution_command=':s/\%>'.g:start_column.'v\<\('.a:list_of_words_bar_delimited.'\)\>\%<'.g:end_column.'v/\L\1/g'
call feedkeys ( g:substitution_command )
call feedkeys ("\<cr>", 't')
endfunction
"abba zabba - очень вкусная конфета! <- визуально выберите эту строку </p>
:call title_case_selection:("Is\\|A")