Ich habe mehrere Zuordnungen für diese Aufgabe in lh-cpp. In diesem Fall wird es ,,sc
, oder ,,rc
oder ,,dc
sein. (hier ist ,
ist eigentlich meine <localleader>
).
Es ist tatsächlich umgesetzt als:
function! s:ConvertToCPPCast(cast_type)
" Extract text to convert
let save_a = @a
normal! gv"ay
" Strip the possible brackets around the expression
let expr = matchstr(@a, '^(.\{-})\zs.*$')
let expr = substitute(expr, '^(\(.*\))$', '\1', '')
"
" Build the C++-casting from the C casting
let new_cast = substitute(@a, '(\(.\{-}\)).*',
\ a:cast_type.'<\1>('.escape(expr, '\&').')', '')
" Do the replacement
exe "normal! gvs".new_cast."\<esc>"
let @a = save_a
endfunction
vnoremap <buffer> <LocalLeader><LocalLeader>dc
\ <c-\><c-n>:'<,'>call <sid>ConvertToCPPCast('dynamic_cast')<cr>
nmap <buffer> <LocalLeader><LocalLeader>dc viw<LocalLeader><LocalLeader>dc
...
ich der Zeiger wirft auf dem Namen C++ Abgüsse umwandeln würde, für die Richtigkeit, aber diese Überlegungen gelten nicht für die Anzahl Typ wirft, was ich würde lassen Sie einfach an Ort und Stelle oder möglicherweise in die C++ - Notation 'int (a)' konvertieren (was dasselbe bedeutet). Ie., führen Sie nicht * unnötige neue Ausführlichkeit * ein. –
Sie würden wahrscheinlich bessere Ergebnisse mit etwas wie [Clang-Tidy] (http://clang.llvm.org/extra/clang-tidy/checks/google-readability-casting.html) bekommen. – Jason