Trong Vim, có cách nào để dán văn bản vào dòng tìm kiếm không?


105

Tôi muốn tìm kiếm $maximumTotalAllowedAfterFinishvà thay thế nó bằng $minimumTotalAllowedAfterFinish. Thay vì gõ văn bản dài:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Có cách nào để SAO CHÉP các tên biến dài này xuống dòng tìm kiếm, vì trên dòng lệnh tôi không thể nhập " p" để dán không?


2
Tôi đoán rằng bạn cũng cần phải thoát khỏi chữ cái đầu tiên $bởi vì chữ cái này có nghĩa là cuối dòng.
Luc M

1
@LucM OP cũng có thể sử dụng \Vbất kỳ đâu trong mẫu tìm kiếm để vô hiệu hóa các ký tự "ma thuật".
dash-tom-bang

Câu trả lời:


128

Bạn có thể chèn nội dung của sổ đăng ký được đánh số hoặc có tên bằng cách gõ CTRLR {0-9a-z"%#:-=.}. Bằng cách nhập, CTRL-R CTRL-Wbạn có thể dán từ hiện tại vào bên dưới con trỏ. Xem:

:he cmdline-editing

để biết thêm thông tin.


8
cảm ơn vì câu trả lời, một trong những phổ biến nhất đối với tôi là: CTRL+ R +(vì nó đi cho các nội dung clipboard)
Peter Butkovic

4
Thanh 0ghi chứa chuỗi được kéo cuối cùng.
Evgeni Sergeev

52

Sao chép nó như bình thường, sau đó thực hiện CtrlR"để dán. Có rất nhiều CtrlRphím tắt khác (ví dụ: máy tính, tên tệp hiện tại, nội dung bảng tạm). Nhập :help c_<C-R>để xem danh sách đầy đủ.


15

Nhập q:để vào chế độ chỉnh sửa lịch sử trong bộ đệm mới. Sau đó chỉnh sửa dòng cuối cùng của bộ đệm và nhấn Enterđể thực thi nó.


3
Vì vậy, đó là những gì bộ đệm đó đã được cho! Cảm ơn (tôi luôn luôn chỉ tình cờ vấp ngã trên đó khi gõ: q và bị lẫn lộn)
GSK

3
q/cũng hữu ích để truy cập lịch sử tìm kiếm và dán các tìm kiếm mới.
79E09796

15

Sao chép:
1) v(hoặc đánh dấu bằng chuột, ở chế độ trực quan)
2) y(yank)

Dán:
1) /(chế độ tìm kiếm)
2) Ctrl + R + 0(dán từ thanh ghi đã kéo)


1
Tôi đã tìm kiếm câu trả lời này khi tôi tìm kiếm câu hỏi này trong google, tôi tự hỏi tại sao điều này có phiếu tiêu cực.
santiago arizti

3

Hoặc tạo lệnh trong bộ đệm vim, ví dụ: nhập nó vào bộ đệm:

s/foo/bar/gci

Và sao chép nó vào một thanh ghi được đặt tên, với "ayy(nếu con trỏ nằm trên dòng đó!).

Bây giờ bạn có thể thực thi nội dung của thanh ghi " a" từ dòng lệnh Ex của Vim với:

:[OPTIONAL_RANGE]@a

Tôi sử dụng nó mọi lúc.


"ayy" của bạn hoặc được trích dẫn (và do đó không chính xác) hoặc không (và do đó có "sai sót" ở cuối)
tzot

2

Thông thường, bạn sẽ làm điều đó bằng cách chọn chuột (có thể CtrlInshoặc CtrlCsau khi chọn) và sau đó, khi ở trong dòng lệnh / tìm kiếm, hãy nhấp chuột giữa (hoặc ShiftInshoặc CtrlV).

Một cách khác, là viết dòng lệnh / tìm kiếm của bạn trong bộ đệm văn bản với tất cả các chỉnh sửa có sẵn trong bộ đệm văn bản, bắt đầu bằng :và tất cả, sau đó, trên dòng, thực hiện:

"add@a

sẽ lưu toàn bộ dòng lệnh trong bộ đệm avà sau đó thực thi nó. Tuy nhiên, nó sẽ không được lưu trữ trong lịch sử lệnh.

Hãy thử tạo dòng sau trong bộ đệm văn bản làm ví dụ cho các lần nhấn phím ở trên:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Cuối cùng, bạn có thể nhập q:để nhập chỉnh sửa lịch sử trong bộ đệm văn bản.


1

Bạn có thể đặt con trỏ vào từ mà bạn muốn thêm vào mẫu của mình, sau đó nhấn /hoặc :để nhập chế độ tìm kiếm hoặc lệnh, rồi nhấn CtrlRCtrlWđể sao chép từ đó. Nguồn

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.