不用鼠标,程序员编程竟能如此高效?
作者 |?Matthieu CNEUDE
譯者 | 彎月,責(zé)編 | 屠敏
出品 | CSDN(ID:CSDNnews)
以下為譯文:
曾經(jīng),我是一名驕傲的Ubuntu用戶。Ubuntu不僅易于安裝,而且易于使用。在此之前,我是Windows用戶,感覺(jué)Windows和Ubuntu很相似。
然而,日復(fù)一日,年復(fù)一年,我的自豪感逐漸消失了,取而代之的卻是無(wú)邊無(wú)盡的煩惱。Ubuntu讓我大失所望:
-
有時(shí)會(huì)顯示奇怪的錯(cuò)誤。
-
非常慢。
-
必須手動(dòng)編譯許多官方代碼庫(kù)中沒(méi)有的應(yīng)用程序。
-
必須手動(dòng)編譯許多官方代碼庫(kù)中完全過(guò)時(shí)的應(yīng)用程序。
-
為了盡可能多地使用鍵盤,必須學(xué)習(xí)大量隨機(jī)快捷鍵,盡管只是一款基本的工具。
由于沒(méi)有更好的選擇,所以我堅(jiān)持了好多年。某天早上,我興致勃勃地打算升級(jí)LTS版本。然而,一切都崩潰了。我甚至無(wú)法啟動(dòng)Ubuntu。我想方設(shè)法修復(fù)所有問(wèn)題,但當(dāng)時(shí)的我對(duì)Linux一無(wú)所知,不知該從何處下手,毫無(wú)頭緒。Ubuntu論壇也沒(méi)有提供太多幫助,于是我決定重新安裝。
我的內(nèi)心充滿了痛苦,然而,我的老朋友Ubuntu,又一次華麗麗地讓我失望了。
幾個(gè)月后,我有幸與一群出色的開(kāi)發(fā)人員合作,他們向我展示了如何構(gòu)建高效的開(kāi)發(fā)環(huán)境。
于是,我的整個(gè)工作流程都發(fā)生了轉(zhuǎn)變。我從Ubuntu轉(zhuǎn)移到了Arch Linux、從Unity到i3、從PhpStorm到Neovim。經(jīng)過(guò)多年的默默抗?fàn)?#xff0c;我終于擁有了一個(gè)可擴(kuò)展、穩(wěn)定、高效的新系統(tǒng)。我甚至編寫了一堆腳本,只需一個(gè)命令即可安裝我所需要的一切。一切準(zhǔn)備就緒,我可以大展拳腳了。
不黑不吹,這成為了我職業(yè)生涯中最重要的一個(gè)轉(zhuǎn)變。為什么?
-
感謝Arch Linux,我學(xué)到了很多有關(guān)Linux的知識(shí)。
-
為了解決各種問(wèn)題,了解操作系統(tǒng)抽象層下的工作方式非常重要。
-
我認(rèn)為開(kāi)發(fā)人員必須了解Linux,因?yàn)閃eb服務(wù)器主要運(yùn)行在基于Linux的系統(tǒng)上。
-
我習(xí)慣于在所有工具中使用一套統(tǒng)一的快捷鍵。
-
我可以通過(guò)鍵盤完成90%的系統(tǒng)操作。我能記住這些快捷鍵,是因?yàn)檫@些鍵位的設(shè)置很合理,而不像ctrl + shift + alt + e等常見(jiàn)的GUI快捷鍵。
當(dāng)切換到如今使用的這套工具后,我真正體會(huì)到擁有一個(gè)優(yōu)秀、高效及可擴(kuò)展的開(kāi)發(fā)環(huán)境有多么重要。我感到賓至如歸。這套系統(tǒng)終于能夠滿足我所有的需求,我無(wú)需再跟系統(tǒng)作斗爭(zhēng)了。?
如今的我非常享受開(kāi)發(fā)的工作,而且我可以說(shuō):我享受到了十倍的編程樂(lè)趣!
在本文中,我們將討論:
-
為什么Linux shell是開(kāi)發(fā)人員的最佳工具?
-
為什么我們應(yīng)該使用Arch Linux?
-
什么是i3?
-
如何使用urxvt、tmux和tmuxp創(chuàng)建功能強(qiáng)大的終端?
-
一款迄今為止我所見(jiàn)過(guò)的最強(qiáng)大的IDE,它可以將Linux Shell的功能發(fā)揮到極致。
-
如何改善在終端中使用git的體驗(yàn)?
-
如何在shell中獲得更好的MySQL和PostgreSQL使用體驗(yàn)?
你對(duì)這些話題感興趣嗎?下面請(qǐng)隨我一起暢游無(wú)鼠標(biāo)開(kāi)發(fā)環(huán)境的夢(mèng)幻世界。
開(kāi)發(fā)人員的好朋友,Shell
圖:簡(jiǎn)單高效的Shell
在本文中,我將反復(fù)提到shell,最常見(jiàn)的shell有bash和Zsh,我使用的是后者,而且我強(qiáng)烈推薦。
純文本的力量
你可能在想:為什么要使用基于文本的Shell?
-
基于文本的Shell下有豐富的應(yīng)用程序。即便沒(méi)有完全滿足需要的工具,也可以很輕松地開(kāi)發(fā)一個(gè)shell工具,無(wú)需設(shè)計(jì)最上層的GUI。
-
可以為最終用戶提供許多可選的功能,讓最終用戶完全按照自己的意愿選擇。你不可能在一個(gè)圖形界面中塞入20個(gè)按鈕吧?但是,基于命令行的應(yīng)用程序可以有20個(gè)選項(xiàng)。
-
Unix的思想允許你使用特定的工具來(lái)滿足特定的需求。通過(guò)管道將一種工具的輸出作為輸入傳遞到另一種工具,這可以提供無(wú)窮無(wú)盡的可能性。
-
你可以利用Shell非常輕松地自動(dòng)化常見(jiàn)的乏味任務(wù)。自動(dòng)化是提高生產(chǎn)力并節(jié)省精力的關(guān)鍵。
-
通常命令行的執(zhí)行速度非常快。沒(méi)有沉重的圖形界面,也沒(méi)有3D菜單,來(lái)拖慢計(jì)算機(jī)的速度。
-
命令行不會(huì)占用大量?jī)?nèi)存。相比起Chrome來(lái)說(shuō),命令行可以節(jié)省80%的RAM。
“命令行工具比Hadoop集群快235倍。”
—— Adam Drake
我鼓勵(lì)你盡可能使用Shell。雖然剛開(kāi)始的時(shí)候,你可能會(huì)不適應(yīng),但Shell可以讓你受益良多。
CLI應(yīng)用程序之上的圖形界面又如何呢?在我看來(lái),它有嚴(yán)重的缺點(diǎn):
-
隱藏了許多可以通過(guò)CLI輕松使用的功能。
-
無(wú)法解決(甚至無(wú)法理解)來(lái)自CLI層的任何錯(cuò)誤。
遇到以下情況,你會(huì)感到很困惑:
-
在沒(méi)有圖形界面的情況下,在遠(yuǎn)程服務(wù)器上使用這類工具。
-
向經(jīng)驗(yàn)不足的開(kāi)發(fā)人員介紹該工具的實(shí)際工作原理。你可以解釋GUI,但不能解釋應(yīng)用程序本身,尤其是當(dāng)GUI和CLI采用了不同技術(shù)的時(shí)候,而且不幸的是這種情況非常普遍。
我有一段使用sourcetree的親身經(jīng)歷,sourcetree是git的圖形界面。當(dāng)時(shí)我在和一名初級(jí)開(kāi)發(fā)人員一起工作,而他不懂得git是如何工作的。每當(dāng)出現(xiàn)問(wèn)題時(shí),他都搞不明白GUI在后臺(tái)調(diào)用了什么命令。這比直接在Shell使用CLI git更令人沮喪。
無(wú)鼠標(biāo)方式
?
使用Shell的時(shí)候,你主要依賴鍵盤。可能你會(huì)覺(jué)得有點(diǎn)吃驚,但我會(huì)盡量避免使用鼠標(biāo)。因?yàn)檫@是提高效率的關(guān)鍵之一:雙手放在鍵盤上可以加快你的速度,而且更重要的是,可以讓你更加快樂(lè)。
以下是無(wú)鼠標(biāo)方式的一些優(yōu)點(diǎn):
-
將手從鍵盤移到鼠標(biāo)很累。試試看不用移動(dòng)手,你就明白了。
-
雙手一直放在鍵盤上會(huì)讓你倍感輕松。你無(wú)需在敲鍵盤和移動(dòng)光標(biāo)之間不斷切換。
-
即便只是編寫購(gòu)物清單,也有一種黑客的感覺(jué)!很酷,是不是?
ArchLinux:獲取最新的軟件
圖:Arch Linux在虛擬機(jī)上流暢地運(yùn)行
與其他Linux發(fā)行版相比,Arch Linux具有許多優(yōu)勢(shì)。
滾動(dòng)發(fā)布系統(tǒng)
?
滾動(dòng)發(fā)布系統(tǒng)究竟是什么?Arch Linux社區(qū)會(huì)不斷為我們和用戶提供所有軟件的更新。可確保你安裝的程序是最新版本。
你無(wú)需擔(dān)心自己是否錯(cuò)過(guò)了某個(gè)工具的強(qiáng)大功能和修復(fù)補(bǔ)丁。Arch Linux可以保證你的系統(tǒng)保持最新版本。
那么應(yīng)用程序是不是很豐富?Arch Linux的官方代碼庫(kù)非常龐大。大多數(shù)時(shí)候,你都可以找到自己所需的一切。如果找不到,你還可以訪問(wèn)AUR(Arch用戶代碼庫(kù)),找到你想要的一切。我一點(diǎn)也沒(méi)有夸張。在使用Arch Linux多年之后,AUR仍然能不斷帶給我驚喜。
唯一的缺點(diǎn):AUR的應(yīng)用程序并不一定經(jīng)過(guò)了良好的測(cè)試。所以,請(qǐng)謹(jǐn)慎使用。但是,只要查看其構(gòu)建記錄就可以知道安裝之后會(huì)發(fā)生什么。
當(dāng)從頭開(kāi)始安裝Arch Linux時(shí),你可以選擇每一個(gè)需要安裝的應(yīng)用程序。凡是你不需要的東西,都不會(huì)出現(xiàn)在你的硬盤上。未經(jīng)你的同意,任何應(yīng)用程序都無(wú)法在后臺(tái)運(yùn)行,你是掌控一切的主人。
ArchLinux周圍的社區(qū)也很強(qiáng)大。一般他們都值得信賴,而且他們不會(huì)在stack overflow上隨便拋出一些Shell命令卻不做任何解釋(這一點(diǎn)與Ubuntu有很大的不同)。
再說(shuō),誰(shuí)稀罕stack overflow呀?Arch Wiki才是最出色的Linux Wiki。同樣,這個(gè)網(wǎng)站至今仍然能帶給我很多驚喜,里面幾乎應(yīng)有盡有。
現(xiàn)在,你可能在想:Arch Linux穩(wěn)定嗎?它是否會(huì)每?jī)芍鼙罎⒁淮?#xff0c;讓你感覺(jué)無(wú)望?
你會(huì)發(fā)現(xiàn)網(wǎng)上的很多人都在長(zhǎng)篇大論討論這個(gè)問(wèn)題。我的建議?別聽(tīng)他們的。我每天都在使用Arch Linux,已經(jīng)堅(jiān)持了5年。在我安裝的過(guò)程中,Arch Linux從未崩潰過(guò),要說(shuō)有也是在我剛剛開(kāi)始嘗試使用的時(shí)候。
如果你謹(jǐn)慎使用AUR,那么完全可以依賴這款功能強(qiáng)大、輕巧且可自定義的Linux發(fā)行版。
有時(shí),pacman(不是吃豆人,而是Arch Linux的打包管理器)會(huì)要求你進(jìn)行一些手動(dòng)修改。但Arch Linux的官方網(wǎng)站會(huì)提供詳細(xì)記錄,而且可以立即解決。
使用i3管理窗口
圖:i3 的窗口
ArchLinux不帶任何類型的桌面或窗口管理器。你需要自行安裝。我毫不猶豫地選擇了i3 Windows Manager。
這是一款非常輕便、快速且易于使用的窗口管理器。i3沒(méi)有精致的3D效果。一切都是為了提高效率和生產(chǎn)力,避免在視覺(jué)上造成干擾。
你可以使用i3創(chuàng)建工作區(qū)。工作區(qū)占據(jù)整個(gè)屏幕,而且還可以從一個(gè)屏幕移動(dòng)到另一個(gè)屏幕。你可以在工作區(qū)中打開(kāi)一個(gè)或多個(gè)窗口。它們會(huì)嵌入到你喜歡的應(yīng)用程序。
很簡(jiǎn)單,對(duì)不對(duì)?而且最吸引人部分是:你可以使用鍵盤輕松完成所有操作。你可以通過(guò)簡(jiǎn)單的按鍵來(lái)打開(kāi)、移動(dòng)和關(guān)閉工作區(qū)或窗口。你還可以使用快捷鍵來(lái)調(diào)整窗口大小。你甚至可以使用快捷鍵來(lái)打開(kāi)自己喜歡的應(yīng)用程序。
一切都合乎邏輯。在第一次安裝i3后,只過(guò)了2-3天,我就可以順暢地使用它。你的肌肉可以記住你需要的快捷鍵。
i3的配置靈活性很大。如果你想嘗試一下的話,可以參考這篇文章(https://thevaluable.dev/i3-config-mouseless/),逐步完成基本的i3配置。在你對(duì)i3有足夠的了解之后,就可以根據(jù)需要對(duì)其進(jìn)行自定義。
ArchLinux Wiki提供了完善的i3文檔(https://wiki.archlinux.org/index.php/i3)。
Urxvt,Tmux和Tmuxp:將終端變成生產(chǎn)力猛獸
圖:Urxvt中的Tmux,打開(kāi)了4個(gè)窗格和兩個(gè)窗口
我嘗試了很多終端模擬器,而Urxvt是我的最佳選擇。
這是一款非常輕巧且快速的終端,尤其是如果你運(yùn)行Urxvtd、Urxvt守護(hù)進(jìn)程的話。它可以非常容易地生成任意終端。
話雖如此,由于有了Tmux,現(xiàn)在我只需同時(shí)打開(kāi)2-3個(gè)終端。這是一款功能強(qiáng)大的終端復(fù)用器,你可以:
-
創(chuàng)建會(huì)話,包括窗口和窗格。
-
根據(jù)需要在終端中打開(kāi)盡可能多的窗口。每個(gè)窗口都會(huì)占據(jù)整個(gè)終端窗口,而且還可以分成窗格。即使你需要3個(gè)窗口,每個(gè)窗口4個(gè)窗格(總共12個(gè)不同的Shell),tmux也可以輕松應(yīng)對(duì)。
-
分離和附著會(huì)話。想象一下你錯(cuò)誤地關(guān)閉了某個(gè)終端,這時(shí)你可以打開(kāi)一個(gè)新終端,然后附著會(huì)話就可以恢復(fù)整個(gè)tmux會(huì)話。
-
同步窗格。你需要在三臺(tái)不同的遠(yuǎn)程服務(wù)器上運(yùn)行完全相同的命令?那么只需打開(kāi)三個(gè)窗格,用一個(gè)命令同步它們,你在第一個(gè)窗格中鍵入的所有內(nèi)容都會(huì)被復(fù)制到其他窗格中。
-
還有很多我不了解的用法。
如上所示,一切都可以用鍵盤來(lái)管理。當(dāng)然你也可以使用鼠標(biāo),在學(xué)習(xí)期間使用鼠標(biāo)也很方便。
你甚至可以利用tmuxp,進(jìn)一步自動(dòng)化tmux會(huì)話。實(shí)際上,你可以編寫一個(gè)配置文件來(lái)打開(kāi)所需的窗口和窗格,并在其中自動(dòng)啟動(dòng)應(yīng)用程序。
假設(shè)為了啟動(dòng)一個(gè)新項(xiàng)目,你需要:
-
在一個(gè)窗格中運(yùn)行dockercompose。
-
在另一個(gè)窗格中,在Docker容器中運(yùn)行npm run dev。
-
在另一個(gè)窗口中,打開(kāi)到生產(chǎn)服務(wù)器的ssh連接。
在tmuxp的幫助下,你只需要一個(gè)命令行和一個(gè)簡(jiǎn)單的配置文件就可以自動(dòng)化上述所有操作。
適合自己的IDE
?
我選用的IDE是Neovim,它是Vim的一個(gè)強(qiáng)大分支,可以與Shell配合使用。Neovim和Vim非常相似,因此我會(huì)使用“Vim”來(lái)指代二者。
圖:本文就是用Neovim寫的
你害怕了?別跑。讓我解釋一下,為什么你應(yīng)該認(rèn)真考慮學(xué)習(xí)Vim的知識(shí)。
我寫了很多關(guān)于Vim的文章,這里我簡(jiǎn)單總結(jié)一下Vim的優(yōu)點(diǎn):
-
使用Vim編程很有趣。
-
Vim可以讓你充分利用鍵盤。
-
原版的Vim擁有很多功能,你總是能夠?qū)W到新技巧。
-
Vim有一個(gè)很好的社區(qū),其中維護(hù)著許多插件。不論你使用何種編程語(yǔ)言,不論是JavaScript、Golang、PHP還是Clojure,這些插件都能夠滿足你99%的需求。
-
你不必再受任何語(yǔ)言的限制。你想通過(guò)同一款編輯器使用Rust、Go和C編程,同時(shí)還可以使用自動(dòng)補(bǔ)齊、高亮顯示語(yǔ)法以及其他功能?Vim就是完美的選擇。
-
一切都是高度可配置的。忘記你的其他喜好吧,使用Vim,你可以微調(diào)任何所需的內(nèi)容。
-
不會(huì)有通知時(shí)不時(shí)地冒出來(lái),打斷你的工作(說(shuō)的就是你,Intellij IDE)。
-
你可以針對(duì)自己的工作流構(gòu)建自己的IDE,同時(shí)不必在IDE中塞滿你永遠(yuǎn)不會(huì)使用的東西。
-
非常快。
-
免費(fèi)。
改善Git:tig和diff-so-fancy
圖:tig:在分支層次結(jié)構(gòu)的頂部,你還可以在底部看到所做的所有修改
圖:diff-so-fancy 可以快速顯示所有的修改內(nèi)容?
我感覺(jué)在最常見(jiàn)的日常任務(wù)中,使用Shell版的git非常方便。有時(shí),git在用戶體驗(yàn)方面的決策雖然有些怪異,但我們最好一開(kāi)始就能意識(shí)到這一點(diǎn)。
基本上,你每天需要使用:
●????? git push
●????? git pull
●????? git branch
●????? git checkout
●????? git merge
●????? git rebase
●????? git diff
你真的需要一個(gè)完整的GUI嗎?
我使用的第一個(gè)有關(guān)Git的工具是tig,你可以利用這個(gè)工具遍歷git分支的層次結(jié)構(gòu),并顯示每個(gè)提交的詳細(xì)信息。
還有一個(gè)工具是git-so-fancy,它可以在終端中以非常易讀的方式顯示git diff。在提交代碼之前,我經(jīng)常使用它來(lái)驗(yàn)證自己的修改。
你可以從Arch Linux官方代碼庫(kù)下載這些工具。
更好的MySQL及PostgreSQL命令行工具
?
如果你需要在Shell中通過(guò)一個(gè)快速實(shí)用的界面來(lái)與數(shù)據(jù)庫(kù)交互,則我建議你嘗試mysql的mycli,以及PostgreSql的pgcli。
這些工具類似于MySQL和PostgreSql自己的CLI:
-
自動(dòng)補(bǔ)齊數(shù)據(jù)庫(kù)、表、連接等。
-
可以將常見(jiàn)的操作寫成代碼段。
如果想在Arch Linux上安裝這兩個(gè)工具,則需要通過(guò)AUR獲取它們。
你準(zhǔn)備好成為一名無(wú)鼠標(biāo)開(kāi)發(fā)人員了嗎?
生產(chǎn)力、多功能性、控制性和舒適性是我選擇構(gòu)建和配置整個(gè)開(kāi)發(fā)環(huán)境時(shí)考慮的主要因素。無(wú)鼠標(biāo)開(kāi)發(fā)環(huán)境改變了我作為一名開(kāi)發(fā)人員的生活,我想通過(guò)本文分享我從這次經(jīng)歷中獲得的知識(shí)。
有些從未嘗試過(guò)Vim的人說(shuō),Vim是地球上最復(fù)雜的工具,不要聽(tīng)他們胡言亂語(yǔ)。不要聽(tīng)他們爭(zhēng)論Arch Linux的崩潰次數(shù)比Windows 95還多。我相信這些言論并不屬實(shí)。
這種環(huán)境的設(shè)置和理解需要付出一些時(shí)間和精力,大約需要幾周的時(shí)間。但在這之后,你將擁有自己的開(kāi)發(fā)環(huán)境,不僅可以滿足當(dāng)前和將來(lái)的需求,還可以掌控一切,讓你感覺(jué)如魚得水。
圖:我的小窩
原文:https://thevaluable.dev/mouseless-development-environment-overview/
本文為 CSDN 翻譯,轉(zhuǎn)載請(qǐng)注明來(lái)源。
更多精彩推薦
?實(shí)用小技能 | 用 Word 和 Excel 自制一個(gè)題庫(kù)自判斷答題系統(tǒng)!
?中國(guó)數(shù)據(jù)庫(kù)產(chǎn)業(yè)的“高地戰(zhàn)事”
?融資 2000 萬(wàn)美元后,他竟將核心代碼全開(kāi)源,這……能行嗎?
?Get了!用Python制作數(shù)據(jù)預(yù)測(cè)集成工具 | 附代碼
?學(xué)會(huì)這10大高性能開(kāi)發(fā)技術(shù),輕松躲過(guò)裁員名單!
?小心!你可能玩了假的DeFi
點(diǎn)分享點(diǎn)點(diǎn)贊點(diǎn)在看
總結(jié)
以上是生活随笔為你收集整理的不用鼠标,程序员编程竟能如此高效?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Vmware 和 Windows 代理设
- 下一篇: 一张图看懂华为鸿蒙生态全新篇章 解锁未来