我爱vim,但一个常见的问题是:
显然工作流程首先是删除,然后是第二个.但是,如果我没有这将是reeeeeaaaaaalllly不错有来.有人有这个诀窍吗?vim是否有一个运行良好的粘贴缓冲区,或者我可以更改.vimrc设置吗?
das*_*ang 301
传递到_寄存器,黑洞.
要删除一行而不将其粘贴在寄存器中:
"_dd
Run Code Online (Sandbox Code Playgroud)
它可能是最安全的,如果你想要反复粘贴一些东西,把它拉到一个"命名"寄存器中.
"aY
Run Code Online (Sandbox Code Playgroud)
在a登记册中划线.粘贴它"ap.
mb1*_*b14 170
你的猛拉线应该仍然在寄存器0中.所以
"0p
Run Code Online (Sandbox Code Playgroud)
粘贴该行(并随时删除)
Way*_*ett 87
默认情况下,所有yank和delete操作都会写入未命名的寄存器.但是,最近的删除和最近的删除始终(单独)存储在编号的寄存器中.该登记册0持有最近的一次猛拉.寄存器1-9保存最近的9个删除(最近的删除1).
换句话说,删除会覆盖未命名寄存器中最近的一个yank,但它仍然存在于0寄存器中."_dd其他答案中提到的黑洞寄存器技巧()可以工作,因为它可以防止覆盖未命名的寄存器,但这不是必需的.
您使用双引号引用寄存器,因此粘贴最近被拉出的文本可以这样做:
"0p
Run Code Online (Sandbox Code Playgroud)
这是一个很好的参考:
kni*_*ttl 39
另一种可能性是:
像往常一样猛拉你的线条
转到要粘贴它们的位置,进入可视线模式(V)
选择要替换的行
点击p粘贴你的线条.
这也有额外的好处,缓冲区与被替换的内容"交换"
Jör*_*ann 23
我使用以下映射使删除黑洞寄存器更容易:
nnoremap R "_d
Run Code Online (Sandbox Code Playgroud)
这样一来,dd变得Rd和d$变R$.注意,R通常绑定进入替换模式,但我发现我从未使用过,因此最容易记住"真正删除"功能的密钥.
" map paste, yank and delete to named register so the content
" will not be overwritten
nnoremap d "xd
vnoremap d "xd
nnoremap y "xy
vnoremap y "xy
nnoremap p "xp
vnoremap p "xp
Run Code Online (Sandbox Code Playgroud)
小智 5
我写了这个插件(yankstack.vim)来解决这个问题.它为你提供了像Emacs的杀戮戒指一样的东西.您可以抽取或删除多个内容,执行粘贴,然后在您的已删除/已删除文本的历史记录中来回循环.我发现它更容易记住我把东西塞进去的寄存器.
在我的.vimrc中,我有这些映射:
nmap <M-p> <Plug>yankstack_substitute_older_paste
nmap <M-P> <Plug>yankstack_substitute_newer_paste
Run Code Online (Sandbox Code Playgroud)
让我点击ALT-p或ALT-SHIFT-p来循环我的粘贴历史记录.