這是一場沒有硝煙的戰爭,兩名開發者在咖啡廳裡狹路相逢——一個是 neovim 信徒,另一個是 VS Code 忠實用戶。他們互相瞧不起,彼此的筆電、開發環境、甚至貼紙都充滿了敵意。
☕ 他坐在咖啡廳最角落,手中的 ThinkPad X1 Carbon(黑色無 Logo 銘牌,鍵帽微磨損) 散發著一股工程師的孤傲。他的筆電貼紙是一行簡單的 「I ❤️ Vim」,旁邊貼著一個 Tux 企鵝,還有一張寫著 「BTW, I use Arch」 的小標語。
💻 作業系統:Arch Linux(自動進入 TTY,黑底綠字,無 GUI)
🛠 開發工具:Neovim + Tmux + Alacritty,整個畫面就是純黑背景加上奇怪的快捷鍵組合。
📜 配置:.vimrc 轉移到 init.lua,還在研究怎麼讓 LSP 比 VS Code 快 0.1 秒。
他嘴角浮現一絲不屑的微笑,看著不遠處的 VS Code 開發者。「那傢伙還在用 GUI?真是浪費 RAM。」
☕ 他坐在靠窗的位置,桌上擺著 最新款的 MacBook Pro 16 吋(M4 Max,貼紙滿滿),機身鋁殼反射著咖啡廳柔和的燈光。他的筆電貼紙上寫著 「Code. Eat. Sleep. Repeat.」,還有一張 「Powered by ChatGPT」 的小貼紙,旁邊還貼著 Notion 的 Logo。
💻 作業系統:永遠保持最新的版本 (目前是 macOS Sequoia)
🛠 開發工具:VS Code + Copilot + Prettier,每行程式碼都有 AI 幫他補完,根本不用自己敲鍵盤。
📜 配置:settings.json 裡全是自動格式化,甚至連 Debug Console 都開著。
他偷偷瞄了一眼 neovim 開發者,內心冷笑:「那傢伙寫個 function 可能還要手動對齊大括號吧?」
VS Code 開發者不經意地 cmd + P,秒速打開檔案,補上幾行 Copilot 建議的 TypeScript 程式碼,然後輕鬆 cmd + S,不帶一絲猶豫。
neovim 開發者冷哼一聲,只見他手指飛舞,:w
一氣呵成,接著用 Tmux 分割視窗,開啟 lazygit,再用 fzf-telescope 搜索檔案,瀟灑地進行 Git 操作——全程沒有動滑鼠。
「GUI 只是軟弱者的幻想。」 neovim 開發者內心默念。
「CLI 只是折磨自己的方式。」 VS Code 開發者則在心裡反駁。
兩人對視了一眼,彼此心知肚明:
「你才是錯的那一方。」
☕ 兩位開發者在咖啡廳再次交鋒。他們都不約而同地決定「設定開發環境」,但他們的方式卻截然不同。
💾 新環境配置方式:從 0 開始,手動配置,連 .bashrc
都要親手寫。
stow neovim tmux zsh
,一切回到自己最熟悉的樣子。:PlugInstall
下載 20+ 個 Vim 插件,然後開始 Debug 為什麼 LSP 會壞掉。⚠️ 這個過程花了 30 秒,而且他對著 nvim --version
測試了一下,覺得開啟時間還是慢了 0.03 秒,可能要重寫一部分配置。
☁️ 新環境配置方式:登入 GitHub,開啟 VS Code,同步所有設定,五分鐘搞定。
settings.json
,檢查 AI 自動補全有沒有開啟。⚠️ 這個過程只花了 3 分鐘,但他有點懷疑自己是不是已經變成 Copilot 的附庸,因為他忘了上次手動寫程式碼是什麼時候。
☕ 在工作 30 分鐘後,兩人的筆電都開始發熱,風扇聲此起彼落。他們不約而同地打開 htop
/ Activity Monitor
,檢查記憶體使用狀況。
🛠 neovim 開發者的 htop
:
neovim
使用 30MB RAM,還有一點 Tmux、ripgrep、fzf,總共不到 150MB。htop
只顯示幾個進程,CPU 使用率低得讓人懷疑這台電腦是不是在睡覺。💥 VS Code 開發者的 Activity Monitor:
Code Helper (Renderer)
:2.3GBCopilot Agent
:700MBChrome
(開了 20 個 Stack Overflow 分頁):5GBSlack
(沒關掉):1GBSpotify
(背景播放 Lo-Fi):500MB💻 兩位開發者開始 Debug 各自的程式碼,方式完全不同:
🧠 neovim 開發者:
:e main.c
→ :set number
→ :set relativenumber
→ :Gdiffsplit
printf()
,慢慢檢查輸出,相信「簡單就是最好的 Debug 工具」。gdb
+ tmux split-window
,手動打斷點,觀察變數變化。⚡ VS Code 開發者:
console.log()
直接檢查輸出。printf()
?你還活在 90 年代嗎?」💼 兩人最終都完成了專案,但方式依舊充滿敵意:
🏆 VS Code 開發者:
🏆 neovim 開發者:
make
+ tmux split-window
,確保最大效率。🧐 neovim 開發者偷偷想過:「其實 Copilot 還滿方便的……」
😏 VS Code 開發者默默覺得:「有時候 Vim 的快捷鍵真的很快……」
但沒關係,他們還是要繼續瞧不起對方。
「你才是錯的那一方。」(再次對視,轉頭繼續寫 Code。)
☕ 隨著時間推移,兩人都進入了 coding 狂熱狀態,手指在鍵盤上飛舞,但彼此的風格、思維模式、寫法卻完全不同。他們不只在「開發工具」上有天壤之別,就連「寫程式的習慣」也互相瞧不起。
💻 VS Code 開發者的流程:
code my_project
:秒開 VS Code,專案結構一覽無遺。src/components/App.tsx
,按下 cmd + P
快速搜尋。import { useState } from 'react'
打錯。🔥 內心 OS:「這種效率,我不信有人能贏。」
🛠 neovim 開發者的流程:
cd ~/projects/my_project
。nvim .
進入編輯模式,Telescope 開啟 app.c
。#include <stdio.h>
。:w
總是可靠的。make && ./app
,再 tmux split
開 GDB 來 Debug。🔥 內心 OS:「寫程式就該這樣,一切盡在掌握。」
📝 VS Code 開發者的風格(TypeScript / JavaScript):
function fetchUserData(userId: string): Promise<User> {
return api.get(`/users/${userId}`);
}
const handleButtonClick = async () => {
const data = await fetchUserData(user.id);
setUserData(data);
};
🔥 內心 OS:「為什麼還要想變數名稱?Copilot 早就幫你想好了。」
📝 neovim 開發者的風格(C / Rust):
return (fd = open("data.txt", O_RDONLY)) == -1 ? (perror("open"), -1) : fd;
#define
macro,因為 const
太慢:#define MAX_BUFFER 1024
int *ptr = malloc(sizeof(int) * 10);
:make
,看 Compile Error。🔥 內心 OS:「寫程式就該簡潔高效,冗長的變數名是對性能的侮辱。」
💥 VS Code 開發者的方式:
try-catch
,錯誤訊息一定要完整:try {
const user = await fetchUserData(userId);
console.log("User data:", user);
} catch (error) {
console.error("Failed to fetch user data:", error);
}
console.log()
,第二時間 Google。🔥 內心 OS:「程式要優雅,錯誤一定要 log 清楚。」
💥 neovim 開發者的方式:
errno
,錯了就 perror()
,程式該死就得死:return (fd = open("data.txt", O_RDONLY)) == -1 ? (perror("open"), -1) : fd;
gdb ./app
,直接下斷點。strace
看系統呼叫。man errno
。🔥 內心 OS:「寫程式要面對錯誤,而不是假裝它們不會發生。」
📜 VS Code 開發者的方式:
cmd + shift + P
,搜尋「Commit & Push」。feat(user): add user authentication logic
🔥 內心 OS:「寫 Commit Message 的時間,還不如寫更多程式碼。」
📜 neovim 開發者的方式:
git add -p
,每個修改細節都要確認。.gitconfig
設定 commit.verbose=true
。Fix: 修正 malloc 錯誤,避免 Segmentation Fault
git rebase -i
來整理歷史紀錄,確保 Git Log 乾淨。🔥 內心 OS:「Commit message 是紀錄歷史,不是隨便寫寫的 Slack 訊息。」
💡 VS Code 開發者開始懷疑:「其實 CLI 操作 Git 好像真的比較強……」
💡 neovim 開發者有點動搖:「其實 Copilot 有時候真的幫得上忙……」
但不管怎樣,兩人還是要繼續瞧不起對方,因為這是屬於他們的尊嚴之戰。
「你才是錯的那一方。」(再次對視,然後繼續寫 Code。)
免責條款:純屬惡搞...