Grep而不将搜索存储到";/在Vim中注册

Grep而不将搜索存储到";/在Vim中注册,vim,grep,cpu-registers,Vim,Grep,Cpu Registers,在my.vimrc中,我有一个映射,使一行文本“标题大写”: noremap <Leader>at :s/\v<(.)(\w{2,})/\u\1\L\2/g<CR> 将成功执行替换,而无需将搜索的文本存储到/寄存器中。经过一些快速实验,我认为没有办法不将最后一次搜索存储在/寄存器中。但是,您可以创建一个函数,该函数在执行替换之前保存/寄存器的值,然后再将其恢复 e、 g noremap地址:call CapTitle() 功能!字幕() 让l:prev_searc

在my
.vimrc
中,我有一个映射,使一行文本“标题大写”:

noremap <Leader>at :s/\v<(.)(\w{2,})/\u\1\L\2/g<CR>

将成功执行替换,而无需将搜索的文本存储到
/
寄存器中。

经过一些快速实验,我认为没有办法不将最后一次搜索存储在
/
寄存器中。但是,您可以创建一个函数,该函数在执行替换之前保存
/
寄存器的值,然后再将其恢复

e、 g

noremap地址:call CapTitle()
功能!字幕()
让l:prev_search=@/

调用setline(line('.')、substitute(getline('.')、'\v实际上,如果您只是将映射设置为
调用
行,则搜索不会存储在寄存器中!
noremap <Leader>at :call setline(line('.'),substitute(getline('.'), '\v<(.)(\w{2,})', '\u\1\L\2', 'g'))<CR>
noremap <Leader>at :call CapTitle()<cr>

function! CapTitle()
  let l:prev_search = @/
  call setline(line('.'),substitute(getline('.'), '\v<(.)(\w{2,})', '\u\1\L\2', 'g'))
  let @/ = l:prev_search
endfunction