如何删除(不削减)在Vim?
如何删除一行而不将其放入我的默认缓冲区?
例:
line that will be copied. line that I want to be substitued with the previous one.
我在做什么:
yy dd p
但是Vim用删除(cutted)的replace最近复制的string。 我知道我可以使用像"1yy
, dd
然后"1p
缓冲区,但我总是忘记把复制的string放在一个缓冲区,然后我需要先粘贴我的内容(将被复制的行),然后删除我想要的(我想用前一行代替的行)。
如何删除Vi(m)中的文本而不复制它?
另一个相关的问题是我如何在插入模式下转发删除一个单词? 我想要类似于Ctrl + w的东西。
使用“黑洞登记”, "_
确实删除了一些东西: "_d
"_
"_d
。
使用"_dP
粘贴东西,并保持它可用于进一步粘贴。
对于第二个问题,你可以使用<Co>dw
。 <Co>
用于在离开插入模式时执行正常的命令。
当然,你可以设置自己的映射来保存input。 我有这些:
nnoremap <leader>d "_d vnoremap <leader>d "_d vnoremap <leader>p "_dP
黑洞登记册 "_
将会诀窍,但有一个更好的解决办法:
当你用p
命令input命令行时,你正在粘贴已被dd
覆盖的(volatile) 默认寄存器 ""
的内容。 但是你仍然可以从(非易失性的) 跳转寄存器 "0
粘贴 ,这不会被删除命令dd
覆盖。
所以这些就是你想要使用的命令:
yy dd "0p
这是我不喜欢vim的事情之一…我结束了映射dd
到我的.vimrc黑洞注册,生活一直很好,因为:
nnoremap d "_d vnoremap d "_d
你可以使用"_d
来防止你的文本被覆盖,你可以在任何你想要的寄存器中存储被抽取或删除的文本"
,而_
是“黑洞”寄存器,在那里你发送你不关心的东西。
有关更多信息,您可以键入:help "_
或:help deleting
下面的映射将会产生:
- d =>“删除”
- 领导d =>“削减”
nnoremap x "_x nnoremap d "_d nnoremap D "_D vnoremap d "_d nnoremap <leader>d ""d nnoremap <leader>D ""D vnoremap <leader>d ""d
此外,将“领导者”键设置为逗号是一个不错的做法,例如:
let mapleader = "," let g:mapleader = ","
这2个片段将使“d”成为你的新的命令。
如果您想使用这些映射与共享的系统剪贴板configuration,请参阅https://github.com/pazams/d-is-for-delete
yy Vx p
在可视模式下, x
将删除select,因此如果要删除整行,请先按V
在可视模式下select该行,然后按x
删除select。