Как я могу заставить Vim вспомнить прошлые янки?(Или настройте YankRing на меньшее.) - PullRequest
11 голосов
/ 07 февраля 2012

Когда я удаляю что-то в vim, оно добавляется в пронумерованные регистры. Последний элемент, который я набрал, находится в регистре 0. Как я могу получить vim для автоматического запоминания последних 10 элементов?


Я пробовал YankRing , но это слишком сильно меняет поведение vim. Альтернативная формулировка этого вопроса: Как я могу настроить YankRing, чтобы он только добавлял поведение Ctrl-n / Ctrl-p после вставки (для циклического переключения между предыдущими янки)?

Я часто дергаю слово, визуально выбираю другое слово, вставляю, визуально выбираю другое слово, вставляю. Без 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 ]

14 голосов
/ 09 февраля 2012

Вы можете попробовать плагин yankstack: облегченная реализация Emacs 'kill ring' для Vim .

В его описании говорится, что «Этот плагин предназначен для более простой альтернативы плагину yankring».

5 голосов
/ 07 февраля 2012

Вы можете использовать команду ", чтобы указать регистр для восстановления. От :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).
1 голос
/ 07 февраля 2012

Оказывается, есть недокументированные параметры (я нашел, набрав :echo g:yankring_paste_<Tab>).

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

Теперь мой янки, визуальная вставка, визуальная вставка работает, как ожидалось.(Посмотрим, есть ли другие биты, которые изменяют поведение vim по умолчанию.)

0 голосов
/ 24 октября 2017

Вы можете просто сделать d<movement>P в обычном режиме, и он удалит, а затем вставит то, что вы только что удалили, плюс нумерованные регистры будут сдвинуты, если вы переместите строку или больше.

...