如何在vim的剪贴板中剪切然后粘贴之前的项目?

时间:2018-04-12 16:20:52

标签: vim

在vim中,我将字符串ABCD复制到剪贴板中。现在我想通过 c-e 替换文本段落中的某些单词(这会删除并立即将我置于插入模式)。但是当我粘贴它时,它将粘贴我刚刚切割的东西覆盖我的ABCD。

我想出的一个解决方案是:

c-e 

ctrl-o

"0P

但这似乎太长了。有更快的替代方案吗?

4 个答案:

答案 0 :(得分:3)

复制字符串时,将光标放在字符串的开头,然后键入

  

" ayw的

其中" a 表示注册表的名称(类似于存储空间), yw 表示将单词复制(yank)到该寄存器中。 共有26个寄存器,每个字母对应一个字母。

如果要粘贴内容,请键入

  

" AP

其中 p 表示要粘贴。然后使用vim repeat命令重复上一个操作 您可以将字符串存储在不同的寄存器中,并随时粘贴它们。 设置所有寄存器类型的内容

  

:REG

有关更多信息,请转到

Vim registers: The basics and beyond

Vim tips and tricks

{{3}}

答案 1 :(得分:1)

你最后抽出的东西总是在注册0中提供,所以,在你的情况下,你只需要这样做:

<C-e><C-r>0<Esc>

请参阅:help i_ctrl-r

但是,对于一次性投注,有一种更简单的方式:

vep

或者,如果您需要多次进行这些更改:

ve"0p

答案 2 :(得分:1)

使用“冲压”方法;这使您可以保持正常模式,只需一次按键。添加此映射:

nnoremap S diw"0P

然后按S以“标记”光标所在的任何字词以及您所拉的内容。
所以,完整例程的一个例子:

1. ye
2. <move cursor over the word you wish to replace with the yank>
3. S 

当然,如果使用S,请选择其他内容,例如ww。 这是一种众所周知的方法;有关变体和详细信息,请参阅此文档:http://vim.wikia.com/wiki/Replace_a_word_with_yanked_text

答案 3 :(得分:0)

您可以使用yankstack,这简化了您的使用案例。 这样可以在粘贴时轻松地对抗yank缓冲区。 我亲自将密钥重新映射到空间(我的领导密钥)。

以下是我.vimrc的摘录:

if &runtimepath =~ 'vim-yankstack'
 let g:yankstack_map_keys = 0
 nmap <leader>p <Plug>yankstack_substitute_older_paste
 nmap <leader>P <Plug>yankstack_substitute_newer_paste
endif

在您的情况下,您只需在粘贴文本后右键按空格键。这将替换粘贴到缓冲区中最后一个条目的单词。如果你需要深入了解历史,你可以重复压缩空间。