2011-05-22 31 views
6

在vim中,在普通模式下,如果光標位於一個單詞中,而不是最後一個字母,則de將從該位置刪除該單詞的後綴。如果光標在最後一個字母上,x也會這樣做,而de會跳到下一個單詞的末尾。在Vim中,如何刪除單詞的後綴?

你會使用哪種命令,在兩種情況下都能正常工作,最後一封信是不是?

其目的是將該命令包含在宏中。

+2

該行爲不取決於單詞的長度,而取決於遊標的位置。如果光標位於單詞的最後一個字符處,「e」運動也會跳到下一個單詞的末尾。 – 2011-05-22 09:30:02

+0

沒錯,再次感謝。問題得到糾正。 – galath 2011-05-24 06:29:46

+1

已經回答了,但'cw'也可能對你有用。它完成你所描述的內容,但也會跳轉到編輯模式。 – 2011-05-24 07:15:02

回答

4

嘗試vwged而不是de,並定義類似以下的映射,如果你喜歡它,則使用 。

:nnoremap <leader>de vwged 

它似乎正是你想要的。

+0

'vwged'就是我一直在尋找的東西。謝謝。 – galath 2011-05-24 06:16:46

1

如果你的詞分隔符是空格,dt<space>將起作用。 t將匹配所有字符,直到指定的字符。

+0

一些有用的評論:dw - 刪除他們稱之爲「小」的單詞。就像在「settings.config」中一樣,如果你使用的是「s」,'dw'會刪除'.'前的所有內容以刪除整個字符串,使用'dW'(刪除「big」字) – Nemoden 2011-05-22 08:37:17

+0

爲了推廣這個解決方案:'dtC ',其中'C'是要刪除的單詞的最後一個字符旁邊的字符。 – 2011-05-22 09:37:16

+0

但是如果你的單詞後面跟着逗號或分號(或任何其他不是字的字符?)?你需要一種方法來跳轉到下一個單詞邊界 – 2011-05-22 09:42:33

2

您也可以嘗試d/\>它轉換爲刪除高達下一頁尾字邊界。