什麼是最短的組合?VIM:如何在正常模式下從行尾刪除3個單詞?
P.S.我通常做一個Ctrl + WCtrl + WCtrl + WEsc鍵。
換句話說,我不得不跳入插入模式。
P.P.S. db不起作用。
什麼是最短的組合?VIM:如何在正常模式下從行尾刪除3個單詞?
P.S.我通常做一個Ctrl + WCtrl + WCtrl + WEsc鍵。
換句話說,我不得不跳入插入模式。
P.P.S. db不起作用。
命令序列,
$3bD
是做到這一點,我能想到的此刻的最短途徑,但它留下了一個醜陋的尾隨空格。
$3gelD
是擺脫尾隨空間的另一種方式。
您還可以條條框框,用空格代替文字遊戲:
$3F D
最後一個可能不一樣,因爲它可能更接近於使用WORD邊界而不是字邊界(使用'ge'&'b')。 –
它修復了尾部空白問題。 – romainl
@romainl如果單詞由製表符或多個空格分隔,$ 3F D'將不起作用。 「$ 3bDx'稍好,但你對'$ 3gelD'的其他建議可能是最好的。 '$ 3b3daw'確實是一樣,但更長; '$ daw..'是一個有趣的選擇。 –
$ 3BD
或者
$ 3bDx
...如果你也想刪除尾隨的空間。
轉到線的末端,回去3個字,然後刪除該行的末尾:$bd
或
轉到末尾刪除3個字,然後刪除多餘字符:$dbX
$bd這translates到
另外,您還可以使用在ex模式下的normal命令來實現相同的功能
:norm! $3bD
正如其他人所說,$3bD
是最短的,$3bDx
將足以刪除剩餘的空白,假設它只是一個空格或製表符。
爲了佔所有空格,可以使用$3gelD
。此選項在大多數情況下具有可以正確清理的優點,但是如果一行只包含3個單詞,則會失敗,因爲3ge
動作會跳回到上一行。
另一種方法是基於daw
。由於3daw
正向轉發,因此必須使用$daw..
或$3b3daw
。對於3個單詞,$daw..
更短,可能更合意,但$3b3daw
更具Vim式,可以輕鬆擴展到更多單詞。
b
,ge
,和w
可以與B
,gE
和W
爲了刪除單詞代替詞語來替換。
不幸的是,'$ daw..'只適用於不使用'virtualedit'選項。隨着對「全部」或「更多」的虛擬化,替代方案是「$ caw
有趣;在那種情況下,'$ 3bDx'也會失敗。 –
刪除N個單詞的宏? – cutalion
如果你處於你想要刪除的位置,只需使用'd $'刪除行尾的所有內容。 – mgoffin
通常我在行首 – cutalion