Làm cách nào để sao chép toàn bộ một dòng trong Vim theo cách tương tự với Ctrl+ Dtrong IntelliJ IDEA / Resharper hoặc Ctrl+ Alt+ ↑/ ↓trong Eclipse ?
Y
es P
. :)
Làm cách nào để sao chép toàn bộ một dòng trong Vim theo cách tương tự với Ctrl+ Dtrong IntelliJ IDEA / Resharper hoặc Ctrl+ Alt+ ↑/ ↓trong Eclipse ?
Y
es P
. :)
Câu trả lời:
yyhoặc Ysao chép dòng (ghi nhớ: y ank )
hoặc
ddđể d elete dòng (Vim bản những gì bạn đã xóa vào clipboard giống như "đăng ký", giống như một vết cắt hoạt động)
sau đó
pđể p aste sự sao chép hoặc xóa văn bản sau dòng hiện tại
hoặc
Pđể p aste văn bản sao chép hoặc xóa trước dòng hiện tại
Y
đến y$
. (Phù hợp với D
và C
; (nhưng không tương thích với Vi (không ai quan tâm.))) Điều đó thậm chí còn được đề xuất trong :help Y
.
yj
hoặc yk
, đặc biệt là khi bạn không nhân đôi một ký tự. Ngoài ra, yk
là phiên bản ngược 2yy
không thể thực hiện được và bạn có thể đặt số lượng dòng để lùi về phía sau y9j
hoặc y2k
, v.v. Chỉ khác là số lượng của bạn phải có n-1
trong tổng số n
dòng, nhưng đầu của bạn có thể biết rằng dù sao.
Chế độ bình thường: xem câu trả lời khác.
Cách Ex :
:t.
sẽ nhân đôi dòng,:t 7
sẽ sao chép nó sau dòng 7,:,+t0
sẽ sao chép dòng hiện tại và dòng tiếp theo ở đầu tệp ( ,+
là từ đồng nghĩa cho phạm vi .,.+1
),:1,t$
sẽ sao chép các dòng từ đầu đến vị trí con trỏ đến cuối ( 1,
là từ đồng nghĩa cho phạm vi 1,.
).Nếu bạn cần di chuyển thay vì sao chép, hãy sử dụng :m
thay vì :t
.
Điều này có thể thực sự mạnh mẽ nếu bạn kết hợp nó với :g
hoặc :v
:
:v/foo/m$
sẽ di chuyển tất cả các dòng không khớp với mẫu Foovio đến cuối tập tin.:+,$g/^\s*class\s\+\i\+/t.
sẽ sao chép tất cả các dòng tiếp theo của biểu mẫu class xxx
ngay sau con trỏ.Tham khảo: :help range
, :help :t
, :help :g
, :help :m
và:help :v
:
trong chế độ trực quan, nó được chuyển thành '<,'>
để nó chọn trước phạm vi dòng mà lựa chọn hình ảnh được kéo dài. Vì vậy, trong chế độ trực quan, :t0
sẽ sao chép các dòng ở đầu.
:t.
là câu trả lời chính xác cho câu hỏi.
YP
hoặc Yp
hoặc yyp
.
Y
thường được ánh xạ tới y$
(yank (sao chép) cho đến hết dòng (từ vị trí con trỏ hiện tại, không bắt đầu dòng)). Với dòng này trong .vimrc
::nnoremap Y y$
yyP
Không có gì đơn giản hơn thế này! Từ chế độ bình thường:
yy
sau đó di chuyển đến dòng bạn muốn dán tại và
p
yy
sẽ kéo dòng hiện tại mà không xóa nó
dd
sẽ xóa dòng hiện tại
p
put
một dòng sẽ được lấy bởi một trong các phương thức trước đó
Làm cái này:
Đầu tiên, yyđể sao chép dòng hiện tại, và sau đó pđể dán.
Nếu bạn muốn một cách khác:
"ayy
: Điều này sẽ lưu trữ dòng trong bộ đệm a
.
"ap
: Điều này sẽ đặt nội dung của bộ đệm a
tại con trỏ.
Có nhiều biến thể về điều này.
"a5yy
: Điều này sẽ lưu trữ 5 dòng trong bộ đệm a
.
Xem " Vim trợ giúp tập tin để vui hơn.
yyp - hãy nhớ nó với "yippee!"
Nhiều dòng có một số ở giữa:
y7yp
:.,.+7 copy .+7
: P
Tôi thích: Shift+ v(để chọn toàn bộ dòng ngay lập tức và cho phép bạn chọn các dòng khác nếu bạn muốn), y, p
Bạn cũng có thể thử <Cx> <Cl> sẽ lặp lại dòng cuối cùng từ chế độ chèn và mang đến cho bạn một cửa sổ hoàn thành với tất cả các dòng. Nó hoạt động gần giống như <Cp>
Đối với một người không biết vi, một số câu trả lời từ trên có thể đánh lừa anh ta bằng các cụm từ như "dán ... sau / trước dòng hiện tại ".
Đó thực sự là "dán ... sau / trước con trỏ ".
yyhoặc Yđể sao chép dòng
hoặc
dd xóa dòng
sau đó
pđể dán văn bản sao chép hoặc xóa sau khi các con trỏ
hoặc
Pdán văn bản sao chép hoặc xóa trước khi các con trỏ
Để biết thêm các ràng buộc chính, bạn có thể truy cập trang web này: vi Danh sách liên kết khóa hoàn chỉnh
Mặc định là yyp, nhưng tôi đã sử dụng tính năng này trong một năm hoặc lâu hơn và yêu thích nó:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
Tôi biết tôi đến bữa tiệc muộn, nhưng sao cũng được; Tôi có cái này trong .vimrc của tôi:
nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>
các :copy
lệnh chỉ bản dòng chọn hoặc phạm vi (luôn cả dòng) xuống dưới số dòng cho là đối số của nó.
Trong chế độ bình thường, cái này làm là copy .
sao chép dòng này xuống ngay dưới dòng này .
Và trong chế độ trực quan, nó biến thành '<,'> copy '>
bản sao từ đầu lựa chọn đến hết lựa chọn đến dòng bên dưới kết thúc lựa chọn .
Đối với những người bắt đầu tìm hiểu vi, đây là một giới thiệu tốt về vi bằng cách liệt kê các lệnh vi cạnh nhau cho các phím tắt và phím tắt con trỏ của Trình soạn thảo GUI GUI điển hình. Nó liệt kê tất cả các lệnh cơ bản bao gồm yy(dòng sao chép) và p(dán sau) hoặcP (dán trước).
Nếu bạn muốn sao chép một dòng và dán nó ngay bên dưới like hiện tại, giống như trong Sublime Ctrl+ Shift+ D, thì bạn có thể thêm dòng này vào .vimrc
tệp của mình .
nmap <S-C-d> <Esc>Yp
Hoặc, đối với chế độ Chèn:
imap <S-C-d> <Esc>Ypa
i
vào cuối để nhập lại nó bị hỏng undo
, vì vậy giải pháp sao chép các dòng trong chế độ chèn không tầm thường như vẻ ngoài của nó.
imap <S-C-d> <Esc>Ypi
chế độ chèn và nmap <S-C-d> <Esc>Yp
ở chế độ bình thường