Ví dụ
Làm cách nào tôi có thể kéo và dán Dòng 4 chỉ vào Dòng 12 mà không phải di chuyển con trỏ đến Dòng 4?
Ví dụ
Làm cách nào tôi có thể kéo và dán Dòng 4 chỉ vào Dòng 12 mà không phải di chuyển con trỏ đến Dòng 4?
Câu trả lời:
Nếu con trỏ đã ở trên dòng 12, thì đơn giản
: 4y P
làm điều đó cho tôi
x
? Khi tôi cố gắng :4x
tôi nhận được E140: Use ! to write partial buffer
. Cảm ơn!
:4d
Làm thế nào về điều này: Con trỏ ở dòng 11, bạn đang ở chế độ "vi".
:4co.<return>
Bạn rõ ràng cũng có thể làm điều đó với một mô hình:
:/^Yank/co.<return>
Bạn có thể sử dụng "mo" (di chuyển) thay vì "co" (sao chép) để chỉ di chuyển dòng, thay vì kéo và đặt.
:4t.
Thử đi:
:4,4y
P
Những người khác đã đề cập đến phương pháp trực tiếp nhất để làm điều này, đó là :4y
, nhưng tôi muốn thêm hai lưu ý về nó có thể hữu ích:
Thứ nhất, nếu bạn nhập vào, :help range
bạn sẽ tìm hiểu tất cả về việc sử dụng các phạm vi để áp dụng cho các lệnh kiểu Ex. RẤT hữu ích trong nhiều trường hợp và linh hoạt hơn nhiều so với sử dụng số dòng. Ví dụ: nếu bạn muốn kéo dòng đầu tiên bắt đầu bằng "yank" sau khi bắt đầu tài liệu (ngay cả khi nó ở dòng đầu tiên), hãy sử dụng :0/^yank/y
. Phần mạnh nhất của các phạm vi là khả năng kết hợp chúng, ví dụ: :./^Chapter/+50?Pete?d
"Tìm dòng tiếp theo để bắt đầu với từ Chương (tìm kiếm từ dòng hiện tại), sau đó nhảy về phía trước 50 dòng và tìm kiếm ngược từ Pete, và xóa dòng đầu tiên bạn tìm thấy. " Ngoại trừ việc nó không thực sự di chuyển con trỏ, nó chỉ LÀM những gì bạn nói với nó.
(Tôi đã sử dụng loại đặc tả phạm vi này để tự động hóa việc tạo tài liệu khó khăn liên quan đến việc tìm kiếm tên hàm dưới con trỏ, sau đó tìm kiếm dòng tiếp theo có nội dung "Mô tả" và kéo nó đến một thanh ghi cụ thể ... vv.)
Mẹo khác, là bạn nên biết về nhảy. Nhập :help jump-motions
để tìm hiểu về nó đầy đủ, nhưng cách liên quan ở đây là bạn có thể nhảy đến dòng 4, kéo nó và sau đó TRẢ LẠI với 4Gyy''
(hoặc sử dụng backticks thay vì dấu nháy đơn để quay lại vị trí bắt đầu chính xác của bạn, thay vì chỉ cùng LINE bạn đã bắt đầu lúc.)
Ngắn nhất:
:1t.
sao chép dòng đầu tiên bên dưới hiện tại.
Với phạm vi:
:1,4t.
bản sao dòng 1 đến 4 (đã bao gồm) bên dưới hiện tại.
Cũng có thể với số dòng tương đối:
:-1t.
sao chép dòng trước bên dưới hiện tại.
Trong ví dụ của bạn :4t-1
sẽ sao chép dòng thứ tư bên dưới dòng mong muốn.
Lưu ý: :t
là một từ đồng nghĩa với :co[py]
lệnh.