nano 是在 Linux 與 macOS 終端機編輯文字檔的工具,適合修改設定檔與短腳本。開啟後可以直接輸入文字,不必先切換編輯模式;畫面底部則列出存檔與離開等常用快捷鍵。這篇從基本操作、安裝與版本差異,整理到搜尋取代、復原與設定檔。
nano 是什麼
GNU nano 是一款在終端機裡運作的文字編輯器。它最早是為了取代 Unix 上的 Pico 編輯器而開發的自由軟體版本。nano 的設計哲學就是「簡單好用」——打開檔案就能直接打字編輯,不需要像 vim 那樣先搞懂什麼是 Normal mode、Insert mode。而且 nano 的畫面底部會直接顯示常用的快捷鍵,就算忘記操作也能隨時看到提示,非常適合剛開始接觸終端機的使用者。
很多人會問 nano 和 vim 到底該學哪個,這邊用一個表格快速比較一下:
| 特性 | nano | vim |
|---|---|---|
| 學習曲線 | 低,打開就能打字 | 高,需要學習模式切換 |
| 畫面提示 | 底部顯示快捷鍵 | 沒有提示,需要記指令 |
| 功能豐富度 | 基本編輯功能足夠 | 極度強大,可高度客製化 |
| 適合場景 | 快速編輯設定檔、小型修改 | 大量程式開發、專業文字編輯 |
| 預設安裝 | 大部分 Linux 發行版內建 | Ubuntu 預設只有精簡版 vi |
| 離開方式 | Ctrl+X | :q!(還要先按 Esc) |
簡單來說,如果只是偶爾需要在終端機裡改個設定檔或做些小修改,nano 就非常夠用了。如果是每天都在終端機裡寫大量程式碼的人,vim 的效率確實會更高,但那個學習成本也不是一天兩天的事。
存檔、離開與復原速查
已經在 nano 畫面內時,可先依下表完成操作。^ 代表 Ctrl,M- 代表 Meta;macOS 的 Option 是否作為 Meta,取決於終端機設定。GNU nano 也可用先按 Esc、放開後再按對應字母的方式輸入 Meta 組合。
| 需求 | 操作 |
|---|---|
| 存檔 | 按 Ctrl+O,確認底部檔名,再按 Enter |
| 存檔後離開 | 完成存檔後按 Ctrl+X |
| 放棄尚未儲存的修改 | 按 Ctrl+X;出現是否儲存的詢問時,依畫面選擇 No |
| 復原/重做 | GNU nano 使用 Alt+U/Alt+E;依終端機設定也可使用 Esc 再按 U/E |
若快捷鍵沒有作用,先看底部提示與 nano --version,確認執行的是 GNU nano 還是系統提供的其他版本。功能與設定不同時,以該版本的說明為準;目前 GNU nano 的 官方快捷鍵表 可用來對照。
安裝 nano
先確認現有版本,再依 macOS 或 Linux 的套件管理方式安裝。不同系統預載的編輯器不一定提供相同功能。
macOS 安裝
macOS 的 nano 指令可能指向 Pico,不同系統版本的預載內容可能不同。以下示範檢查系統路徑,若輸出指向 Pico,就不能直接套用 GNU nano 的全部功能:
# 查看 macOS 內建的 nano 其實指向 pico
ls -l /usr/bin/nano
# lrwxr-xr-x 1 root wheel 4 /usr/bin/nano -> pico
Pico 是 1990 年代 Pine 郵件軟體附帶的編輯器,GNU nano 最初就是為了做出一個自由軟體版本的 Pico 替代品。但經過多年發展,GNU nano 已經加入了大量 Pico 沒有的功能,像是 undo/redo、行號顯示、語法高亮、搜尋取代等。macOS 內建的這個 Pico 版本非常精簡,很多本篇教學提到的功能都不支援。建議用 Homebrew 安裝完整版的 GNU nano,如果還沒裝過 Homebrew 可以參考 macOS Homebrew 新手教學|安裝與使用指南。
# 安裝 GNU nano
brew install nano
# 用 which -a 確認系統上有哪些 nano
which -a nano
# /opt/homebrew/bin/nano ← Homebrew 安裝的 GNU nano
# /usr/bin/nano ← macOS 內建的 Pico
# 確認版本(應該要看到 GNU nano 而不是 pico)
nano --version
安裝完之後,Apple Silicon 預設安裝的 Homebrew nano 路徑是 /opt/homebrew/bin/nano;Intel Mac 通常是 /usr/local/bin/nano,只要 Homebrew 的路徑有在PATH 前面,輸入 nano 就會自動使用新版。如果發現 nano --version 還是顯示 Pico,可以在 ~/.zshrc 裡面加上 alias 強制指定:
# 在 ~/.zshrc 加入 alias 確保使用 Homebrew 版的 nano
echo "alias nano='/opt/homebrew/bin/nano'" >> ~/.zshrc
# 重新載入設定
source ~/.zshrc
Linux 安裝
大部分的 Linux 發行版都已經預裝了 nano,直接在終端機輸入 nano 就能確認。如果沒有的話,用套件管理工具安裝就可以。
# Ubuntu / Debian
sudo apt install nano
# CentOS / RHEL / Fedora
sudo dnf install nano
# Arch Linux
sudo pacman -S nano
# 確認安裝版本
nano --version
基本操作教學
開啟檔案後可直接編輯文字,存檔與離開則使用底部提示的快捷鍵。
開啟檔案
用 nano 開啟檔案的方式非常直覺,直接在 nano 後面接檔案名稱就好。如果檔案不存在,nano 會自動建立一個新檔案。
# 開啟已存在的檔案
nano myfile.txt
# 如果檔案不存在,nano 會建立新檔案
nano newfile.txt
# 開啟檔案並顯示行號(需要 GNU nano,macOS 內建版不支援)
nano -l myfile.txt
# 開啟檔案並跳到第 50 行
nano +50 myfile.txt
# 用 root 權限編輯系統設定檔
sudo nano /etc/hosts
了解 nano 的畫面

打開 nano 之後,畫面大致分成三個區塊:
- 標題列(最上方):顯示 nano 的版本、目前開啟的檔案名稱。如果檔案被修改過但還沒儲存,會出現「Modified」字樣。
- 編輯區(中間):檔案的內容,游標在這裡閃爍,你可以直接打字編輯。
- 快捷鍵列(最下方兩行):顯示常用的操作快捷鍵。這是 nano 最貼心的設計,隨時都能看到提示。
在快捷鍵列裡面會看到兩種符號,這邊特別說明一下:
^代表 Ctrl 鍵。例如^X就是按Ctrl + X。M-代表 Meta 鍵,在大部分系統上就是 Alt 鍵。例如M-U就是按Alt + U。macOS 使用者需要額外設定才能使用 Meta 快捷鍵,後面的常見問題會詳細說明。
儲存與離開
這大概是用 nano 最需要知道的兩個操作了。
儲存檔案(不離開):按 Ctrl + O(WriteOut),nano 會在底部顯示檔案名稱供確認,直接按 Enter 就會儲存。如果想存成別的檔名,這時候可以修改檔名再按 Enter。
離開 nano:按 Ctrl + X。如果檔案有修改過但還沒儲存,nano 會詢問是否存檔:
- 按
Y:儲存後離開。接著會顯示檔名供確認,按Enter就好。 - 按
N:不儲存直接離開(放棄所有修改)。 - 按
Ctrl + C:取消,回到編輯畫面繼續編輯。
所以最常見的操作流程就是:編輯完內容後,按 Ctrl + X,按 Y 確認儲存,按 Enter 確認檔名,搞定。
實用開啟參數
nano 有幾個常用的命令列參數,可以在開啟檔案的時候加上去。下面標示「GNU nano」的參數代表 macOS 內建版(Pico)不支援,需要透過 Homebrew 安裝 GNU nano 才能使用。
| 參數 | 功能 | 範例 | 支援 |
|---|---|---|---|
+行號 | 開啟後跳到指定行 | nano +100 app.log | 全部 |
-m | 啟用滑鼠支援 | nano -m myfile.txt | 全部 |
-l | 顯示行號 | nano -l config.yaml | GNU nano |
-B | 儲存時自動建立備份檔(filename~) | nano -B /etc/nginx/nginx.conf | GNU nano |
-i | 自動縮排(新行會跟上一行對齊) | nano -i script.sh | GNU nano |
-E | 將 Tab 轉換為空格 | nano -E code.py | GNU nano |
如果在 macOS 上還沒安裝 GNU nano,想知道目前游標在第幾行,可以按 Ctrl + C 查看游標位置,會顯示行號、欄位和總字元數。
游標移動與瀏覽
以下操作用來移動游標、切換頁面及定位到指定位置。
基本移動
除了用方向鍵移動游標之外,nano 也有一些快捷鍵可以更快速地在檔案裡面移動。
# 基本移動
Ctrl + A # 跳到行首
Ctrl + E # 跳到行尾
Ctrl + Y # 向上翻一頁(Page Up)
Ctrl + V # 向下翻一頁(Page Down)
# 跳到指定行號
Ctrl + _ # 輸入行號後按 Enter 跳過去(Ctrl + Shift + -)
# 跳到檔案開頭 / 結尾
Alt + \ # 跳到檔案第一行
Alt + / # 跳到檔案最後一行
快速移動
如果想要一次移動一個單字而不是一個字元,可以用下面的快捷鍵:
# 以單字為單位移動
Ctrl + Space # 往前跳一個單字
Alt + Space # 往後跳一個單字
# 以段落為單位移動(需要 GNU nano 新版)
Alt + ( # 跳到上一個段落
Alt + ) # 跳到下一個段落
編輯操作
選取文字後可以剪下、複製與貼上;GNU nano 也提供復原與重做。
剪下、複製與貼上
以滑鼠選取後,可使用終端機提供的複製與貼上功能;macOS 常用 Command+C/Command+V,其他終端機依設定使用對應按鍵。nano 自己的剪下、複製與貼上則使用下列快捷鍵,不能把 Ctrl+C/Ctrl+V 當作通用剪貼簿操作。
nano 的剪下貼上邏輯跟一般的文字編輯器有點不一樣,它是以「整行」為單位操作的。
# 剪下游標所在的那一整行
Ctrl + K
# 複製游標所在的那一整行(不會刪除)
Alt + 6
# 貼上剛才剪下或複製的內容
Ctrl + U
有一個很實用的技巧:連續按多次 Ctrl + K 會把多行一起剪下到同一個剪貼簿裡,之後按 Ctrl + U 就能一次貼上所有剪下的行。但如果中間有移動過游標,剪貼簿就會被重置,只會剪下最後那一行。
選取文字
如果不想整行操作,而是只想選取一部分文字,可以用標記功能。
# 在游標位置設定標記(開始選取)
Alt + A
# 移動游標選取範圍(選取的文字會反白)
# 用方向鍵或上面提到的移動快捷鍵都可以
# 對選取的範圍進行操作
Ctrl + K # 剪下選取的文字
Alt + 6 # 複製選取的文字
# 貼上
Ctrl + U
# 取消選取
Alt + A # 再按一次取消標記
復原與重做
改錯了不用怕,nano 支援 undo 和 redo。
# 復原上一步操作(Undo)
Alt + U
# 重做(Redo)
Alt + E
需要注意的是,undo/redo 功能需要 支援 undo/redo 的 GNU nano才有。如果在 macOS 上用的是系統內建的 nano(其實是 Pico),是沒有 undo 功能的,強烈建議用 Homebrew 安裝新版。
搜尋與取代
搜尋可先定位文字,再視需要逐筆或批次取代。修改設定檔時應核對取代範圍。
搜尋文字
在一個很長的檔案裡面要找特定內容,用搜尋比用眼睛慢慢看快多了。
# 開啟搜尋(Where Is)
Ctrl + W
# 輸入要搜尋的文字,按 Enter
# 搜尋下一個符合的結果
Alt + W
# 在搜尋畫面中切換搜尋方向
Alt + B # 切換為向前搜尋 / 向後搜尋
# 在搜尋畫面中啟用正規表達式搜尋
Alt + R # 切換 regex 模式
取代文字
搜尋加取代是編輯設定檔的時候很常用的功能,例如把舊的 IP 位址全部換成新的。
# 開啟搜尋並取代
Ctrl + \
# 操作流程:
# 1. 輸入要搜尋的文字,按 Enter
# 2. 輸入要取代成的文字,按 Enter
# 3. nano 會找到第一個符合的位置,問你要怎麼處理:
# Y - 取代這個,然後找下一個
# N - 不取代,跳到下一個
# A - 全部取代(不再逐一詢問)
舉個實際的例子,假設要把 Nginx 設定檔裡面的 port 從 8080 改成 3000:
# 開啟設定檔
sudo nano /etc/nginx/sites-available/default
# 按 Ctrl + \ 開啟搜尋取代
# Search: 8080
# Replace with: 3000
# 按 A 全部取代
# Ctrl + X → Y → Enter 儲存離開
快捷鍵對照表
把常用的快捷鍵整理成一張表,方便隨時查閱。Mac使用者使用 Option 鍵代替 Alt 鍵即可按出相應的功能。
| 分類 | 快捷鍵 | 功能 |
|---|---|---|
| 檔案 | Ctrl + O | 儲存檔案 |
| 檔案 | Ctrl + X | 離開 nano |
| 檔案 | Ctrl + R | 插入其他檔案的內容 |
| 移動 | Ctrl + A / Ctrl + E | 跳到行首 / 行尾 |
| 移動 | Ctrl + Y / Ctrl + V | 上一頁 / 下一頁 |
| 移動 | Ctrl + _ | 跳到指定行號 |
| 移動 | Alt + \ / Alt + / | 跳到檔案開頭 / 結尾 |
| 編輯 | Ctrl + K | 剪下整行 |
| 編輯 | Alt + 6 | 複製整行 |
| 編輯 | Ctrl + U | 貼上 |
| 編輯 | Alt + A | 開始 / 取消選取 |
| 編輯 | Alt + U | 復原(Undo) |
| 編輯 | Alt + E | 重做(Redo) |
| 搜尋 | Ctrl + W | 搜尋 |
| 搜尋 | Alt + W | 搜尋下一個 |
| 搜尋 | Ctrl + \ | 搜尋並取代 |
| 顯示 | Alt + N | 顯示 / 隱藏行號 |
| 顯示 | Alt + P | 顯示 / 隱藏空白字元 |
| 顯示 | Alt + # | 切換行註解 |
設定檔 .nanorc
GNU nano 可透過 .nanorc 設定行號、縮排與語法高亮;系統提供的 Pico 不一定支援這些設定。
設定檔位置
nano 的設定檔有兩個層級:
- 全域設定:
/etc/nanorc,影響所有使用者。 - 個人設定:
~/.nanorc(或~/.config/nano/nanorc),只影響自己,而且會覆蓋全域設定。
建議把設定寫在 ~/.nanorc,這樣不會影響到其他人,也比較好管理。
推薦設定
以下是一組實用的設定,每一行都有註解說明。把這些內容貼到 ~/.nanorc 就可以了。
# ============================
# 顯示設定
# ============================
# 顯示行號
set linenumbers
# 在狀態列持續顯示游標位置(行號、欄位、字元數)
set constantshow
# ============================
# 編輯行為
# ============================
# Tab 寬度設為 4 個字元
set tabsize 4
# 把 Tab 鍵轉換成空格
set tabstospaces
# 啟用自動縮排(新行會對齊上一行的縮排)
set autoindent
# 啟用滑鼠支援(可以用滑鼠點擊定位游標)
set mouse
# ============================
# 捲動與顯示
# ============================
# 超過螢幕寬度的行軟換行,避免需要水平捲動
set softwrap
# ============================
# 語法高亮
# ============================
# Linux:載入系統預裝的語法高亮定義檔
include "/usr/share/nano/*.nanorc"
# macOS Homebrew:如果用 Homebrew 安裝,改用下面這行
# include "/opt/homebrew/share/nano/*.nanorc"
NOTE: #開頭的文字是註解的意思,不會被 nano 讀取,也可以在不想生效的設定最前面加上 # 讓 nano 忽略設定,想要快速測試不同設定效果的時候很方便。
語法高亮
GNU nano 內建就支援語法高亮,而且預設已經有很多常見語言和格式的定義檔,像是 Python、JavaScript、YAML、JSON、Bash、HTML、CSS 等。只要在 ~/.nanorc 裡面加上 include 那一行,nano 就會根據檔案的副檔名自動套用對應的語法顏色。
不同系統上語法定義檔的路徑不太一樣:
| 系統 | 語法高亮檔路徑 |
|---|---|
| Ubuntu / Debian | /usr/share/nano/*.nanorc |
| CentOS / Fedora | /usr/share/nano/*.nanorc |
| macOS(Homebrew) | /opt/homebrew/share/nano/*.nanorc |
| Arch Linux | /usr/share/nano/*.nanorc |
如果發現某些檔案類型沒有語法高亮,也可以自己寫定義檔放到 ~/.nano/ 目錄下面,然後在 ~/.nanorc 裡面 include 進來。不過大部分常見的檔案類型都已經有內建支援了。
實際應用情境
設定檔、腳本與 Git 編輯訊息都可以在 nano 處理,以下示範常見用法。
用 sudo nano 編輯系統設定檔
這是 nano 最經典的用途。Linux 上很多系統設定檔都需要 root 權限才能修改,用 sudo nano 就能直接編輯。
# 編輯網路設定
sudo nano /etc/hosts
# 編輯 SSH 設定
sudo nano /etc/ssh/sshd_config
# 編輯 swap 設定(可以參考 Swap 教學文章)
sudo nano /etc/fstab
# 編輯 Nginx 站台設定
sudo nano /etc/nginx/sites-available/default
像是之前在 Linux Swap 是什麼?怎麼新增? 和 GCP VM 設定筆記 裡面,都有用到 sudo nano 來編輯系統設定檔。有了這篇教學,再回去看那些文章裡面的 nano 操作應該就很清楚了。
設定 nano 為預設編輯器
有些指令(像 crontab -e、git commit)會呼叫系統預設的文字編輯器,如果預設是 vim 而想改成 nano,可以在 Shell 設定檔裡面加上環境變數。
# 把以下兩行加到 ~/.bashrc 或 ~/.zshrc
export EDITOR=nano
export VISUAL=nano
# 加完之後重新載入設定
source ~/.bashrc # 如果用 bash
source ~/.zshrc # 如果用 zsh
設定之後,crontab -e 就會自動用 nano 開啟,不用再選編輯器了。
在 tmux 中使用 nano
如果有在用 tmux,在 tmux 的 Pane 裡面開 nano 是非常常見的工作方式。可以一邊用 nano 編輯設定檔,另一邊的 Pane 跑 log 或測試指令,改完存檔馬上就能看到效果。而且在 tmux Session 裡面用 nano 編輯的好處是,就算 SSH 斷線,原本的編輯狀態也不會消失,重新 attach 回來就能繼續。
常見問題
快捷鍵或顯示功能與預期不同時,先確認編輯器版本和終端機設定。
nano 的 ^ 和 M- 是什麼意思?
^ 代表 Ctrl 鍵,M- 代表 Meta 鍵。Meta 在大部分 Linux 系統上就是 Alt 鍵。另外一種按法是先按 Esc 再按對應的字母,效果一樣。例如 M-U(Undo)可以按 Alt + U,也可以先按 Esc 再按 U。
macOS 上 Alt 快捷鍵沒反應怎麼辦?
macOS 的終端機預設不會把 Option(⌥)鍵當作 Meta/Alt 使用,所以 nano 的 M- 快捷鍵會沒反應。解決方法依所用的終端機 App 而不同:
macOS 內建 Terminal.app:打開 Terminal → 選單列的「Settings…」→ 選目前使用的 Profile →「Keyboard」分頁 → 勾選「Use Option as Meta key」。
iTerm2:打開 iTerm2 → Preferences → Profiles → Keys → General → 把「Left Option key」改成「Esc+」。
設定完之後,Option + U 就等於 M-U(Undo),其他 Meta 快捷鍵也都能正常使用了。如果不想改設定,也可以用「先按 Esc 再按字母」的方式來替代。
nano 可以同時開多個檔案嗎?
可以。直接在指令後面接多個檔名就好:
# 同時開啟多個檔案
nano file1.txt file2.txt file3.txt
# 在檔案之間切換
Alt + < # 切到上一個檔案
Alt + > # 切到下一個檔案
# 在 nano 裡面開啟新檔案
Ctrl + R # 插入其他檔案的內容到目前游標位置
nano 和 vim 該學哪一個?
如果只是偶爾需要在終端機裡編輯設定檔或做一些小修改,學 nano 就夠了。nano 的操作方式直覺,學習成本低,五分鐘就能上手。如果是每天都在終端機裡寫程式的開發者,而且願意花時間學習,vim 的編輯效率確實會比較高。兩者並不衝突,很多人平常寫程式用 vim,但 SSH 上去改個設定檔的時候用 nano,看情境選擇就好。
怎麼在 nano 裡面顯示行號?
如果用的是 GNU nano(Linux 或 macOS Homebrew 安裝),有三種方式:
- 開啟時加上參數:
nano -l filename - 在編輯中切換:按
Alt + N可以即時開關行號 - 永久設定:在
~/.nanorc裡面加上set linenumbers
如果用的是 macOS 內建版(Pico),以上功能都不支援。替代方案是按 Ctrl + C 查看游標目前的行號與欄位位置,或是用 Homebrew 安裝 GNU nano 來取得完整的行號顯示功能。