Як я можу повністю очистити реєстр / кілька регістрів?


16

Я досить часто використовую :registersкоманду , щоб показати вміст всіх регістрів (я забув , що я ставлю , де саме то , що роль "*, "., "%і т.д.,).

Тим більше, що я встановив "опцію в viminfoопції, а отже, мої регістри зберігаються між моїми сеансами vim (що взагалі я хочу, в короткий термін), з часом :registersсписок стає все довшим і довшим, а отже, все більш громіздким і заповненим з справді старими речами.

Поки єдиний спосіб, який я вирішив це виправити, - це вручну редагувати частину «старого» вмісту реєстру, з ~/.viminfoякого мені потрібно займатися, vim -u NONEі, отже, трохи громіздко.

Чи є більш чистий спосіб стерти всі регістри або витерти певний регістр, щоб він більше не відображався у :registersсписку?

Відповіді:


12

Коротше кажучи, немає більш чистого способу, щоб витерти регістри настільки повністю, що вони зникають :reg.

Замість того, щоб розмовляти навколо ~/.viminfo, я схильний до "ядерних" регістрів, коли я справді і справді з ними роблю, встановлюючи їх порожніми. aНаприклад, для очищення реєстру, я, наприклад, ввожу qaqвстановити aпорожній рядок. Еквівалентно, :let @a=''робить те ж саме.

Тоді, дивлячись на результат виходу :reg, все ще корисно, тому що дуже легко розрізняти порожні регістри та містять регістри. З іншого боку, я вважаю, що по суті всі мої іменовані регістри лежать у верхньому рядку (макросі) або в головному рядку (корисні елементи вставки), і навіть тоді я використовував лише близько 15 названих реєстрів.

Кілька років тому в списку розсилки vim була нитка, яка також прийшла до висновку, що немає більш простого способу стерти регістри.


5

Для тих, хто хоче видалити ім’я регістра (скажімо, a) зі :registersсписку, є спосіб зробити це зараз. Виконайте команду :call setreg('a', []).

Я дізнався це з цього питання на StackOverflow від користувача @LucHermitte. У його відповіді детально описано, як очистити кілька регістрів. Якщо ви хочете, щоб це завдання було дуже простим, будьте творчі зі своїм .vimrc:)


3

Помістіть це у своєму .vimrc:

command! WipeReg for i in range(34,122) | silent! call setreg(nr2char(i), []) | endfor

і очистити кожен реєстр :WipeReg

Якщо ви хочете, щоб це сталося кожного разу при запуску Vim, також додайте:

autocmd VimEnter * WipeReg

1
Дякуємо за команду, хоча вона не працює з регістрами лише для читання на зразок ".,"%, ":," #
Ashok
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.