爲何我使用 Linux 開發

Linux 能用嗎?

當我對 Linux 的印象彷佛還停留在黑乎乎的命令行界面上的時候,我身邊的一些朋友告訴我或者建議我使用 Linux 時,我會一臉驚訝的問他,那個怎麼用(來開發或者平常使用)?html

Linux 有強大的命令行程序

Fish Shell

首先說說我天天打交道最多的 Shell 吧,我給本身設置的默認 Shell 是 Fish。你還能夠搭配 fzf 這個軟件,實現高級的命令補全功能。前端

Fish 的命令提示

Tig

Git 也是平常開發中使用頻率最高的軟件之一,Tig 則是 Git 的一個命令行界面,不只能夠展現圖形化提交記錄,還能對提交信息進行全文搜索,除此以外,這也是我找到的第二個可以快速打開超大 git 倉庫的 Git UI,另外一個是 Windows 專屬的 Git Extensions。linux

Tig —— Git 命令行的好伴侶

lazydocker

Docker 可讓我部署應用變得更加容易,而 lazydocker 則可讓我用一種「懶人」的方式來管理本機的 Docker。git

Lazy Docker —— 簡單易用的 Docker 管理面板.
docker

管理軟件包

不論是哪一個 Linux 發行版,都會自帶官方欽定的軟件包管理器。pacman + AUR + yay 是我最喜歡的軟件包管理方式,pacman 用來安裝來自官方倉庫的軟件,若是官方倉庫沒有收錄某個軟件,那麼 AUR 裏面大機率會收錄它,你甚至能夠在 AUR 中找到 JetBrains 全家桶和 Xilinx IDE。而 yay 則容許我用統一的方式來安裝來自不一樣軟件源的軟件包,極大的提升了使用體驗。shell

省心省力的軟件包管理器

個人電腦

Windows 桌面上有一個叫作「個人電腦」的圖標,可是這並不意味着我真的能徹底掌控個人這臺電腦。我無法隨意的修改系統的字體,我無法在命令行中顯示 Emoji(9102 年,微軟終於緩解了這個問題),我無法設置系統的默認快捷鍵,我無法根據本身的喜愛作不少的事情,在一些不是 PC 的設備上,我甚至無法關掉開機的「duang!!!」。不,這不是個人電腦。數據庫

而使用 Linux,我就再也沒有受過這種限制,先在 Wiki 上查找相關的說明文檔,而後根據文檔去修改對應的配置文件,出了問題能夠去問問神奇的搜索引擎,翻車死機了也不要緊,插上 LiveCD 一頓操做又可讓電腦正常的開機工做。就這樣,我在一次次不滿現狀、配置系統、翻車救磚、成功修改的循環中收穫了許多,也讓我定製出了我想要的工做環境。若是你想了解個人翻車收穫,能夠看看下面的一些文章:vim

平常開發使用體驗

讓我持續的使用 Linux 做爲平常主力操做系統的緣由很是簡單,由於跟他一塊兒工做很是的溫馨。

編寫代碼

編寫代碼的工具無非就兩種:IDE 與編輯器。我最經常使用的 IDE 是 JetBrains Rider,它一站式解決了我前端、後端以及數據庫開發的問題。若是隻是用來編寫簡單的文本,我首選的是 neovim,搭配 SpaceVim,顏值效率兩不誤。除此以外,vscode 也是我會用到的編輯器之一,可是我不怎麼用它來寫前端代碼,只有在須要編寫 PowerShell 腳本以及 Fake 腳本的時候我纔會用到它。

即時通信

郵件是最有效的溝通方式,因此 Thunderbird 確定少不了。國產聊天應用,例如 QQ 和微信,我都安裝在手機上,由於這上面只會有閒聊的消息,因此只須要使用 KDE Connect 同步一下消息通知就行了。我所在的開發團隊使用釘釘進行溝通,還好釘釘的網頁版比微信網頁版強不少,因此安裝一個 Electron 套殼的釘釘客戶端就很是足夠了,固然,有時候我比較懶的話,就直接使用 KDE Connect 來同步釘釘的消息,並不會在電腦上啓動客戶端。

窗口管理

在 Linux 上,我能夠選擇本身喜歡的窗口管理方式,我習慣按照窗口的使用場景把它們安排到不一樣的虛擬桌面上,這樣能夠減小在窗口選擇器中切換窗口的時間。對於經常使用的窗口,例如 Konsole 終端模擬器,我給他分配了 Meta + Enter 的快捷鍵,讓我能夠隨時隨地的喚出個人終端命令行,而不用在衆多的窗口中尋找。

Yakuake 是一個全局下拉式終端模擬器,能夠作到隨叫隨到,因此我專門用它來運行一些與工做無關的命令,例如在網上學習到了新的 shell 黑魔法,只須要按下 Ctrl + Alt + Space 下拉終端就能夠在本身的電腦上嘗試運行了。

從屏幕頂端下拉的終端

Office 全家桶

雖然個人主力系統是 Linux,可是我仍然可以享受到 Office 全家桶的便利。OneDrive + Office Online 基本能夠處理工做中會遇到的絕大多數的 Office 文件了。而 OneDrive 雲存儲也能夠經過使用 rclone 的方式掛載到個人電腦上,在使用體驗上與本地硬盤並無太大的差異。

個人 OneDrive

執行後臺任務

原先使用 Windows 的時候,能夠用 IIS 來守護開發時要用的 AspNetCore 進程,如今切換到了 Linux,我選擇了使用 PM2 + Nginx Docker 做爲替代品,相較於 IIS,這種運行後臺進程的方式更加輕量,不會涉及到權限的問題,並且出了問題也容易排查。

對於數據庫這樣的軟件,我並無選擇用安裝軟件包的方式來運行它們,Docker 更適合這類進程,經過一個 docker-compose 就可讓我實現一鍵啓動開發環境的效果。

而像 Aria2 以及 rclone 這樣的軟件,由於它們在運行的時候須要訪問個人文件系統,因此就不適合使用 Docker 來運行(Docker 會污染文件權限)。這個時候用戶級的 Systemd 就很是好用了,用戶登陸時啓動、失敗自動重試、網絡鏈接後啓動,這些須要均可以用 Systemd 來實現。

FreeDesktop 帶來的便利

由於有 FreeDesktop 的存在,因此我能夠很是容易的利用桌面環境提供的功能。

open 命令能夠用來在終端使用關聯的應用程序打開一個文件;xclip 則能夠用來操做剪切板中的內容; notify-send 則能夠用來建立通知消息。這些工具能夠幫助我打破終端與桌面環境的次元壁,例如在完成一個長時間任務後發送一個系統通知提醒我,很是的便利。除了這些命令行程序外,一些有圖形化界面的軟件也能夠利用 FreeDesktop 帶來的 API 來開發酷炫的功能。例如,若是你使用 fcitx 的話,按下 Ctrl + ;,就能夠查看剪切板的歷史記錄,KDE 自帶的 Clipboard 掛件也有相似的功能,並且更增強大。

libinput-gestures 也是一款很是實用的軟件,它能夠用來自定義觸控板手勢,支持的手勢種類多,並且能夠用來觸發任意的命令,是自定義系統行爲不可或缺的軟件。

最後

這篇文章受啓發於 爲何建議你們使用 Linux 開發,我與這篇文章的做者的觀點不太同樣,我並不會建議其餘人隨隨便便就把開發環境切換到 Linux,由於當一我的對 Windows 以及 MACos 感到很是不滿的時候,他天然就會選擇使用 Linux —— Talk is cheap, show me your dot files 😂。

相關文章
相關標籤/搜索