《Vim實用技巧(第2版)》——2.2 把撤銷單元切成塊
本節書摘來自異步社區《Vim實用技巧(第2版)》一書中的第2章,第2.2節,作者:【英】Drew Neil(尼爾)著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
2.2 把撤銷單元切成塊
在其他編輯器中,輸入一些詞後使用撤銷命令,可能會撤銷最後輸入的詞或字符,然而在Vim中,我們自己可以控製撤銷的粒度。
u 鍵會觸發撤銷命令,它會撤銷最新的修改。一次修改可以是改變文檔內文本的任意操作,其中包括在普通模式、可視模式以及命令行模式中所觸發的命令,而且一次修改也包括了在插入模式中輸入(或刪除)的文本,因此我們也可以說,i{insert some text}<Esc>
是一次修改。
在不區分模式的文本編輯器中,輸入一些單詞後使用撤銷命令,有兩種可能。一種是它可能會撤銷最後輸入的字符;另一種做得更好點,它可能會把字符分成塊,使每次撤銷操作刪除一個單詞而不是一個字符。
在Vim中,我們自己可以控製撤銷命令的粒度。從進入插入模式開始,直到返回普通模式為止,在此期間輸入或刪除的任何內容都被當成一次修改。因此,隻要控製好對 <Esc>
鍵的使用,就可使撤銷命令作用於單詞、句子或段落。
那麼,應該多久離開一次插入模式呢?這是個人喜好的問題,不過我喜歡讓每個“可撤銷塊”對應一次思考過程。在寫這段文字時(當然是在Vim中寫的),我經常在每句話的結尾停頓一下,想一想接下來該寫什麼。不管停頓的時間有多短,每次停頓都是一個自然的中斷點,提示我該退出插入模式了。當我準備好繼續寫時,按 A 命令就可以回到原來的地方繼續寫作。
如果我認為已經走錯了方向,就會切換到普通模式,然後按 u 撤銷。每次做撤銷時,文字都按我最初書寫時的思路,被切分成條理清晰的塊,也就是說我可以很容易地試著寫一兩句話,如果感到不合適的話,隨後按一兩下鍵就可以將其舍棄。
當處於插入模式時,如果光標位於行尾的話,另起一行最快的方式是按<CR>
。不過有時我更喜歡按<Esc>o
,這是因為我有預感,也許在撤銷時我想擁有更細的粒度。如果聽起來這不太好理解,不必擔心,當你對Vim越來越熟悉時,就會感到切換模式越來越輕鬆。
一般來講,如果你停頓的時間長到足以問“我應該退出插入模式嗎?”這個問題,就退出吧。
在插入模式中移動光標會重置修改狀態
當我提到撤銷命令會回退從進入插入模式到退出此模式期間輸入(或刪除)的全部字符時,我略過了一個小細節。如果在插入模式中使用了<Up>
、<Down>
、<Left>
或 <Right>
這些光標鍵,將會產生一個新的撤銷塊。你可以把這想象為先切換回普通模式,然後用 h 、j 、k 或 l 命令對光標進行了移動,唯一區別是我們並沒有退出插入模式。這也會對 . 命令的操作產生影響。
最後更新:2017-06-01 11:01:25
上一篇:
3A腦營養是什麼?
下一篇:
《Vim實用技巧(第2版)》——第2章 普通模式 2.1停頓時請移開畫筆
政府安全資訊精選 2017年第五期 各國加強隱私和個人信息保護
Oracle日期比較
中國好同事!幫程序猿跟姑娘表白,他們組了一支樂隊
C++對象模型(二):The Semantics of Copy Constructors(拷貝構造函數之編譯背後的行為)
linq to xml之增改刪查
《深入理解Elasticsearch(原書第2版)》一2.5.1 查詢方式分類
Mysql徹底卸載
????????????????????????? ???????????????????????????????????????-??????-????????????-?????????
mysql 實現遠程訪問,phpmyadmin實現遠程連接mysql
Xcode5 支持 iOS5 問題解決過程記錄