2013-04-04 83 views
13

假設我輸入了「abcdefg」,並且光標在最後。我想刪除回到c,這樣我只剩下「abc」了。如何刪除,包括當前字符?

是否有像d這樣的命令包含當前字符?我知道我可以做dTcx,但x感覺像是一個解決辦法,我想有一個更好的解決方案。

+0

我用最愚蠢的方式做到這一點:D – 2013-04-04 06:43:19

+1

@MostafaShahverdy'xxxx'?或'ddOabc'? – Andreas 2013-04-04 06:43:54

+0

Humm:D並且有時使用'c'中的Del! – 2013-04-04 06:44:47

回答

6

不是。向後運動總是從當前字符的左側開始,對於c,yd這是合乎邏輯但也令人不安的。

唯一的「乾淨」的解決方案,我能想到的任何暗示移動到焦炭c第一後再做向前刪除:

Tcde 

或使用可視化模式:

vTcd 
v3hd 

但,考慮到你的樣品,並假設你正在進入正常模式只是爲了糾正,整個事情聽起來對我來說非常浪費。

什麼停留在插入模式和簡單地做

+0

+1爲4x'backspace',我想我會在實際工作中這樣做。 – Kent 2013-04-04 08:01:30

+6

謝謝。當然這只是一個例子,可能要刪除12或30個字符,並且可能位於一行的中間。 – Andreas 2013-04-04 08:18:21

1

使用d?c 這將啓動d模式,搜索回'c',然後刪除到您的光標位置。

編輯:不,不包括當前位置...

+0

必須是'd?d' – 2013-04-04 06:46:21

+0

是的,好點,保持'c'。 – Cometsong 2013-04-04 06:51:41

1

我可能會誤解你的要求,但並3hd$做呢?

+1

是的,它的確如此。或'Fdd $'。但是當我還沒有結束時,我想工作,這也感覺就像一個解決方法。基本上,我問是否有包含當前角色的動作/刪除。 – Andreas 2013-04-04 06:51:09

2

試試這個:

TcD 

這將離開abc您例如......嗯,如果abcdefg是該行的最後一個字。

如果不是在該行的最後一個字,你可以這樣做:

ldTc 

或打高爾夫球,做它3按鍵行程內:

3Xx or l4X 
2

this answer到類似的問題:有一個設置可以超出行尾

來自文檔:

虛擬編輯意味着光標可以放置在沒有實際字符的位置 。這可能是一個標籤的一半或超出該行的末尾 。用於在可視模式下選擇矩形和編輯表格。 「onemore」不一樣,它只允許在行的最後一個字符後面移動光標 。這使得一些命令更一致。以前,如果該行爲空,則光標始終在行 的末尾。但它遠不是Vi兼容的。它也可能會破壞一些插件或Vim腳本。例如,因爲| l |可以在最後一個字符後移動光標 。小心使用! 使用$命令將移至行中的最後一個字符,而不是經過它的 。這實際上可能會將光標移動到左側! g$命令將移動到屏幕行的末尾。 將「all」與「onemore」結合起來沒有任何意義,但是您不會爲此發出警告。

總之,你可以嘗試:set virtualedit=onemore,看看你的環境是否穩定與否。