拋棄VS Code,轉(zhuǎn)向終端,我“移情別戀”的理由是什么?
不久前,我大部分的編程都會(huì)用VS Code來完成,除非必須用別的系統(tǒng)不得不選擇Vi或Vim。VS Code能滿足所有需求,甚至還有很多其他的功能,它就是萬事通。
VS Code有一個(gè)嵌入式終端,可以執(zhí)行所需要的命令。它還內(nèi)置文本編輯器和文件資源管理器,甚至還有g(shù)it(分布式版本管理系統(tǒng))功能。
但盡管如此,我還是決定拋棄它,原因如下:
1.強(qiáng)迫自己學(xué)習(xí)構(gòu)造塊
我認(rèn)為,使用GUI(圖形用戶界面)文本編輯器的缺陷之一,就是不能與cli(命令行界面)工具進(jìn)行互動(dòng)。cli是所有功能相同的GUI的基礎(chǔ),你不得不使用一個(gè)更局限但功能更強(qiáng)大的工具。
以git為例,如果要從遠(yuǎn)程數(shù)據(jù)庫(kù)提取一個(gè)文件,VS Code無法輕松做到,但git卻可以。
- git checkout <remote branch> --<path/to/file>
有時(shí)你仍必須用終端執(zhí)行某些命令,這是因?yàn)镚UI界面正是構(gòu)建在終端命令之上的(即VS Code中的git命令是基于git cli構(gòu)建的)。通過查看VS Code中的git功能,可以看到它提供了許多有用的命令,卻難以執(zhí)行復(fù)雜的git操作。
當(dāng)你要執(zhí)行復(fù)雜的操作但還不習(xí)慣使用cli,則需要較長(zhǎng)的時(shí)間來弄清楚它的使用方法。雖然這可能是一次性的情況,但它發(fā)生的頻率令人吃驚。使用cli是一項(xiàng)非常強(qiáng)大的技能,這樣你就能夠充分利用手頭的工具。
你不僅能了解這些命令工作的基本原理,還能創(chuàng)建自己的快捷方式,以提高工作效率。例如,某天伊始,你可能想把自己的分支更新到master數(shù)據(jù)庫(kù)里,那么就可以創(chuàng)建一個(gè)快捷方式,如:
- git fetch -a
- git checkout <branch name>
- git pull origin <branch name>
你也可以創(chuàng)建任何想要的命令字符串,并以關(guān)鍵字命名或取個(gè)別名,當(dāng)你想執(zhí)行這個(gè)命令時(shí)就可以調(diào)用它。現(xiàn)在命令就能為你服務(wù)了,而這只有了解了核心cli的工作方式才能實(shí)現(xiàn)。
2.簡(jiǎn)單
不知道讀者是不是和我一樣。每當(dāng)看到一個(gè)新工具或按鈕就忍不住去把玩或觸摸,直到它要么實(shí)現(xiàn)某功能,要么終止。像VS Code這樣的工具有太多現(xiàn)成的功能,所以我傾向于終止。當(dāng)我亂摁按鈕時(shí),不知道為什么一些預(yù)期行為沒有出現(xiàn),或者新的行為出現(xiàn)了,這就導(dǎo)致了一些麻煩和問題。
看看這個(gè)終端,告訴我,如果以前沒有經(jīng)驗(yàn),你會(huì)怎么去終止它。有點(diǎn)難對(duì)吧?你不能光敲擊按鈕等它發(fā)生反應(yīng),你得先做些研究。
cli的情況則恰恰相反,因?yàn)橐M(jìn)行更改,你必須明確要輸入什么命令或在何處進(jìn)行更改。雖然你仍然可能會(huì)終止一些東西,但會(huì)發(fā)現(xiàn)和糾正錯(cuò)誤卻更容易,因?yàn)槟愕幂斎胱约合肴サ姆较?,而不是從一系列選項(xiàng)中選擇,以這種方式終止似乎要慎重得多。這也再次證明了第一點(diǎn),這讓你能瀏覽整個(gè)系統(tǒng)并進(jìn)行更改,而不是讓GUI自動(dòng)為你更改。
3.快速
假設(shè)要?jiǎng)h除這個(gè)句子的第一個(gè)和最后一個(gè)單詞:
- ew look at thedolphins gross
你通常會(huì)怎么做?拖動(dòng)鼠標(biāo)-點(diǎn)擊空格*2-拖動(dòng)鼠標(biāo)-點(diǎn)擊空格*5?很簡(jiǎn)單的任務(wù)做起來卻很麻煩,而在vim中只需:
- dw - $ - b - dw
小朋友,你是否有很多問號(hào)?別著急,一旦你對(duì)它有了肌肉記憶(即通過重復(fù)將其整合到記憶中)之后,就不會(huì)這么覺得了,而且它們也是有意義的。
- dw - 刪除單詞
- $ - 行末的正則表達(dá)式符號(hào)
- b - 返回
與在屏幕上拖動(dòng)光標(biāo)相比,僅僅三個(gè)命令就可以輕松地執(zhí)行簡(jiǎn)單的文本編輯。還有很多類似的命令,你也可以創(chuàng)造自己的命令。
簡(jiǎn)言之,使用光標(biāo)要比使用鍵盤慢,因此,盡可能減少移動(dòng)光標(biāo)就能把更多時(shí)間用來解決手頭上的實(shí)際問題,而不是關(guān)心該把光標(biāo)放在哪里。雖然VS Code確實(shí)具有快捷方式的功能,但對(duì)我來說,能夠點(diǎn)擊屏幕就意味著,我不必“被逼無奈”地學(xué)快捷方式。
4.個(gè)性化
根據(jù)自己的喜好調(diào)整工作流程,起初需要花一些時(shí)間,但一旦實(shí)現(xiàn)了,你就會(huì)感到非常得心應(yīng)手了。無論是在myzsh中創(chuàng)建自定義別名,還是在vim配置文件中重置鍵盤,根據(jù)個(gè)人工作需要定制體驗(yàn)的方法有很多,設(shè)置系統(tǒng)讓它為你服務(wù)的方法也數(shù)不勝數(shù)。
這不是一個(gè)封閉的系統(tǒng),如果不喜歡某種運(yùn)行方式,自己更改代碼就好了。大多數(shù)東西都可以從.vimrc、.zshrc等配置文件中更改,即使配置文件中沒有任何可以更改的,也沒有什么可以阻止你更改代碼,你有這個(gè)能力。正如第一點(diǎn)中提到的,我們可以設(shè)計(jì)任何一組操作,從而使系統(tǒng)按照我們希望的方式工作。
對(duì)大多數(shù)人來說,選擇工具沒有這么多的條條框框,用能讓你最快、最好地完成工作的工具就好。但對(duì)我來說,我發(fā)現(xiàn)逼著自己走出舒適區(qū),使用學(xué)習(xí)曲線更高的工具(即學(xué)習(xí)難度大,但功能豐富的工具),能使我最終成為一個(gè)更高效的人。此外,cli工具有一個(gè)優(yōu)點(diǎn),即讓你更像電影中的網(wǎng)絡(luò)黑客。
另外,我在本文中只提到了幾個(gè)工具,但核心驅(qū)動(dòng)程序是內(nèi)置tmux終端復(fù)用器的nvim,我還會(huì)用grep來搜索文件。
本文轉(zhuǎn)載自微信公眾號(hào)「讀芯術(shù)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系讀芯術(shù)公眾號(hào)。