lịch sử cắt và dán vim


60

Khi tôi 'cắt' trong vim, tôi tin rằng có những thanh ghi lưu giữ lịch sử của tất cả những thứ gần đây tôi đã cắt. Làm thế nào để tôi truy cập vào các thanh ghi?

Ví dụ: giả sử tôi cắt từng từ một trong những từ này liên tiếp

  • 'Xin chào'
  • 'Thế giới'
  • 'Và'
  • 'Vim'

Lưu ý rằng tôi không thực sự lưu các chỉnh sửa này vào các thanh ghi cụ thể, tôi chỉ sử dụng bốn lần liên tiếp.

Câu trả lời:


102

Các

: đăng ký trợ giúp

lệnh cho thấy có 10 thanh ghi được đánh số ( "0to "9).

Đăng ký "0là điều gần đây nhất kéo theo ; đăng ký "1có văn bản bị xóa gần đây nhất , đăng ký "2xóa trước đó, "3có xóa trước đó, và như vậy.

Nếu bạn xóa từng dòng lần lượt, đăng ký "1, "2, "3"4sẽ chứa "Vim", "Và", "Thế giới" & "Hello", tương ứng.

Bạn có thể xác minh điều này bằng cách sử dụng lệnh :reg(hoặc :registers):

:reg
""   Vim^J
"1   Vim^J
"2   And^J
"3   World^J
"4   Hello^J

Vì vậy, sau khi xóa bốn dòng một lần, bạn có thể khôi phục dòng thứ 2 ("Thế giới") bằng

"3p

bởi vì đó là lần xóa thứ ba gần đây nhất.


Đây là hoàn hảo; tuy nhiên, những gì tôi muốn văn bản 'yoped' gần đây nhất?
Alexey

Vì vậy, bạn sẽ sử dụng: p (có nghĩa giống như "0p)
njd

1
Cũng chú ý đến các thanh ghi đặc biệt, đặc biệt là "*" và "+", khi bạn đọc :help registers. Rất hữu ích.
Daniel Andersson

3
Các vị thần, bạn học được điều gì đó mới mỗi ngày như một vimmer. Thật tuyệt vời. Cảm ơn, @njd.
ELLIOTTCABLE

3
Câu trả lời này để lại một chi tiết quan trọng: Chỉ xóa một dòng hoặc nhiều hơn được lưu trữ trong lịch sử theo cách này. Nếu bạn xóa các từ theo cách mà OP mô tả trong câu hỏi (sử dụng dbốn lần, thay vì dd) thì tất cả trừ một từ bị xóa cuối cùng sẽ bị mất.
Alexander Rechsteiner

8

Ngoài câu trả lời của njd, điều này có thể được đơn giản hóa với plugin YankRing . Cũng như làm cho việc duyệt các bảng trước dễ dàng hơn, bạn có thể định cấu hình một số phím để cho phép bạn bật các bảng trước đó ra khỏi 'ngăn xếp'. Điều này cho phép bạn làm:

yy    " Copy first line
yy    " Copy second line
yy    " Copy third line
yy    " Copy fourth line
" Assumes you've mapped ,p to be the pop command: choose your preferred key or key-combination
,p    " Paste fourth line and pop it off the Yank Ring
,p    " Paste third line and pop it off the Yank Ring
,p    " Paste second line and pop it off the Yank Ring
,p    " Paste first line and pop it off the Yank Ring

4
Bạn có thể thêm cách ánh xạ ,pđể bật các yank trước không?
Andrew Wood
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.