2012-02-06 19 views
10

Quando elimino qualcosa in vim, viene aggiunto ai registri numerati. L'ultimo oggetto che ho tirato è nel registro 0. Come posso convincere automaticamente a ricordare anche gli ultimi 10 yan?Come posso fare in modo che ricordi gli yan passati? (O configurare YankRing per fare meno.)


Ho provato YankRing, ma cambia troppo di comportamento vim. Un fraseggio alternativo di questa domanda: come posso configurare YankRing in modo che aggiunga solo il comportamento Ctrl-n/Ctrl-p dopo aver incollato (per scorrere gli yank precedenti)?

Spesso ho una parola, seleziona un'altra parola, incolla, seleziona un'altra parola, incolla. Senza YankRing, l'ultima incolla inserisce la prima parola selezionata. Con YankRing, incolla di nuovo la stessa parola. (Questo è solo un esempio.)

Ecco alcune delle impostazioni del mio yankring. Come puoi vedere, ho esaminato i documenti di YankRing per disabilitare quante più opzioni possibile per ripristinare il normale comportamento di 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

Ho anche smesso di usare lo yankring perché sentivo che mi dava fastidio con alcune impostazioni predefinite di vim che mi piacciono. Sarebbe bello avere il ctrl-n/ctrl-p, ma ora ho anche iniziato a usare il plugin ctrlp in modo che probabilmente sarebbe in conflitto con lo yankring. – skeept

+0

@skeept: Perché non cambi la mappa di CtrlP? L'ho fatto e uso insieme yankstack e CtrlP. – idbrii

risposta

13

Si potrebbe provare plugin yankstack: a lightweight implementation of the Emacs ‘kill ring’ for Vim.

La sua descrizione afferma che "Questo plug-in è pensato per essere un'alternativa più semplice al plugin per lo yankring".

+0

Mentre io usavo e mi piaceva yankstack per anni (grazie per la raccomandazione!), ora preferisco la storia di unite.vim/yank source (neoyank.vim) che esegue il polling dei tuoi registri invece di rimappare le chiavi. – idbrii

+0

@idbrii buono a sapersi, ho anche smesso di usare yankstack. Controllerò unite.vim - in realtà [il suo gitub] (https://github.com/shougo/unite.vim) potrebbe essere meglio usare Denite.nvim. – mMontu

5

È possibile utilizzare il comando " per specificare un registro per tirando Da :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

Mentre funziona in un caso che ho menzionato, il comportamento predefinito di vim non viene ripristinato. Inoltre, dovrei digitare "prima di ogni comando di yank – idbrii

+0

Ok. Non so nulla di YankRing, quindi stavo solo rispondendo alla prima parte della tua domanda –

+0

Ah, ok Domanda chiarita: lo voglio essere automatico e ricordare un sacco di yanks – idbrii

1

Risulta ci sono opzioni non documentate (ho trovato digitando :echo g:yankring_paste_<Tab>)

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

Ora il mio strattone, la pasta visiva, la pasta visiva funziona come previsto. (Vedremo se ci sono altri bit che cha nge comportamento predefinito di vim.)

+0

Se sei ancora interessato, anche il "." comando in un modo che interferisce con il funzionamento di repeat.vim. Inoltre, se non ricordo male, rimappa . Non ho esplorato molto oltre.Il primo problema era sufficiente per farmi passare a Yankstack – kshenoy

0

Si può semplicemente fare d<movement>P in modalità normale e si cancellerà e quindi incollerà ciò che si è appena cancellato, più i registri numerati si spostano se si sposta una linea o più.

Problemi correlati