कोई कर्सर के आस-पास के अंतिम खोज पैटर्न के मिलान को निकालने वाला फ़ंक्शन लिख सकता है, और इसे कॉल करने के लिए मैपिंग बना सकता है।
nnoremap <silent> <leader>y :call setreg('"', MatchAround(@/), 'c')<cr>
function! MatchAround(pat)
let [sl, sc] = searchpos(a:pat, 'bcnW')
let [el, ec] = searchpos(a:pat, 'cenW')
let t = map(getline(sl ? sl : -1, el), 'v:val."\n"')
if len(t) > 0
let t[0] = t[0][sc-1:]
let ec -= len(t) == 1 ? sc-1 : 0
let t[-1] = t[-1][:matchend(t[-1], '.', ec-1)-1]
end
return join(t, '')
endfunction
समारोह ऊपर शुरू करने और मैच के समाप्त होने के पदों को निर्धारित करता है और ध्यान से मिलान पाठ बाहर ले जाता है, सही ढंग से बहु पैटर्न और multibyte वर्ण से निपटने।
दूसरा विकल्प टेक्स्ट ऑब्जेक्ट मैपिंग्स बनाने के लिए है (:help text-object
देखें) कर्सर के नीचे अंतिम खोज पैटर्न मिलान पर चल रहा है।
vnoremap <silent> i/ :<c-u>call SelectMatch()<cr>
onoremap <silent> i/ :call SelectMatch()<cr>
function! SelectMatch()
if search(@/, 'bcW')
norm! v
call search(@/, 'ceW')
else
norm! gv
endif
endfunction
इन मैपिंग का उपयोग कर मौजूदा मैच कॉपी करने के yi/
का उपयोग करें। अन्य पाठ ऑब्जेक्ट्स के लिए, उदाहरण के लिए, vi/
, का उपयोग करके इसे दृष्टि से चुनने के लिए या इसे di/
का उपयोग करके हटाएं।
स्रोत
2012-01-02 05:34:00
किसी को भी सवाल में रुचि हो सकती है "[वीआईएम में मिलान खोज पैटर्न हटाएं] (http://stackoverflow.com/q/7842333/254635)"। –
[यह प्रविष्टि] (http://vim.wikia.com/wiki/Copy_the_search_results_into_clipboard) विम टिप्स FAQ में इस विषय को शामिल किया गया है। – eckes