摘要:為什么要有模式呢以上其實已經講述了一些原因,但真正的價值還在于接下來要講到的哲學。鼠標與快捷鍵的操作治標不治本,它們沒能從根本上解決這個問題。
學會用不同的角度去看待和理解這個世界,你收獲的永遠會比你想象的更多。
上回我分享了如何掌握基礎移動的心得體會,而對于很重要的模式卻只是一帶而過,這其實是有原因的。過去我有過幾次教新手 Vim 的經歷,按照慣常的方式先告訴他們模式切換,然后再講基礎移動。然而我發現一旦他們掌握了模式轉換,他們就會迫不及待的開始輸入,緊接著就會因為方向控制的別扭而倍感受挫,人就是這樣,誰都不喜歡在別人面前表現的很笨拙不是么?
所以我決定換個策略,利用游戲與交互教程幫助他們在輕松有趣的環境下先建立起信心,等他們回到真實環境的時候就不會有挫折感了。這很有效!其實學習這件事情大抵都是如此,入門時期的挫折遭遇很容易喪失興趣和信心,甚至導致此生都不再愿意去碰一下。緣分的建立不就是在合適的時間地點以合適的方式產生聯系嗎?
現在我想你已經在不知不覺中建立起了微妙的聯系,接下來我們開始了解模式。
常規模式(Normal Mode)與插入模式(Insert Mode)這倆模式是最常用的,對于模式我們現在拋出兩個疑問:模式是干什么的呢?為什么要有模式呢?
模式是干什么的呢?大體上我們可以把“打字”這件事情分成兩個部分,一個是輸入,從無到有的過程;另一個是編輯,對已存在的文字進行復合操作,包括:復制,剪切,移動,修改,刪除,格式化等等。
大部分的編輯器都只有一種模式,以上兩部分的操作合并在一起進行,這就是為什么會有菜單和按鈕的原因,而對于文字的范圍選擇也需要額外的方法來輔助,比如快捷鍵和鼠標操作等。無論是什么樣的情況我們都不得不迫使大腦在思考(輸入)和尋找(編輯)中不停轉換,即使你不在意這一點,始終有一些操作你是無法流水化的。比如說:在光標隨意停留在某處的時候,你能閉著眼睛用鼠標點擊到某個功能嗎?Vim 就可以。換言之一旦你掌握了 Vim之后,所有的操作——強調一遍:所有的操作都可以不用尋找,不用鼠標等工具輔助,你可以全副身心投入在你的主要目標上。
嗯?你說你全部用快捷鍵?呵呵,那文字選擇呢?再快的快捷鍵也無法勝過 Vim 選擇任意目標的速度。
好了,讓我們回到正題。從現在開始你要記住兩件事情:
一旦你想要在屏幕里寫點什么,就按下 i 鍵進入輸入模式,它的含義是:Insert(插入);
一旦你需要停下來——不管是你想要進行編輯或是你腦袋卡殼了要思考一下,總之只要你不再輸入了,就離開插入模式返回常規模式。記住:你在 Vim 里的常態是常規模式,而不是輸入模式。
關于返回模式的方法,常見的有三種,你可以現在就做出你的常規選擇,我會講出需要你考慮的要素:
使用 ESC 鍵:這是最通用的方法,它唯一的缺點就是距離標準鍵位較遠,然而由于它的位置在左上角,所以你也可以做一些強化練習來準確的找到它。記住:不要看鍵盤去找,要形成肌肉記憶!也有很多人偏好修改 ESC 鍵位,比如說把它轉移到 CapsLock,即大寫鎖定鍵上去,這是可取的,并且也十分有效,然而我不推薦這么做。因為修改鍵位相對來說麻煩一些,在某些場景會讓你頗感不便。比如說你去客戶那里安裝服務器,遇到的幾乎都是標準鍵盤,不光是在 Vim 下讓你難受,其他的地方也是如此,因為 ESC 太常用了,而且沒有第二替代鍵。
使用 Ctrl-[ 組合鍵:它的功能和 ESC 完全等價,只是組合鍵稍微困難一些。這里的竅門是 Ctrl 鍵的位置,我會把它重新映射到 CapsLock 鍵上去。這樣一來兩手的小指稍微移動就可以完成,稍加訓練即可熟練掌握。這也是我不推薦 ESC 的第二個原因,至于之前提到過的鍵位映射帶來的后遺癥,不要緊,鍵盤上都有不止一個的 Ctrl 鍵,你根本無需調整鍵位。
使用 Ctrl-c 組合鍵:看起來它似乎比 Ctrl-[ 更容易一些,但是它們的含義有很大的差別。在終端下 Ctrl-c 的意思是“中斷”,基本上它會中止所有正在運行的命令,當然它也可以在 Vim 里帶我們中斷一切操作返回默認的常規模式。但是 Vim 有一些操作其實是依賴正常的返回方法的,也就是 ESC 或者 Ctrl-[,使用 Ctrl-c 會導致這樣的功能無法被有效觸發(有不少插件依賴這些觸發功能,所以要小心莫名其妙的問題)。總而言之這是最不推薦的方法,除非你心里很有數,并且能在正確的時候使用前面兩種方法。
返回模式太重要了,所以你一定要謹慎選擇適合你條件的方式并把它練至純熟,否則一旦養成習慣之后想要改變就得付出不小的代價(相信我,我就是 Ctrl-c 的受害者 T_T,我也是不久前才明白 Ctrl-c 的問題的,這還要感謝本站的 @依云……,不好意思當時我還相當自信呢)。哪怕你接觸 Vim 的頭幾天就只練習插入模式和常規模式的轉換我也認為是值得的。
不少人在選擇第二種方式時遇到的最大阻礙就是無法盲打,[ 的位置無法準確的找到。那我的建議是找不到就放棄吧,無論如何不要讓自己養成總看鍵盤的壞毛病。特別是程序員,在這一行干久了,找到 [ 的位置應該不是什么難事,而盲打更是你需要掌握的基本能力,如果你還能使用標準指法那就太贊了!反正這一關你遲早是要過的。我剛剛習慣了全鍵盤盲打,正在朝著 80詞/分鐘的目標邁進,回頭有時間我也可以寫點這方面的心得體會——哦!你看我就是一個壞例子,我學習 Vim 的時候完全不會盲打呢!(但是我能戰勝自己,所以你也可以,對吧?)
另外,以上三種并非全部的可能性,我還見過許多種技巧,但總結起來無非就是在插入模式下設定新的鍵位映射。此時此刻我不打算教授這方面的東西,貪多嚼不爛,還記得我們的口號嗎?保持簡單。
為什么要有模式呢?以上其實已經講述了一些原因,但真正的價值還在于接下來要講到的 Vim 哲學。
人們對待“輸入”和“編輯”這兩件事情的態度和分析是不同的。
輸入是流線式的,同時帶有很強的節奏感。比如你聊天打字的時候,或者撰寫文章的時候,你總是會在段落的末尾停頓一下,因為你需要思考,理順邏輯,組織語言;在思維不流暢的時候,你甚至會寫一句停一句,然后反復編輯。寫程序更勝于此,我們思考的時間遠遠比真正輸入的時間要長的多。你看,這些停頓就好像樂譜里的休止符,它們梳理著音樂的節奏,提醒你何時換氣,何時調整情緒,多么自然。
然而編輯是碎片式的,且毫無規律可循,也無從預見。在編輯時最大的障礙就是位置的跳轉和任意的選擇。我們希望首先能夠盡可能在輸入和編輯之間流暢的轉換,其次希望能夠簡化編輯時的各種操作。鼠標與快捷鍵的操作治標不治本,它們沒能從根本上解決這個問題。
在 Vim 的世界里,模式轉換對應著你的節奏感。寫東西寫到爽的時候你一定能體會到這種妙不可言的節奏感,模式轉換幫助你建立和強化你的節奏感。請不要為模式轉換做出的按鍵操作感到多余,因為用不了多久它們就會變成你的下意識操作。就好像歌手要練習呼吸一樣自然而然。你會因為寫作時一時停頓下意識的轉筆感到多余嗎?你完全不會注意到,這是你的本能反應,提醒你你需要節奏。
在 Vim 的世界里,一切都是對象(好熟悉的一句話啊……)。一個字符是一個對象,一個詞是若干字符組成的對象所以它也是對象,一句話是若干個詞組成的對象所以它還是對象,一段話、一個代碼塊,甚至整篇文章,只要是邏輯上可以劃分的部分都可以視為對象。因此你不必靠鼠標/快捷鍵的選擇來建立你要處理的對象(這樣你總得人為的鎖定區域邊界)取而代之的是合乎邏輯的語義化指令操作。
比如說,當你在常規模式下輸入 caw 的時候,它的意思是:改寫一個詞(change a word)。
再例如,當你在常規模式下輸入 d3k 的時候,它的意思是:向上刪除 3 行(delete 3 upwards),k 是上,你已經習慣了吧?
你根本不必考慮具體的邊界在何處,對于人腦來說判斷邏輯事物的界限本就是一瞬間的事情,手動做出選擇難道不是一種退化嗎?你要做的就是告訴 Vim 你要對哪個目標做出何種編輯動作,就像說話一樣簡單。OK,這樣一來的確有很多指令需要你掌握,但就像上面的例子所演示的那樣,絕大部分的指令都是語義化的,一旦建立起思維與指令之間的聯系,那便順理成章了。
于是在做出指令的時候總是需要返回常規模式就很容易理解了,因為編輯操作打斷了輸入的節奏,你只是很自然的切換了你的節奏而已。這就是為什么我希望你記住只要你不再輸入就返回常規模式的原因,其背后蘊含的哲學就是:保持節奏。
我有過好多年的音樂生涯,音樂教會了我許多事情,其中一件事就是節奏的重要性。我樂隊的鼓手曾經說過:
速度快不一定節奏穩,但是節奏只要穩了,速度就一定能上去。若是一個鼓手空有速度和技術但卻不夠穩,無法掌控節奏的話,他就毀了。
這是真理。追求技巧和速度是所有野心勃勃的新手們共有的特征,然而極少人能夠說服自己先建立起一個穩定的技術基礎,速度和技巧是水到渠成的事情。或許這就是這個世界大師總是少數人物的緣故吧。
Vim 的模式轉換就是一種幫你建立起堅實基礎的有效手段,它不是憑空臆造的,而是取道于人們的生理習慣并加以符號化。它足夠簡單,但卻在多年以來被證明行之有效。我不會教你如何獲得驚人的速度和超凡的技巧,因為這些東西你自然而然都會得到,前提就是:保持節奏,保持簡單。
預告到現在為止,似乎我講的干貨不夠多哦。不過不要擔心,前期需要強調和理解的哲學已經足夠了,你也有了充裕的時間來消化它們,并且把基礎移動和模式轉化掌握于心(你做到了是吧?)。下一講我們開始奉獻干貨,先從一套基本的 Vim 配置開始。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24764.html
摘要:本文將以此為起點,介紹一些替換小技巧。實話實說,使用命令來替換有違于大多數程序員的習慣。接下更進一步,教多幾個小技巧。這么一來,替換將僅在當前大括號內生效。在替換局部變量時,比起全局替換,這樣的替換方式無疑會更高效。 想必用過Vim的人都知道,在Vim里面,以下命令可以替換當前文件的內容: :[range]s/{要被替換的模式}/{替換的內容}/[flags] 其中range指定替換命...
摘要:之所以能卓爾不群靠地就是一種自成一派且精悍有效的編輯器哲學當然也是,就好像網游千千萬卻唯有一覽眾山小,那靠地不是技巧與外在,而是與眾不同的世界觀。征服其實是一種領悟,我融入了的哲學而已。這也是好東西,它比上一個更貼近的哲學。 就在幾個小時以前,我回答了一個關于推薦開發工具的問題,很多朋友表示喜歡和鼓勵,非常感謝!我也很想多寫一些細節,于是便起意開一個系列來聊聊我多次提到的 Vim。 ...
摘要:插件鍵位映射技巧性的配置等等都是錦上添花,它們有助于你進一步提高效率以及個性化你的工作環境,但是對于哲學的理解幫助甚少。為你開啟語法高亮。你可以自定義各種語言的語法高亮,無非就是根據這些規 如果沒有挑戰,人生將多么無趣! 兩種副本 在我的硬盤上總是保留著(至少)兩份 Vim 的配置文件。其中一份是所謂完全正式版,它的文件名是 .vimrc,到本系列結束的時候,我們將了解其中...
摘要:的哲學第四篇姍姍來遲,狗血的原因我就不多說了,好消息是我將為這個系列帶來一些動態演示。所以目前為止你學會上述四個動作指令就足夠了。以詞為單位使得我們可以更精確也是更具語義化的移動光標,并且要比逐個字符的移動要快得多。 Vim 的哲學第四篇姍姍來遲,狗血的原因我就不多說了,好消息是我將為這個系列帶來一些動態演示。原本我打算錄視頻的,但是文章都寫了那么些篇了,現在再錄視頻似乎晚了些,所以我...
摘要:原文鏈接適合自己的,才是最好的被稱為編輯器之神,是我用過之后才體會到的,用之前實在不敢對它做出什么評價。最初的不適,換來的是效率的飛升。感悟在學習使用的過程中,我最大的感悟就是適合自己的,才是最好的。 原文鏈接:Vim - 適合自己的,才是最好的 Vim 被稱為編輯器之神,是我用過之后才體會到的,用之前實在不敢對它做出什么評價。在大學時代,Vim 的大名就已如雷貫耳,但由于它陡峭的學...
閱讀 3143·2021-11-23 10:02
閱讀 3118·2021-11-16 11:53
閱讀 3093·2021-09-23 11:21
閱讀 3369·2019-08-30 13:02
閱讀 1622·2019-08-29 16:18
閱讀 1557·2019-08-29 12:55
閱讀 1457·2019-08-26 12:24
閱讀 2085·2019-08-26 10:36