VIM将字replace为粘贴缓冲区的内容?
我需要在文件中做一堆字replace,并且想用vi命令来做,而不是EX命令,例如:%s///g
。 我知道这是在当前光标位置replace单词的典型方法: cw<text><esc>
但是有没有办法以未命名的寄存器的内容作为replace文本并且不覆盖寄存器?
我想通过“粘贴”你的意思是未命名(YANK / put / change / delete / substitute)寄存器,对吗? (因为这是被改变命令覆盖的那个)
寄存器通常是通过键入"
然后input寄存器的名字(单个字符) "
来指定的,比如"ay
then "ap
将其放入寄存器a
,然后放入寄存器a
的内容。你不希望你使用change命令去掉的文本去任何地方,你可以使用黑洞寄存器"_
: "_cw
"_
"_cw
。然后一旦在插入模式下,你可以点击ctrl-R后跟你想要的寄存器"
)放入该登记册的内容。
-
"*
– select注册(中间button粘贴) -
"+
– 剪贴板寄存器(也可以通过terminal通过ctrl-shift-v访问) -
""
– vim的默认(未命名)放/放/改/删除/replace寄存器。
简短的回答: "_cw^R"
编辑:如其他人所build议的,你当然可以使用不同的寄存器来将你的文本写入默认寄存器。 但是,不要总是首先想到这一点,因此,一个单独的更改命令不会被吹走是很好的。 尽pipe它并没有被完全吹走。 有编号的寄存器"0
到"9
:
Vim使用yank和delete命令填充这些寄存器。
编号寄存器0包含来自最近的yank命令的文本,除非该命令用[“x”指定了另一个寄存器。
编号寄存器1包含最近删除或更改命令删除的文本,除非该命令指定了另一个寄存器或文本less于一行(那么使用小的删除寄存器)。 用这些移动命令删除操作符是个例外:
%
,(
,)
,`
,/
?
,n
,N
,{
和}
。 寄存器“总是使用1(这是与Vi兼容的),” – 寄存器也用于删除在一行内。随着每次连续的删除或更改,Vim将寄存器1的前一个内容转换为寄存器2,2转换为3,依此类推,丢失寄存器9的前一个内容。
使用这篇文章中的信息,我已经形成了这个有用的映射。 我select“cp”是因为它表示“更改粘贴”
nmap <silent> cp "_cw<CR>"<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
你可以使用vim的可视化模式。 例如复制一个词:然后用复制的词vep
覆盖另一个词
如果光标位于要replace未命名寄存器内容的单词上,则可以使用viwp
。 v
切换到可视模式, iw
select内部字,并且p
将寄存器的内容放置在其位置。
在实践中,当我需要用另一个字(函数名等)replace一个字时,我将移动到用来replace的字, yiw
将内部字延伸到未命名的寄存器,然后移动到单词Ireplace,并viwp
来取代它。 用一个词代替另一个词的快速方法。 如果你search了( /
)你要replace的单词,那么你可以直接点击n
来到下一个需要replace的地方。 很明显,使用:%s/find/replace/g
不可替代的,但是对于几个快速replace,它可以很方便,特别是如果你已经在寄存器中有新的字。
如果您使用了一个已命名的registry(即使用"ay
或"ad
等填充您的粘贴registry),您可以执行类似
cw<CTRL-R>a<esc>
这将用寄存器a
的内容replace该单词。 据我所知,你不能使用默认的寄存器,因为当你连接的时候,它会被这个命令切断的单词填满。
你的意思是系统粘贴缓冲区还是vi寄存器?
如果你想使用系统粘贴缓冲区,那么你很好,可以做dw"+P
– "
select一个寄存器, "+
是系统粘贴缓冲区。
否则,复制到非默认的寄存器中,说"ay
复制到寄存器a
,然后replacedw"aP
某个东西dw"aP
你可以使用寄存器:
首先将replace文本放在registry中<mark some text>"ay
其中a
是注册名称
那么你可以使用该寄存器替代
ve"ap
或者你可以做Shift + v – p (select整行并粘贴到它的位置)
你可以使用yw
来抽出单词,然后你可以通过vipw
来改变单词与被抽出的单词来抽出单词并粘贴以前抽出的单词。