Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 我怎样才能让维姆记住过去的美国佬?(或者将YankRing配置为执行更少的操作。)_Vim_Yank - Fatal编程技术网

Vim 我怎样才能让维姆记住过去的美国佬?(或者将YankRing配置为执行更少的操作。)

Vim 我怎样才能让维姆记住过去的美国佬?(或者将YankRing配置为执行更少的操作。),vim,yank,Vim,Yank,当我在vim中删除某些内容时,它会添加到编号的寄存器中。我拉的最后一项在寄存器0中。我怎样才能让维姆也自动记住最后10次美国佬 我试过了,但它改变了vim的很多行为。这个问题的另一种说法是:如何配置YankRing,使其仅在粘贴后添加Ctrl-n/Ctrl-p行为(以循环使用以前的yanks) 我经常猛拉一个词,视觉选择另一个词,粘贴,视觉选择另一个词,粘贴。如果没有YankRing,最后一次粘贴将放置第一个选定单词。使用YankRing,它会再次粘贴相同的单词。(这只是一个例子。) 这里是我

当我在vim中删除某些内容时,它会添加到编号的寄存器中。我拉的最后一项在寄存器0中。我怎样才能让维姆也自动记住最后10次美国佬


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

我经常猛拉一个词,视觉选择另一个词,粘贴,视觉选择另一个词,粘贴。如果没有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 = ''
您可以使用“命令”来指定用于拖动的寄存器。从
: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).

结果是有一些未记录的选项(我通过键入
:echo g:yankring\u paste\u
找到)

现在,我的yank,VisualPaste,VisualPaste按预期工作。(我们将查看是否有其他位更改默认vim行为。)

您可以尝试


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

您可以在正常模式下执行
dP
,它将删除并粘贴您刚刚删除的内容,如果您移动一行或多行,加上编号的寄存器将移位。

而这在我提到的一种情况下有效,vim的def错误行为不会被恢复。而且,我必须在每个yank命令之前键入“Ok”。我对扬克林一无所知,所以我只是回答了你问题的第一部分。啊,好的。澄清问题:我希望它是自动的,能够记住很多美国佬。我也停止使用yankring,因为我觉得它会弄乱一些我喜欢的vim默认设置。只要有ctrl-n/ctrl-p就好了,但现在我也开始使用ctrlp插件,这可能会与yankring冲突。@skeept:为什么不更改ctrlp映射?我这样做了,我同时使用yankstack和CtrlP。如果您仍然感兴趣,它还会以干扰repeat.vim工作的方式弄乱“.”命令。而且,如果我没记错的话,它会重新映射。除此之外,我没有做更多的探索。第一个问题足以让我改用yankstack。虽然我多年来一直使用并喜欢yankstack(感谢您的推荐!),但我现在更喜欢unite.vim history/yank source(neoyank.vim),它可以轮询您的注册表,而不是重新映射密钥。@idbrii很高兴知道,我也已经停止使用yankstack了。我会检查unite.vim——实际上,使用Denite.nvim可能更好。
let g:yankring_paste_v_bkey = ''
let g:yankring_paste_v_akey = ''