2012-02-06 73 views
10

當我在vim中刪除某些東西時,它被添加到編號的寄存器中。我抽出的最後一個項目在寄存器0中。我怎樣才能讓vim自動記住最後10個抽屜呢?我該如何讓vim記得過去的yanks? (或者配置YankRing做更少。)


我試過YankRing,但它改變了太多的vim的行爲。這個問題的另一種措辭:如何配置YankRing,以便粘貼後只添加Ctrl-n/Ctrl-p行爲(循環前面的跳轉)?

我經常拷貝一個單詞,視覺選擇另一個字,粘貼,可視選擇另一個字,粘貼。沒有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 = '' 
+0

我也停止使用yankring,因爲我覺得它搞亂了我喜歡的一些vim默認設置。如果有ctrl-n/ctrl-p會很好,但現在我也開始使用ctrlp插件,這樣可能會與yankring發生衝突。 – skeept 2012-02-06 23:09:05

+0

@skeept:你爲什麼不改變CtrlP地圖?我做到了,我一起使用yankstack和CtrlP。 – idbrii 2012-07-28 02:07:01

回答

13

你可以嘗試plugin yankstack: a lightweight implementation of the Emacs ‘kill ring’ for Vim

它的描述指出「這個插件旨在是對yankring插件一個簡單的替代方法」。

+0

yankstack多年(感謝您的推薦!),我現在更喜歡unite.vim history/yank source(neoyank.vim),它輪詢您的註冊表而不是重新映射密鑰 – idbrii 2017-11-15 21:41:04

+0

@idbrii很好的知道,我也停止使用yankstack。我將檢查unite.vim - 實際上[它的github](https://github.com/shougo/unite.vim)使用Denite.nvim可能會更好。 – mMontu 2017-11-16 15:42:43

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). 
+0

雖然這在我提到的一種情況下起作用,但vim的默認行爲並未恢復。此外,我不得不每天抽出命令之前,鍵入「 – idbrii 2012-02-06 21:45:22

+0

好吧,我不知道什麼YankRing,所以我只是回答你的問題的第一部分 – 2012-02-06 21:49:14

+0

啊,好澄清的問題:。我希望它是自動的,並記住大量的猛拉。 – idbrii 2012-02-06 21:52:01

1

原來有無證選項(我發現通過鍵入:echo g:yankring_paste_<Tab>

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

現在我可以按照預期的方式使用可視粘貼,可視粘貼(我們會看看是否還有其他位NGE vim默認行爲。)

+0

如果你仍然感興趣,它也會混淆''。在與repeat.vim的工作干擾。另外,如果我沒有記錯的方式命令,它重新映射。 沒有探索遠遠超出這一點。雖然我使用和喜歡的第一個問題就足以讓我切換到yankstack – kshenoy 2012-03-10 06:52:48

0

你可以做d<movement>P在正常模式下,它會刪除,然後粘貼您剛剛刪除的東西,再加上如果要移動線以上編號的寄存器得到轉移。

相關問題