![用 vi 緩衝區中的行取代一行](https://rvso.com/image/23934/%E7%94%A8%20vi%20%E7%B7%A9%E8%A1%9D%E5%8D%80%E4%B8%AD%E7%9A%84%E8%A1%8C%E5%8F%96%E4%BB%A3%E4%B8%80%E8%A1%8C.png)
我cc
或dd
將一行複製到我的貼上緩衝區。然後我去一個新地點。
我想替換我看到的一行。所以我輸入p
Down dd
.
有沒有更簡單的方法(更少的按鍵)?
答案1
您可以鍵入V
以選擇該行,然後p
替換它。
答案2
另一種方法是"_ddp
"_dd
將目前行刪除到空緩衝區。這不會覆蓋您剛剛複製的內容,我發現這很多次很有幫助!貼上p
您之前複製的行。
就擊鍵而言可能不會更短,但知道這是一個選項可能會非常有幫助!
答案3
安格斯和托爾已經給出了簡短的答案,所以這裡有一些額外的探索。
如果您因為某些原因想在貼上之前刪除,您可以利用編號暫存器。寄存器包含最後一次或"0
拉出的文本,但不刪除。透過暫存器儲存您最近完成的 9 次刪除/剪切。所以:y
Y
"1
"9
- 如果你猛拉 with
yy
,你可以替換為dd"0P
。 - 如果用
dd
or剪切cc
,則可以用 替換dd"2P
。 (不是dd"1P
因為dd
填充"1
。)
嘗試:help "0
獲取更深入的資訊。
答案4
假設您想將第 1 行替換為第 3 行,但您無法做到:1m3|2d
這有效地將第 1 行移至第 3 行,並刪除第 2 行(即舊的第 3 行)