क्या विम में रूबी में "डू/एंड" और "{}" टॉगल करने का कोई आसान तरीका है?क्या विम में रूबी में "डू/एंड" और "{}" टॉगल करने का कोई आसान तरीका है?
(TextMate ^{
के साथ इस करता है।)
क्या विम में रूबी में "डू/एंड" और "{}" टॉगल करने का कोई आसान तरीका है?क्या विम में रूबी में "डू/एंड" और "{}" टॉगल करने का कोई आसान तरीका है?
(TextMate ^{
के साथ इस करता है।)
आप) उपयोग searchpair (या तो करना होगा, या% के साथ खेलने के लिए (जब तक matchit के रूप में स्थापित किया गया है, और आप पर/अंत शुरू कर रहे हैं के रूप में), फिर दो पदों को चिह्नित करें, परीक्षण करें कि यह टेक्स्ट या ब्रैकेट है, और अंत में दो पंक्तियों को अपडेट करें।
nnoremap <buffer> <c-x>{ :call <sid>ToggleBeginOrBracket()<cr>
let s:k_be = [ 'begin', 'end' ]
function! s:ToggleBeginOrBracket()
let c = lh#position#char_at_mark('.')
if c =~ '[{}]'
" don't use matchit for {,}
exe 'normal! %s'.s:k_be[1-(c=='}')]."\<esc>``s".s:k_be[(c=='}')]."\<esc>"
else
let w = expand('<cword>')
if w == 'begin'
" use mathit
normal %
exe "normal! ciw}\<esc>``ciw{\<esc>"
elseif w == 'end'
" use mathit
normal %
exe "normal! ciw{\<esc>``ciw}\<esc>"
else
throw 'Cannot toggle block: cursor is not on {, }, begin, nor end'
endif
endif
endfunction
कहाँ lh#position#char_at_mark()
here परिभाषित किया गया है।
पीएस: यह निश्चित रूप से एक SO सवाल है क्योंकि यह रूबी संदर्भ, और उन्नत विम स्क्रिप्टिंग को जोड़ता है।
इस नई प्लगइन को देखें: https://github.com/jgdavey/vim-blockle।
30 वर्ण पैड
है कि (/ बंटवारे के लिए जी जे/जी एस मैपिंग में शामिल होने) इस अच्छी तरह से करता है एक splitjoin.vim प्लगइन है।
हाँ, जटिल समाधान के लिए कोई कारण नहीं है। बस matchit.vim का उपयोग करें। :) – graywh
मैचिट ओपी के अनुरोध को हल नहीं करता है। (और यहां तक कि विम के बिना भी, यह अभी भी विकास उद्देश्यों के लिए विकास उपकरण की ट्यूनिंग से संबंधित है) –