Bagaimana saya bisa menghapus register / banyak register sepenuhnya?

16

Saya cukup sering menggunakan :registersperintah untuk menampilkan isi dari semua register (saya lupa apa yang saya menempatkan di mana, apa peran "*, "., "%, dll).

Terutama karena saya mengatur "opsi dalam viminfoopsi, dan karenanya register saya bertahan di antara sesi vim saya (yang secara umum saya inginkan, dalam jangka pendek), dari waktu ke waktu :registersdaftar menjadi lebih lama dan lebih lama, dan karenanya semakin rumit dan diisi dengan barang yang sangat tua.

Sejauh ini, satu-satunya cara saya menemukan cara untuk memperbaikinya adalah dengan mengedit secara manual beberapa isi register 'lama' ~/.viminfo, yang perlu saya lakukan vim -u NONEdan karenanya sedikit rumit.

Apakah ada cara yang lebih bersih untuk menghapus semua register, atau menghapus register tertentu, sehingga tidak lagi muncul dalam :registersdaftar?

Andrew Ferrier
sumber

Jawaban:

12

Singkatnya, tidak ada cara yang lebih bersih untuk menghapus register sedemikian rupa sehingga mereka menghilang :reg.

Daripada bergurau dengan ~/.viminfo, saya cenderung "softclear" register ketika saya benar-benar dan benar-benar selesai dengan mereka dengan mengatur mereka menjadi kosong. Untuk menghapus aregister, misalnya, saya mengetik qaquntuk mengatur aregister ke string kosong. Setara, :let @a=''melakukan hal yang sama.

Kemudian, melihat output dari :regmasih membantu karena sangat mudah untuk membedakan antara register kosong dan register yang ada. Di sisi lain, saya menemukan bahwa pada dasarnya semua register bernama saya terletak di baris atas (makro) atau baris utama (hal-hal yang berguna tempel), dan bahkan kemudian saya hanya menggunakan sekitar 15 register bernama.

Ada utas di milis vim beberapa tahun yang lalu yang juga menyimpulkan bahwa tidak ada cara yang lebih mudah untuk menghapus register.

davidlowryduda
sumber
5

Bagi mereka yang ingin menghapus nama register (mengatakan, a) dari :registersdaftar, ada adalah cara untuk melakukannya sekarang. Jalankan perintah :call setreg('a', []).

Saya menemukan ini dari pertanyaan ini di StackOverflow dari pengguna @LucHermitte. Jawabannya merinci cara menghapus banyak register. Jika Anda ingin tugas ini menjadi sangat mudah, berkreasi dengan .vimrc:) Anda

Jason Cemra
sumber
3

Letakkan ini di .vimrc:

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

dan hapus setiap register dengan :WipeReg

Jika Anda ingin itu terjadi setiap kali Anda memulai Vim, tambahkan juga:

autocmd VimEnter * WipeReg
laktak
sumber
1
Terima kasih atas perintahnya meskipun tidak berfungsi dengan register read-only seperti ".,"%, ":," #
Ashok