Vim

如何使用目前的粘貼緩衝區在 Vim 中“更改單詞”?

  • March 19, 2022

我的粘貼緩衝區中有一些文本,例如我做了一個yw(抽出詞),現在我的緩衝區中有’foo’。

我現在轉到“bar”這個詞,我想用我的粘貼緩衝區替換它。

要手動替換文本,我可以這樣做cw,然後輸入新單詞。

如何進行“更改單詞”,但使用粘貼緩衝區的內容而不是手動輸入替換單詞?

我現在最好的選擇是轉到我要替換的單詞的開頭並執行dw(刪除單詞),然後轉到另一個地方,然後執行yw(yank word)。然後回到替換區域並做p(粘貼),這有點笨拙,特別是如果它們不在同一個螢幕上。

選項1

您可以使用寄存器來執行此操作並為該過程進行鍵綁定。

抽出要替換為 的單詞yw

抽出的詞在0您可以通過發出看到的寄存器中:registers

轉到您要替換的單詞並執行cw。執行Ctrl+r後跟0粘貼0寄存器。

地圖看起來像這樣(假設Ctrl+j作為我們的鍵組合):

:map <C-j> cw<C-r>0<ESC>

選項 2(更簡單)

將您的單詞拉出,將游標懸停在您要替換的單詞上並執行v``i``w``p。這是視覺選擇內部單詞並粘貼。

在評論中感謝@tlo:你也可以這樣做v``e``p。短一個字元。缺點必須將游標定位在單詞的開頭並(與我的一樣)更改緩衝區。

評論(來自邁克爾):

這很好。額外說明:第二種方法確實更簡單,但實際上只適用於 ONE 替換,因為在每次替換後,緩衝區都會更改為被替換的欄位(舊文本)。第一種方法使用起來有點困難,但它的優點是緩衝區 0 保持“原樣”,因此您可以使用該方法對同一文本進行多次替換。

引用自:https://unix.stackexchange.com/questions/88714