मेरे पास इस कार्य के लिए lh-cpp में कई मैपिंग हैं।
उस स्थिति में, यह ,,sc
, या ,,rc
, या ,,dc
होगा। (यहां, ,
वास्तव में मेरा <localleader>
है)।
यह वास्तव में लागू हो जाता है के रूप में:
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
...
स्रोत
2016-01-15 09:15:59
मैं बदल जाएगा सूचक नामित सी ++ डाले, शुद्धता के लिए करने के लिए डाले, लेकिन इन विचारों संख्या प्रकार के लिए लागू नहीं डाले, जो मैं सिर्फ जगह में छोड़ चाहते हैं या संभवतः सी ++ नोटेशन 'int (ए)' में परिवर्तित करें (जिसका अर्थ है)। यानी, * अनावश्यक नई verbosity * परिचय नहीं है। –
आपको शायद [clang-tidy] (http://clang.llvm.org/extra/clang-tidy/checks/google-readability-casting.html) जैसे कुछ का उपयोग करके बेहतर परिणाम मिलेंगे। – Jason