11

当我在 vim 中删除某些内容时,它会添加到编号的寄存器中。我拉出的最后一项在寄存器 0 中。如何让 vim 也自动记住最后 10 次拉出?


我试过YankRing,但它改变了太多的 vim 行为。这个问题的另一种说法:如何配置 YankRing,使其仅在粘贴后添加 Ctrl-n/Ctrl-p 行为(循环通过以前的 yank)?

我经常拉一个词,视觉选择另一个词,粘贴,视觉选择另一个词,粘贴。如果没有 YankRing,最后粘贴会放置第一个选定的单词。使用 YankRing,它会再次粘贴相同的单词。(这只是一个例子。)

这是我的一些 yankring 设置。如您所见,我查看了 YankRing 文档以禁用尽可能多的选项以恢复正常的 vim 行为。

" Some settings to try to get yank ring to not mess with default vim
" functionality so much.
let g:yankring_manage_numbered_reg = 0
let g:yankring_clipboard_monitor = 0
let g:yankring_paste_check_default_buffer = 0

" Don't let yankring use f, t, /. It doesn't record them properly in macros
" and that's my most common use. Yankring also blocks macros of macros (it
" prompts for the macro register), but removing @ doesn't fix that :(
let g:yankring_zap_keys = ''

" Disable yankring for regular p/P. This preserves vim's normal behavior, but
" I can still use C-p/C-n to cycle through yankring.
let g:yankring_paste_n_bkey = ''
let g:yankring_paste_n_akey = ''
let g:yankring_paste_v_key = ''
4

4 回答 4

14

你可以试试插件 yankstack:一个轻量级的 Vim 的 Emacs 'kill ring' 实现

它的描述说“这个插件旨在成为 yankring 插件的更简单的替代品”。

于 2012-02-09T17:35:44.377 回答
5

您可以使用该"命令指定一个用于拉取的寄存器。来自:help quote

                                                        *quote*
"{a-zA-Z0-9.%#:-"}      Use register {a-zA-Z0-9.%#:-"} for next delete, yank
                        or put (use uppercase character to append with
                        delete and yank) ({.%#:} only work with put).
于 2012-02-06T21:42:33.320 回答
1

原来有未记录的选项(我通过键入找到:echo g:yankring_paste_<Tab>)。

let g:yankring_paste_v_bkey = ''
let g:yankring_paste_v_akey = ''

现在我的 yank,visual paste,visual paste 可以按预期工作。(我们会看看是否有其他位会改变默认的 vim 行为。)

于 2012-02-06T21:44:44.513 回答
1

您可以d<movement>P在正常模式下进行操作,它将删除然后粘贴您刚刚删除的内容,如果您移动一行或更多行,编号的寄存器也会移动。

于 2017-10-24T18:19:34.990 回答