Làm thế nào tôi có thể xóa một thanh ghi / nhiều thanh ghi hoàn toàn?


16

Tôi khá thường xuyên sử dụng các :registerslệnh để hiển thị nội dung của tất cả các thanh ghi (tôi quên những gì tôi đặt ở đâu, chính xác những gì vai trò của "*, "., "%, vv có).

Đặc biệt là vì tôi đã đặt "tùy chọn trong viminfotùy chọn và do đó các đăng ký của tôi vẫn tồn tại giữa các phiên vim của tôi (mà nói chung tôi muốn, trong thời gian ngắn), theo thời gian, :registersdanh sách ngày càng dài hơn, và do đó ngày càng cồng kềnh và đầy với những thứ thực sự cũ.

Cho đến nay, cách duy nhất tôi tìm thấy để khắc phục điều này là chỉnh sửa thủ công một số nội dung đăng ký 'cũ' ~/.viminfo, mà tôi cần phải làm vim -u NONEvà do đó hơi cồng kềnh.

Có cách nào sạch hơn để xóa tất cả các thanh ghi, hoặc xóa một thanh ghi cụ thể, để nó không còn xuất hiện trong :registersdanh sách?

Câu trả lời:


12

Nói tóm lại, không có cách nào sạch hơn để xóa sạch các thanh ghi hoàn toàn đến nỗi chúng biến mất khỏi đó :reg.

Thay vì lẩm bẩm xung quanh ~/.viminfo, tôi có xu hướng "mềm" đăng ký khi tôi thực sự và thực sự thực hiện với chúng bằng cách đặt chúng trống. aVí dụ, để xóa thanh ghi, tôi gõ qaqđể đặt thanh aghi thành một chuỗi trống. Tương đương, :let @a=''làm như vậy.

Sau đó, nhìn vào đầu ra :regvẫn hữu ích vì nó rất dễ phân biệt giữa các thanh ghi trống và các thanh ghi chứa. Mặt khác, tôi thấy rằng về cơ bản tất cả các thanh ghi có tên của tôi nằm ở hàng trên cùng (macro) hoặc hàng chính (những thứ dán hữu ích), và thậm chí sau đó tôi chỉ sử dụng khoảng 15 thanh ghi có tên.

Có một chủ đề trong danh sách gửi thư vim vài năm trước cũng kết luận rằng không có cách nào dễ dàng hơn để xóa sổ đăng ký.


5

Đối với những người muốn xoá tên đăng ký (nói a) từ :registersdanh sách, có một cách để làm điều đó ngay bây giờ. Chạy lệnh :call setreg('a', []).

Tôi đã tìm thấy câu hỏi này từ câu hỏi này trên StackOverflow từ người dùng @LucHermitte. Câu trả lời của ông chi tiết làm thế nào để xóa nhiều đăng ký. Nếu bạn muốn nhiệm vụ này trở nên siêu dễ dàng, hãy sáng tạo với .vimrc:)


3

Đặt cái này trong .vimrc:

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

và xóa mọi đăng ký với :WipeReg

Nếu bạn muốn điều đó xảy ra mỗi khi bạn bắt đầu, Vim cũng thêm:

autocmd VimEnter * WipeReg

1
Cảm ơn lệnh mặc dù nó không hoạt động với các thanh ghi chỉ đọc như ".,"%, ":," #
Ashok
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.