如何删除(不切)在Vim中?(How to delete (not cut) in Vim?)

2019-07-31 01:44发布

如何删除不把它变成我的默认缓冲区一条线吗?

例:

line that will be copied.

line that I want to be substitued with the previous one.

我想要做的事:

yy
dd
p

但是Vim的替代近期字符串复制与删除的(板缺)之一。 我知道,我可以使用缓冲区像, "1yydd"1p ,但我总是忘了把复制的字符串中的一个缓冲区,然后我需要先(将要复制线)贴我的内容,然后删除我想要什么(线,我想与先前一个被取代。)

我怎样才能真正删除不复制它在六(米)的文本?

另一个相关的问题是我怎么能转发删除插入模式句话吗? 我想类似Ctrl + W的东西。

Answer 1:

使用“黑洞寄存器”, "_真正删除的内容: "_d
使用"_dP粘贴的东西,把它用于进一步的粘贴。

对于第二个问题,你可以使用<Co>dw<Co>用于wothout离开插入模式执行一个正常的命令。

你可以设置自己的映射,以节省当然打字。 我有这些:

nnoremap <leader>d "_d
xnoremap <leader>d "_d
xnoremap <leader>p "_dP


Answer 2:

黑洞寄存器 "_会做的伎俩,但有一个更好的解决方案:

当你进入线回来的p要粘贴的(挥发性) 默认的内容命令寄存器 "" ,这已被覆盖dd 。 但是,你仍然可以从(非易失性)粘贴抽出登记 "0这将不会被删除命令覆盖dd

因此,这些都是你希望按你的例子​​使用的命令:

yy
dd
"0p


Answer 3:

这就是我不喜欢有关VIM的东西之一......我最终映射dd黑洞寄存器在我的vimrc,自生活一直很好:

nnoremap d "_d
vnoremap d "_d


Answer 4:

以下映射会产生:

  • 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”是您新的剪切命令。

如果您想togther使用这些映射与共享系统剪贴板配置,请参阅进一步的细节https://github.com/pazams/d-is-for-delete



Answer 5:

你可以用"_d防止事情覆盖你抽出文本。你可以存储猛拉或在任何注册,你想删除的文字" ,而_是“黑洞”注册,在那里你送,你不关心的东西。

欲了解更多信息,您可以键入:help "_:help deleting



Answer 6:

yy
Vx
p

当视觉模式, x将删除选择,所以如果你想删除一整行,先按下V选择在视觉模式下的行,然后按x删除选区。



文章来源: How to delete (not cut) in Vim?