Cas*_*bel 125
我想通过"粘贴"你的意思是未命名的(yank/put/change/delete/substitute)寄存器,对吧?(因为那是被改变命令覆盖的那个.)
寄存器通常通过键入指定"则寄存器的名称(单个字符),像"ay然后"ap以粘贴到寄存器a,然后把寄存器的内容a.更改命令也是如此.在这种情况下,如果您不希望使用change命令删除的文本去任何地方,可以使用黑洞寄存器"_: "_cw.然后,在插入模式下,您可以按ctrl-R,然后按下您想要的寄存器(可能")放入该寄存器的内容.
"* - 选择寄存器(中键粘贴)"+ - 剪贴板寄存器(也可通过终端使用ctrl-shift-v访问)"" - vim的默认(未命名)yank/put/change/delete/substitute寄存器.简短回答: "_cw^R"
编辑:正如其他人所建议的那样,你当然可以使用不同的注册表来获取将你的文本放入默认寄存器的yank(或其他).但是,你并不总是首先想到这一点,所以做一个单一的更改命令而不是把它吹掉是很好的.虽然它并没有完全被吹走.有编号的寄存器"0通过"9:
Vim用来自yank和delete命令的文本填充这些寄存器.
编号寄存器0包含最近的yank命令中的文本,除非命令指定了另一个带有["x]的寄存器.
编号寄存器1包含最近删除或更改命令删除的文本,除非命令指定另一个寄存器或文本少于一行(然后使用小删除寄存器).:一个例外是delete运算符与这些移动命令作出
%,(,),`,/,?,n,N,{和}.然后使用寄存器"1"(这是Vi兼容).如果删除在一行内,也使用" - 寄存器".随着每次连续删除或改变,Vim将寄存器1的先前内容移位到寄存器2,2中为3,依此类推,丢失寄存器9的先前内容.
ost*_*r.c 47
使用这篇文章中的信息,我已经形成了这个有用的映射.我选择'cp'是因为它表示"更改粘贴"
nmap <silent> cp "_cw<C-R>"<Esc>
编辑:
此外,我更进了一步并支持任何动议.
为了得到上面命令的等价物,它将cpw用于"更改粘贴词"
"This allows for change paste motion cp{motion}
nmap <silent> cp :set opfunc=ChangePaste<CR>g@
function! ChangePaste(type, ...)
silent exe "normal! `[v`]\"_c"
silent exe "normal! p"
endfunction
Run Code Online (Sandbox Code Playgroud)
Tra*_*utt 22
如果光标位于要替换为未命名寄存器内容的单词上,则可以使用viwp.v切换到可视模式,iw选择内部单词,p并将寄存器的内容放在其位置.
在实践中,当我需要将一个单词(函数名称等)替换为另一个单词时,我将移动到一个用作替换yiw的单词,将内部单词拉到未命名的寄存器,然后移到单词I' m替换,并viwp替换它.用一个词代替另一个词的快速方法.如果你搜索(/)你正在替换它的单词,那么你可以点击n以进入你需要替换的下一个事件.显然没有替代使用:%s/find/replace/g,但对于几个快速替换它可以很方便,特别是如果你已经在寄存器中有新单词.
如果您使用命名寄存器(即使用"ay或"ad等等来填充您的粘贴寄存器),您可以执行类似的操作
cw<CTRL-R>a<esc>
这将用寄存器的内容替换该字a.据我所知,您不能使用默认寄存器,因为当您cw填充该命令所切断的单词时.