
在 vi / vim 中,我想覆蓋頁面下方的文字行。與覆蓋一行中的字元類似 - 我按R
,然後貼上並且字元被覆蓋,但我想在頁面下方執行相同的操作。
例子:
我有一個文件,其中包含以下文字:
var1: 7FBzezsLKyzYmVeM
var2: kL8RIBJVNrlEUyYV
var3: 1FkmXFSXtH4msKnL
我想用以下內容替換這些行:
var1: 7PmuHKKRx9OYt9mR
var2: nuRAS5dAKfUrvECJ
var3: km11I7HuXOWuu43X
我通常會做的是刪除現有行並將新行貼到其位置,或者反之亦然。
新文字來自貼上緩衝區,無論是從其他地方拉出還是複製。
我進行了廣泛的搜索,但找不到任何有關如何執行此操作的參考。即使使用宏,我也無法想像我將如何做這件事。
有人設法做到這一點嗎?如果這是不可能的,那麼我肯定知道。
答案1
請嘗試這個:
- 複製/拉出您要複製的行
- 切換到你想要改變的緩衝區
- gRCtrl-r0Esc
翻譯:
- gR進入視覺替換模式(參見
:h gR
) - Ctrl-r0- 從暫存器貼上
0
(請參閱:h i_CTRL-R
,:h quote0
) - Esc- 葉子替換模式。
答案2
不明白你的意思。
轉到第一個匹配行,然後使用
.,.+2d
r /tmp/var
.,.+2d
將刪除第3行(根據需要調整第2行)r /tmp/var
將讀取(插入)模板檔案。
答案3
gR
如果新舊長度相同,內建(如@SatoKatsura 建議)就很棒。但對於一般情況,這不起作用,必須採取不同的方法。我經常需要這個,我編寫了一個插件來簡化並允許最大速度:替換為寄存器。
該插件提供了一個二合一gr
命令,可以用寄存器的內容替換 {motion} / 文字物件、整行或目前選擇覆蓋的文字;舊文字被刪除到黑洞暫存器中,即它消失了。它透明地處理許多極端情況,並允許透過標準.
命令快速重複。如果您不喜歡它,它的頁面有替代品的連結。