cách thêm dòng vào thanh ghi vim mà không ghi đè nó


85

Tôi muốn kéo một dòng trong sổ đăng ký: "{register}ynhưng không ghi đè lên những gì trước đó trong sổ đăng ký. Tôi thường cần sao chép các dòng không liền nhau trong một thanh ghi và đôi khi tôi muốn sử dụng các thanh ghi như một ngăn xếp.

Thí dụ:

line1
line2
line3

Tôi muốn sao chép line1, bằng cách đặt con trỏ vào nó và nhập "ay, sau đó tiếp tục line3và làm "ay. Sau đó, khi tôi sẽ làm "ap, CẢ line1line3sẽ được dán.

Điều này có thể thực hiện được mà không có plugin? với các plugin?


Tuyệt vời để tạo danh sách nhanh các định nghĩa ở đầu tệp.
Joe McGrath

Câu trả lời:


132

Nếu bạn muốn thêm vào một thanh ghi có tên, hãy sử dụng ký tự chữ hoa tương ứng. tức là Trong ví dụ của bạn:

"ayy
"Ayy
"ap

11
Có cách nào có thể để thêm vào sổ đăng ký chưa được đặt tên không? (một trong những chính)
Zaffy


Để tiết kiệm cho mọi người một lượt truy cập trang ^^, IMO sẽ dễ dàng hơn khi sử dụng sổ đăng ký có tên. Khi bạn nhập "suy nghĩ," bằng cách sử dụng đăng ký ... "" A "tiếp tục đăng ký"
Rob Kielty

12

Chỉ để mở rộng phản hồi của MarkB, bạn có biết bạn cũng có thể sử dụng điểm đánh dấu để chọn một khối văn bản cho yank của mình không?

Chuyển đến dòng đầu tiên của khối bạn muốn kéo và nhập lệnh đánh dấu sau khi chọn một chữ cái làm điểm đánh dấu, ví dụ:

ma  (entered in command mode, i.e. no colon)

sau đó đi đến cuối khối bạn muốn kéo và nhập lệnh:

:'a,.ya A

lệnh này có nghĩa là lấy khối văn bản từ dòng chứa điểm đánh dấu của tôi được gọi là a lên đến dòng hiện tại và kéo nó vào vùng đệm a. Áp dụng các quy tắc tương tự như MarkB đã đề cập, sử dụng tên bộ đệm chữ thường để ghi đè bộ đệm. Sử dụng tên bộ đệm viết hoa để thêm vào bộ đệm. Vì vậy, trong trường hợp này, điều này sẽ thêm vào nội dung của bộ đệm a.

NB Chữ 'a' được sử dụng cho điểm đánh dấu của bạn không liên quan gì đến chữ 'a' được sử dụng để chọn sổ đăng ký của bạn. (AFAIK nhưng YMMV)

BTW 'a (dấu nháy đơn a) dùng để chỉ dòng chứa điểm đánh dấu a. `a (backquote a) đề cập đến ký tự dưới con trỏ khi bạn nhập ma.

`ad`b (also entered in command mode)

rất hữu ích vì nó sẽ xóa văn bản giữa ký tự được đánh dấu bằng điểm đánh dấu a cho đến ký tự ngay trước ký tự mà bạn đã đánh dấu bằng điểm đánh dấu b.


'a, .ya A hoạt động nhưng khi tôi thử với dấu tích phía trước a -> `a, nó nói: E492: Không phải lệnh của trình soạn thảo:` a, .ya A. Sẽ hữu ích nếu không sử dụng một chữ cái khác hơn a cho điểm đánh dấu trong ví dụ để rõ ràng là chữ cái nào :)
justin w
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.