把天賦帶回蘋果?!

By A小編 2023/06/30
Monterey

聲明:此篇文章為A小編使用 Linux 兩年後,又回頭撿起 macOS ,並且把一些在 Linux 世界中學到的技巧應用在 macOS 的心路歷程。會從A小編 2017 年一開始使用 macOS 的過程開始說起……

前期

從 2017 年初開始,A小編的第一台電腦就是 MacBook Air 2015 。一開始A小編也不懂那些命令行、終端機之類的東西,都是用圖像化界面的東西。而且也不懂哪些軟體好用,所以也沒有買什麼軟體。直到 2020 、 2021 年左右,A小編才開始購買一些工具軟體,像 Macs Fan Control BetterTouchTool 等等,來強化A小編在 macOS 的使用體驗。關於其他推薦軟體詳見: A小編也推薦的Mac軟體清單

在 Linux 中學到?

在 2021 年暑假,A小編學習了關於 Linux 的一些東西,隨後就把 macOS 切成雙系統,安裝 ubuntu 。而後在其他各個發行版不斷學習各種命令行工具(詳見:對於 Linux 之所思)。其中最重要的,A小編認為是學會、並且習慣使用 vim。並且也學會使用 平鋪式窗口管理器 。 更重要的是,A小編也習慣了在 Linux 各個發行版上使用命令行的包管理器。

那,為什麼會想回頭使用 macOS 呢?

因為今年(2023年)A小編的 MacBook Air 也六歲了,而且之後上班基本上是需要使用微軟的 Office ,所以一定要有一台 pc 或 Mac 是能夠運作 Office 的。也因此才會讓A小編想回來使用 macOS 。

而且,這次A小編也學會使用 NixOS 了,因此也更有底氣解決之前在 macOS 上面糟糕的包管理器體驗。可能有讀者會問, Mac 上也能裝包管理器?答案是:沒錯,甚至 windows 也能裝,只是這兩者的包管理器體驗上基本是比不上其他 Linux 發行版的。有人肯定會問,那學會  NixOS  跟 Mac 的包管理有什麼關聯?因為 NixOS 的包管理器就叫做 Nix ,它可以用在各個 Linux 發行版上,甚至是 macOS 上也行用。不過它的缺點是說明文檔寫的比較模糊,網路上教學也比較少。但是這次A小編算是比上一次使用時更瞭解 Nix 了,加上之前剛學 Linux 時,A小編也裝過  Homebrew  以及  MacPorts  等等的 包管理器 。 只不過,它們兩個都各自有一些問題,導致使用體驗不好。也因此在這次的回歸,A小編才打算重新使用 Nix 來作為在 macOS 上的包管理器。

Homebrew 和 MacPorts 的問題

像 Homebrew 就是它本身機制的問題,導致其運作速度慢(跟其他 Linux 發行版的包管理器相比),而且有些用 Homebrew 裝的軟體,使用起來就是怪怪的。像A小編很喜歡在終端機中使用 tmux 。它是一個終端機管理工具。在預設的情況下,它是使用「Ctrl+B」」作為前綴按鍵,按完後再按其他的快捷鍵。這個前綴按鍵是可以更改的,不過A小編用習慣預設的了。但是 Homebrew 給人家預設成「Ctrl+A」,按理說是可以改的,但不知道為什麼就是改不了。而且, Homebrew 的操作指令混亂(當然也可能只是A小編沒有花心思搞懂的問題),常常搞到發瘋。

後來,A小編就改用 MacPorts 。它的問題是,一定要本地編譯軟體,對性能不強的電腦實在非常不友善。而且也發生過剛安裝時可以安裝,但過一陣子要更新時,就編譯失敗的軟體。加上 MacPorts 的軟體包整體而言偏舊,根據  Repology  網站所寫, MacPorts 上,約有 30% 的包是過時的,是需要更新的(截至2023年6月21日)。在 Homebrew 上的包算是夠新,但它的包數量比較少。

Nix 的優點

NixOS,其作為一款 Linux 的發行版,有一個很直接的優點就是:包的數量多而且更新頻率高,縱使不是全部的包都能在 macOS 上安裝,能裝的也夠多了。而且,假如搭配  nix-darwin  一起安裝的話,就可以實現跟 NixOS 上面一模一樣的軟體包安裝方式:把要安裝的軟體以及對電腦的設定寫進一個文件裏面(在 NixOS 上叫作  configuration.nix  ,在 macOS 上叫作 darwin-configuration.nix ),然後再跑一個指令,就可以輕鬆完成安裝。而這種安裝方式 NixOS 官方稱作「聲明式」安裝。假設要刪掉一個軟體也很簡單,去那個設定文件,把要刪掉的軟體的名字刪掉,再跑跟安裝軟體時同樣的指令就好。(這邊A小編只是簡單說明大概而已,實際上  Nix 的學習曲線是非常陡峭的 , 因為它的邏輯跟其他包管理器截然不同,需要對其有很深刻的理解,才能運用自如。)

Curve

圖片來源:  Probably the best lecture of nix fundamentals on the internet 

當然,你也可以用普通包管理器的方式來使用 Nix ,就是要安裝一個軟體時先打一個指令,解除安裝時再打個不同的指令。一開始A小編也是這樣使用 Nix 的,只是總覺得這樣用差點意思,所以才會在這次回歸時,改搭配 nix-darwin 一起使用。

還帶了什麼回 macOS ?

因為A小編在 Linux 世界中,已經習慣了一套以鍵盤為主、滑鼠作輔助的操作方式了,所以這次回 macOS ,A小編也盡可能地實現全鍵盤操作的設定。加上為了統一打字習慣,A小編也把輸入法換成跨系統通用(就是在 Linux 、 macOS 、 windows 都可以用)的輸入法。以下是這次A小編帶回 macOS 的東西:

  1. Amethyst :它是在 macOS 的一個平鋪式窗口管理器,設置不難,但是客製化的選項較少。另一個什麼都可以客製化的叫做 yabai
  2. Google 日文輸入法 :最早在 macOS 中,A小編一直是用內建的日文輸入法,其實用得也蠻習慣的。不過在 Linux 中,A小編一直是使用  mozc  日文輸入法,它是 Google 日文輸入法的開源版本。所以為了保證在所有系統上一致的打字體驗,在這次回歸,A小編就安裝了 Google 日文輸入法。( windows 也可安裝。)
  3. RIME/中州韻輸入法引擎 :它是一個跨平台的輸入法框架,在不同的系統中,使用不同的前端來實現。例如:在 windows 中叫做「小狼毫」、在 macOS 中叫做「鼠鬚管」、在 Linux 中通常叫做「 Rime 中州韻」。肯定有人會問,輸入法就用電腦內建的不就好了?因為在 Linux 世界中,沒有一套固定的中文輸入法,如果是注音的話,通常用 新酷音 ,但因為A小編後來自己去學拼音輸入法,所有A小編後來都是用拼音打字的。不過拼音有個問題,就是不論是哪個系統的拼音,都不能打聲調。而且每個系統預設的拼音輸入法它們的「脾氣」都不一樣,所以為了能夠統一使用體驗,使用一套跨平台的輸入法是有必要的。在 Rime 中,A小編是使用 地球拼音 ,它的特色是可以打「聲調」,這樣子在選字上會更方便。
  4. Vimium-C :它是一個瀏覽器插件,能夠讓你使用跟 vim 一樣的熱鍵來控制瀏覽器。如果在 Safari 瀏覽器上的話,可以使用 vimari

善用 vim

最早A小編剛用 macOS 時,A小編根本不知道什麼是 vim ,是後來接觸 Linux 後,A小編才知道這個「神之編輯器」。不過,A小編也是到現在,才比較習慣用 vim 來打網站(這篇文章就是用 vim 打的)。為什麼這麼慢才習慣用 vim 是因為一開始打網站是用  VS Code  ,其中A小編特別依賴  Live Server  這個插件,它可以讓你在瀏覽器實時預覽你寫的網頁。而這個插件在 VS Code 裡面只要去安裝插件的地方,搜尋完用滑鼠按一下就安裝好了。但是在 vim 的插件中,A小編一直找不到合適的。直到使用 NixOS 之後,因為在 NixOS , VS Code 裝插件很麻煩(要另外寫設定文件),所以A小編開始研究能否直接在終端機中使用 Live Server,之後學會了自己從命令行安裝、啓動 Live Server 。

也因此,這次回歸 macOS ,A小編就沒有裝 VS Code 了。因為A小編基本上也只是打打網頁,有時候寫一些小腳本,然後打一些 Markdown 筆記而已,用 vim 加上一些插件或命令行工具就足夠了。以下介紹其他A小編使用的 vim 插件以及幾個命令行工具:

  1. vim-plug :這是一個插件管理工具,讓你方便安裝、更新插件。
  2. papercolor-theme :這是一個顏色主題,A小編覺得易讀性高,也對眼睛友善。
  3. vim-visual-multi :這個插件可以讓你在 vim 裡面使用複數個光標。
  4. Emmet-vim :這個插件可以讓你快速生成 HTML 語法,不用一個一個慢慢打。
  5. NERDTree :這是一個在 vim 中的檔案管理器,可以讓你瀏覽、切換檔案都不用離開 vim 。
  6. indentLine :這個插件可以在程式中的括號和括號間顯示一條虛線,方便辨識。
  7. CSS Color :這個插件可以讓你在 vim 中直接檢視 CSS 樣式表中的顏色代碼究竟是什麼顏色。
  8. vim-commentary :這個插件可以讓你按一下快捷鍵就把程式碼註解掉,而不用慢慢打註解的打法。
  9. smartim (Mac only) :這是一個插件讓電腦可以自動切換成預設的英文輸入法當你進入 Normal mode 。
  10. Grip -- GitHub Readme Instant Preview :這是一個命令行工具,可以讓你在瀏覽器中實時預覽你的 Markdown 文件。它會用 GitHub 的 README.md 的風格渲染文件。

dotfiles

這邊也提供A小編在 mac 上使用的各種命令行軟體的設定文件,如果有需要的人可以參考一下: Nix-On-MacOS

結語

好了,那以上就是這次的內容。若能讓您對 macOS 中的包管理器之現狀、一些不錯但比較小衆的軟體還有一些 vim 插件有更多的認識的話,那是再好也不為過了!