[英]Vim fastest way to replace words
有時我發現自己只想替換程序中的 2-3 個長單詞,我發現這樣做有點痛苦,只是想知道是否有任何 Vim 向導可以讓我更快地做到這一點:
var_wanted = {}
some_other_var = {}
def function1():
....
....
some_other_var.append(...)
....
some_other_var.append(...)
some_other_var.append(...)
....
現在假設我想用some_other_var
替換var_wanted
,現在通常我這樣做的方式是我將 go 到 var_wanted 使用yiw
將單詞復制到寄存器,然后移動到some_other_var
的第一個實例做viw
到 Z99938282F04071859941E18F16EFCF4Z 然后做p
將其粘貼並替換單詞。 但是這個過程是不可重復的,我不能 go 到 some_other_var 和 type 的下一個實例.
因為由於某種原因,現在some_other_var
而不是var_wanted
在我的寄存器中,所以我經常這樣做,以至於我覺得我正在失去幾年的生命。 是的,我知道使用搜索和替換:%s/some_other_var/var_watned/gc
,但我覺得這個實例的替換很少,因此不值得將整個內容輸入。 請幫忙
想要的最終產品:
var_wanted = {}
some_other_var = {}
def function1():
....
....
var_wanted.append(...)
....
var_wanted.append(...)
var_wanted.append(...)
....
TL;博士:
var_wanted 上的var_wanted
: "ayiw
(拉入寄存器 a)。
some_old_var 上的some_old_var
: ciw
Ctrl ra
Esc (更改字,插入寄存器 a 的內容)。
將 cursor 放在下一個some_old_var
: 上.
將再次執行之前的操作。
找到比%s/some_old_var/var_wanted/g
短的擊鍵系列將是困難的。
因為由於某種原因,現在
some_other_var
在我的寄存器中
viwp
隱式刪除選定的單詞。 vim 中刪除的文本進入寄存器。 您可以使用viw"_dP
來避免這種情況,它會顯式刪除 null 寄存器,因此不會被復制,然后放置。鍵入 3 次似乎比%s/
版本更糟糕。
如果輸入var_wanted
和some_other_var
讓您感到困擾,您可以在 cursor 位於正確位置時通過"fyiw
和"ryiw
”將它們拉入寄存器(讓我們使用"f
find 和"r
replace 用於助記目的)。 然后你可以%s:<Cr>f:<Cr>r:g
做所有的替換( <CR>
表示Ctrl r )。 這里的問題是移動 cursor 然后猛拉似乎並不比輸入單詞快多少。
還有c
掛東西。 如果你有some_old_var.
,你可以 position 你的 cursor 在這個詞上然后ciwvar_wanted
,這將刪除some_old_var
並進入插入模式,你可以輸入var_wanted
。 這樣做的好處是在離開插入模式后,您可以使用.
當您的 cursor 位於some_old_var
的下一個實例上時,它將重復整個操作,將some_old_var
替換為var_wanted
。
另一個有用的注意事項是,如果var_wanted
超長(並且已經存在於此文件中),您可以在鍵入單詞的幾個字符后使用Cn
自動完成。 這仍然適用於.
完成插入后。
如果您真的想避免輸入任何數量的var_wanted
,您也可以在插入模式下使用Ctrl r ,這意味着您可以通過將var_wanted
放在上面並使用"ayiw
(拉入寄存器 a)然后將您的在 some_old_var 上some_old_var
並執行 ciw ciw<CR>a
來替換它。
只要您想要的寄存器是 yank 寄存器:
:%s/some_other_var/\=@0/g
如果您嘗試更改“some_other_var”的大量出現,上述解決方案很好
您還可以使用“gn”方法,請參閱:h gn
,在我的情況下,我有:
:nnoremap c* *<c-o>cgn
將“var_wanted”復制到第一個“some_other_var”,然后按:
c* ...................... triggers our mapping
<Ctrl-r>0 ................ paste the yank register
<Esc> .................... leave insert mode
. ....................... now press dot as much as you want
要了解有關gn
技巧的更多信息,請觀看這個精彩的視頻: http://vimcasts.org/episodes/operating-on-search-matches-using-gn/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.