我想将< c-h> 映射到活动缓冲区中轻松“替换”
现在我有这样的事情:
" <c-h> Replacement
noremap <c-h> :%s/<c-R><c-W>//g<left><left>
inoremap <c-h> <esc>:%s/<c-R><c-W>//g<left><left>
vnoremap <c-h> gv:%s/<c-R><c-W>//g<left><left>
问题是:
无论如何都要做类似的事情:
inoremap <c-h> <esc>:%s/\=escapechars(<c-R><c-W>)}//g<left><left>
答案 0 :(得分:2)
我有这个功能:
function! GetVisualSelection()
let old_reg = @v
normal! gv"vy
let raw_search = @v
let @v = old_reg
return substitute(escape(raw_search, '\/.*$^~[]'), "\n", '\\n', "g")
endfunction
你可以这样使用:
xnoremap <c-h> :<C-u>%s/<C-r>=GetVisualSelection()<CR>//g<left><left>
&#34;逃避&#34;部分可以被提取到它自己的函数中:
function! Escape(stuff)
return substitute(escape(a:stuff, '\/.*$^~[]'), "\n", '\\n', "g")
endfunction
你可以这样使用:
nnoremap <c-h> :<C-u>%s/<C-r>=Escape(expand('<cword>'))<CR>//g<left><left>
inoremap <c-h> <esc>:%s/<C-r>=Escape(expand('<cword>'))<CR>//g<left><left>