VIM:帶有兩個或多個字元的「t」動作

VIM:帶有兩個或多個字元的「t」動作

假設有一行例如:

grep -ir "$@" * | grep -v "/.svn/" | grep -v "/inc/help/" | head -n 100

如果遊標位於第一個|並且我想刪除until head,我該如何用t來做到這一點?我知道我可以v/hea選擇直到,hea但是當我刪除文字時,我也會刪除h前導head。我可以只h支援一個角色,但現在這是一系列的解決方法。它有效,但我想知道是否有更好的方法。

有沒有辦法依賴t兩個或多個字元而不是單一字元?

答案1

嘗試這個:

:vnoremap / //b-1<left><left><left><left>

當您鍵入v以直觀地選擇一個區域,然後鍵入/以開始搜尋該區域的末端時,Vim 將輸入

//b-1

將遊標放在第二個 上進入命令列/。然後鍵入 2 個或更多要用來終止該區域的字符,然後按 Enter 鍵。告訴b-1Vim 搜尋該模式並將遊標放在 ( -1)b匹配開始之前的一個字元。看

:help search-offset

您不必繪製地圖/。您可以使用地圖t或其他字元來代替。

答案2

如果你可以互動地進行,你可以嘗試一下easymotion-插件:

d;;fh-> 將使所有文字變灰並將所有h字母標記為紅色,但將其替換為a,b,c,…,然後您可以點擊b刪除第二個h

我知道這個描述有點神秘 - 看看Youtube 視頻

Ps.:我忘了說;是我的領導者鑰匙

答案3

d2fh會在你的例子中做到這一點。

答案4

不,t只接受一個字元。我會做vththd

相關內容