假设我正在重构一些文本,包括包含文本“log”的行。经过一些编辑后,我想粘贴日志行,但它现在在一些遥远的寄存器中。有没有办法搜索包含术语“log”的第一个寄存器并粘贴其内容?
答案 0 :(得分:1)
一种方法(虽然不是很方便)是将输出重定向到你不使用的寄存器,让我们说z。
:redir @z
列出注册表
:reg
将"z
的结果粘贴到某个缓冲区中,然后进行搜索。
你还必须在之后停止重定向。
:redir END
答案 1 :(得分:1)
以下应该做的工作:
function! SearchAndPasteReg()
let l:pattern = input('Reg search: ')
if l:pattern == '' | return | endif
for l:i in range(1, 9)
if match(eval('@'.l:i), l:pattern) != -1
execute printf('normal "%i]p', l:i)
return
endif
endfor
redraw | echo 'Pattern not found'
endf
nnoremap <silent> ]R :call SearchAndPasteReg()<cr>
我不确定您是在谈论编号寄存器还是所有寄存器。如果要搜索所有regs,只需使用包含所有所需寄存器名称的列表扩展范围,如下所示:
function! SearchAndPasteReg()
let l:pattern = input('Reg search: ')
if l:pattern == '' | return | endif
let l:regs = range(char2nr('1'), char2nr('9'))
call map(extend(l:regs, range(char2nr('a'), char2nr('z'))), 'nr2char(v:val)')
for l:reg in l:regs
if match(eval('@'.l:reg), l:pattern) != -1
execute printf('normal "%s]p', l:reg)
return
endif
endfor
redraw | echo 'Pattern not found'
endf
nnoremap <silent> ]R :call SearchAndPasteReg()<cr>
答案 2 :(得分:-1)
可能使用第三方插件,但您仍然可以使用:reg[isters]
命令查看所有寄存器的内容,或仅使用编号寄存器查看:reg 0123456789
。