簡體   English   中英

Vim 最快的換字方式

[英]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_varciw 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_wantedsome_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM