我發現Vim的撤消過於粗糙。例如。如果我輸入這樣的內容:如何在Vim中獲得細粒度的撤消
a // to go into edit mode
to be or not to ve
<esc> // to exit insert mode
糟糕!我犯了一個錯字。我想開始撤消,所以我按u
,但它然後清除整條線。 有沒有一種方法可以逐字或逐字刪除?
我發現Vim的撤消過於粗糙。例如。如果我輸入這樣的內容:如何在Vim中獲得細粒度的撤消
a // to go into edit mode
to be or not to ve
<esc> // to exit insert mode
糟糕!我犯了一個錯字。我想開始撤消,所以我按u
,但它然後清除整條線。 有沒有一種方法可以逐字或逐字刪除?
因此,當你從其他人看到你所要求的東西在Vi(AFAIK)中不存在。
撤消撤銷你最後一次操作的內容。如果您最後的操作是進入插入模式,然後添加一行,然後退出插入模式。這將被撤消,但是如果從默認模式下按下「x」鍵,則您將刪除1個字符,或者如果在選擇文本的可視模式下文本將被刪除。如果您點擊撤消,那麼您將恢復該字符或所選文字。
...你應該把它當作一個動作,如果你想刪除前一個單詞,那麼你應該能夠命中操作可以撤消原子或恢復
如前所述Ctrl + W和在保持插入模式時刪除前一個單詞。
如果您退出插入模式,您可以導航(運動)返回帶有「b」的單詞,帶有「w」的單詞轉到帶有「e」的單詞的末尾,並且可以剪切(使您處於插入模式)用「c」或用「d」刪除。這兩個動作剪切和刪除可以接受他們後面的動作,所以你可以用「dw」刪除當前單詞/到下一個單詞或用「cb」刪除前一個單詞
當你記得使用 」。」命令(在正常模式下)。該命令將重複最後一個操作。我已經多次用它來查找和替換一個文件中的一小部分文字(如果你對改變太多太偏執了,這特別有用)。該方案將是如下:
文件:
這是我的職位
實際上它是一個測試
這中間
這到底
如果我想用「was」替換「is」 「我可以這樣寫: %S/\ <是\ >/WAS/g的
但是如果我想改變的第一行和第三行‘是’‘是’(我不知道他們的行號,我想看看是否有其他地方我想改變是我可以鍵入 「/是」
命中「n」,直到我到達我想替換的地方,然後點擊「 cw「並輸入」was「 現在我可以點擊」n「,直到我到達另一個我想要替換的地方並點擊」。「,並且將用」was「替換」is「(注意:我的搜索字符串沒有限制到「是」這個詞,只是兩個字符「是」,所以「這個」&「這個」會匹配這個cas e)
不,這是不可能的,實際上也不是必需的。 Vim有一百萬種處理方式。例如,嘗試cb。或者bC。或brb。或Tspace跳回來代替b。或者ciw。
可以,當然可以用最插入模式這些解決方案(按CTRLØ第一),或者綁定一個您最喜愛的組合鍵(:help map
和:help imap
)。
在Linux上,使用control-w而在輸入模式下刪除最後一個「單詞」。
在OSX上很好用。問題:如何重做? – user456584 2013-05-23 22:52:30
再次輸入。所以,不要輸入control-W,除非你的意思是... – 2013-05-23 23:15:35
如果你想撤消這個,就像上面的2條評論提到那樣,然後退出插入模式並使用u來撤消。 – 2014-12-22 00:27:28
您可以通過:help i_ctrl-g_u
打破undos。如果你想要每個角色都可以映射,但這可能有點複雜。將此映射到空間按鈕是一種方法。
:inoremap <Space> <Space><C-g>u
之後的每一句話可以通過ü
我喜歡將'c'命令看作_change_而不是_cut_。這更好地解釋了爲什麼它刪除受影響的文本後切換到編輯模式... – siegi 2014-07-06 09:35:45