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