在許多程式設計師眼中,Vim 是無可匹敵的代碼編輯利器;然而,當你想拿它來寫長篇小說、散文或上萬字的專題報導時,往往剛寫沒兩千字就被各種「水土不服」的預設行為勸退:

  1. 中文段落沒有空格,游標一跳就是整大段:Vim 預設以「硬換行(自然段)」為跳轉單位,按下 j 或 k 時,游標直接飛越眼前的折行文字,完全無法在長段落中微調修辭。
  2. 方向鍵與退格鍵動不動就「撞牆」:在行首按 Backspace 無法刪除上一行的換行符,左右方向鍵也無法自然跨行,完全沒有現代文字編輯器的行雲流水。
  3. 行號與介面雜訊分散注意力:滿螢幕的行號、狀態列、語法波浪線,讓人很難進入心流。
  4. 萬字長文缺乏章節導航:長篇作品結構複雜,若沒有像 Scrivener 或 Word 那樣的章節大綱側邊欄,翻找與修訂將會是一場災難。

為了徹底解決這些問題,萬事屋整理並分享這套**「中文長文與小說創作專用極簡配置」**。除了作為日後換機或重灌時隨時可用的備份紀錄,也供所有熱愛純文字寫作的作家與創作者參考。文末並附上 4 款核心外掛的安裝教學與實戰應用技巧。

延伸閱讀:


一、 完整 .vimrc 設定檔(隨取即用備份)

請將以下內容直接複製並貼入家目錄下的 ~/.vimrc 檔案中:

" ==============================================================================
" 中文長文與小說創作專用極簡配置
" ==============================================================================

" --- 基礎環境與編碼 ---
syntax on                       " 啟用語法高亮
filetype plugin indent on       " 啟用外掛與縮排規則偵測
set encoding=utf-8
set fileencodings=utf-8,cp950,gbk,latin1
set termencoding=utf-8
set fileformat=unix
set noswapfile                  " 減少暫存檔干擾
set autoread                    " 外部修改自動重新讀取

" --- 顯示與視覺體驗 ---
set wrap                        " 自動折行(視覺折行,不寫入硬換行符號)
set linebreak                   " 不在單詞或特定符號中間斷開
set breakindent                 " 折行後保持與前行相同的縮排層級
set showbreak=↪\                " 折行標記,清楚辨識是否為同一段落
set nolist                      " 關閉空白字元與不可見字元顯示
set number                      " 保留行號供段落定位
set cursorline                  " 凸顯當前行
set scrolloff=5                 " 上下滾動時預留 5 行緩衝

" --- 中文寫作核心:視覺行跳轉 ---
nnoremap j gj
nnoremap k gk
nnoremap $ g$
nnoremap 0 g0
nnoremap ^ g^
vnoremap j gj
vnoremap k gk

" --- 編輯與排版流暢度 ---
set smarttab
set expandtab
set shiftwidth=2
set tabstop=2
set virtualedit=block           " 允許區塊選取超出文字範圍

" 1. 解除退格鍵(Backspace/Delete)限制
set backspace=indent,eol,start

" 2. 允許方向鍵與退格鍵跨行移動
set whichwrap+=<,>,h,l,[,]

" --- 搜尋設定 ---
set ignorecase
set smartcase
set incsearch
set hlsearch
nnoremap <silent> <Esc> :nohlsearch<CR>

" --- Markdown 寫作專用行為(自動觸發) ---
augroup WritingMode
  autocmd!
  autocmd BufRead,BufNewFile *.md set filetype=markdown
  autocmd FileType markdown,text setlocal spell spelllang=en_us
  autocmd FileType markdown,text setlocal textwidth=0
  autocmd FileType markdown setlocal conceallevel=2
augroup END

" ==============================================================================
" 外掛宣告與功能連動
" ==============================================================================

call plug#begin('~/.vim/plugged')
Plug 'junegunn/goyo.vim'            " 專注模式
Plug 'junegunn/limelight.vim'       " 段落聚光燈
Plug 'preservim/vim-markdown'       " Markdown 語法與摺疊支援
Plug 'preservim/tagbar'             " 大綱側邊欄
call plug#end()

" --- Goyo 與 Limelight 連動設定 ---
autocmd! User GoyoEnter Limelight
autocmd! User GoyoLeave Limelight!
let g:limelight_default_coefficient = 0.7
let g:limelight_conceal_ctermfg = 240
let g:limelight_conceal_guifg = '#585858'

" --- vim-markdown 實用設定 ---
let g:vim_markdown_folding_disabled = 0
let g:vim_markdown_conceal = 2
let g:vim_markdown_frontmatter = 1

" --- Tagbar 支援 Markdown 標題解析 (相容 Universal Ctags 6.x) ---
let g:tagbar_ctags_bin = '/usr/local/bin/ctags'
let g:tagbar_type_markdown = {
    \ 'ctagstype' : 'markdown',
    \ 'kinds' : [
        \ 'c:chapter',
        \ 's:section',
        \ 'S:subsection',
        \ 't:subsubsection',
        \ 'T:l4subsection',
        \ 'u:l5subsection'
    \ ],
    \ 'sort' : 0
\ }

" --- 寫作快捷鍵設定 ---
nnoremap <silent> <F7> :Goyo<CR>
nnoremap <silent> <F8> :TagbarToggle<CR>

二、 設定核心解析:為什麼這樣寫對中文創作最友善?

這份設定檔看似簡約,但每一行都針對中文創作的特殊痛點做了調校:

1. 中文寫作命脈:視覺行(Visual Line)跳轉

在英文寫作中,句子間有空格,且每行常有固定字元數;但在中文排版中,一個段落常由數百字綿延組成。

  • 預設問題:按下 j、k,游標會跳到「下一個自然行(也就是下一個 Enter 換行)」,導致在眼前的折行段落中直接暴衝跳過好幾行。
  • 解決方案:
    nnoremap j gj
    nnoremap k gk
    nnoremap $ g$
    nnoremap 0 g0
    nnoremap ^ g^
    透過將 j 與 k 映射至 gj 與 gk,游標移動便以肉眼看見的螢幕折行為準,配合 g$ 與 g0 自由移動到當前可見行的行首行尾,徹底還原流暢的字句微調手感。

2. 優化折行排版與標示

set wrap
set linebreak
set breakindent
set showbreak=↪\ 
  • set wrap:啟用軟折行,不會把強迫換行符號(\n)硬生生寫入檔案。
  • set breakindent:折行後的文字會與第一行保持一致的縮排,版面整齊不凌亂。
  • set showbreak=↪\ :在折行行首加上小箭頭標記,讓你在閱讀時一眼看出「這幾行其實屬於同一個段落」。

3. 解除退格鍵與方向鍵的「跨行限制」

set backspace=indent,eol,start
set whichwrap+=<,>,h,l,[,]

Vim 預設的 Backspace 在行首是無法刪除上一行的,方向鍵也無法直接移到下一行行首。加入這兩組設定後,鍵盤操作即與現代編輯器完全一致,無論按退格鍵合併段落或用方向鍵漫遊,都不會再感覺「卡住」。

4. 停用硬換行與暫存檔防護

  • set textwidth=0:徹底防止 Vim 在你打滿 80 個字元時自動插入物理換行符號,保證純文字檔乾淨。
  • set noswapfile:在寫作目錄中不產生 .swp 暫存垃圾檔案,避免備份同步時發生衝突。

三、 外掛安裝前置:安裝 vim-plug

本配置採用輕量且極速的 vim-plug 作為外掛管理器。

步驟 1:下載 vim-plug

請依照你的作業系統開啟終端機(Terminal)執行對應指令:

  • macOS / Linux:

    curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  • Windows(PowerShell):

    iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
        ni $HOME/vimfiles/autoload/plug.vim -Force

四、 4 大核心外掛教學與實戰應用

這 4 款外掛各自司職一項關鍵能力,相互搭配後能讓終端機中的 Vim 瞬間蛻變成專業的作家寫作工作室。

1. Goyo.vim —— 無干擾的極簡打字機模式

  • 核心功能:一鍵隱藏所有狀態列、行號、分頁標籤與側邊欄,並將編輯區塊水平置中收窄,營造如機械打字機般的專注氛圍。
  • 安裝宣告:
    Plug 'junegunn/goyo.vim'
  • 實戰應用:
    • 我們在設定檔中綁定了快捷鍵 <F7>,在一般模式下按下 <F7> 即可進入或離開 Goyo。
    • 你也可以手動輸入指令調整視窗寬度,例如:
      :Goyo 85
      代表將寫作寬度限制在 85 個字元欄位,讓長行文字不會過度延展至螢幕兩側,有效減輕眼球來回掃視的疲倦感。

2. Limelight.vim —— 照亮思緒的段落聚光燈

  • 核心功能:配合 Goyo 使用的聚光燈工具。它會將目前游標所在的段落維持正常色彩,其餘前後段落則依設定比例淡化變暗。
  • 安裝宣告:
    Plug 'junegunn/limelight.vim'
  • 配置亮點:與 Goyo 完美聯動
    autocmd! User GoyoEnter Limelight
    autocmd! User GoyoLeave Limelight!
    let g:limelight_default_coefficient = 0.7
    當你按 <F7> 進入 Goyo 專注模式時,系統會自動開啟 Limelight;退出 Goyo 時則自動解除。0.7 的係數能讓上下文保留淡淡的輪廓,既不搶走當前靈感,又能隱約掌握上下文邏輯。

3. vim-markdown —— 支援章節摺疊與 Frontmatter

  • 核心功能:專門針對 Markdown 檔案的語法強化套件,提供標題層級自動摺疊、YAML 標頭(Frontmatter)支援,以及標記語法智慧隱藏(Conceal)。
  • 安裝宣告:
    Plug 'preservim/vim-markdown'
  • 實戰應用與快捷操作:
    • 章節摺疊(Folding):當章節動輒上萬字時,透過摺疊可以將整章內容縮成單一行標題:
      • za:展開或摺疊當前游標所在的章節。
      • zr:全面展開一級標題。
      • zm:全面收合所有標題。
    • YAML Frontmatter 辨識:若你的文章帶有文章中繼資料(如標題、發布時間、標籤),g:vim_markdown_frontmatter = 1 能保證這些開頭資訊不會被視為一般語法而發生顯示錯亂。

4. Tagbar —— 即時更新的章節大綱側邊欄

  • 核心功能:在 Vim 側邊開啟浮動大綱目錄,自動解析當前檔案中的一級到六級標題(H1~H6),讓你隨時掌握全文脈絡,並能瞬間跳轉。
  • 先決條件(必裝 Universal Ctags): Tagbar 需要呼叫底層的 ctags 程式來解析 Markdown 結構,請務必先在系統中安裝 Universal Ctags:
    • macOS (Homebrew):
      brew install universal-ctags
      (備註:若為 Apple Silicon 晶片 Mac,brew 預設路徑可能在 /opt/homebrew/bin/ctags,請檢查 which ctags 並確認 .vimrc 中的 g:tagbar_ctags_bin 路徑是否相符)
    • Ubuntu / Debian:
      sudo apt install universal-ctags
  • 安裝宣告:
    Plug 'preservim/tagbar'
  • 實戰應用:
    • 按下 <F8> 即可呼叫或關閉章節大綱。
    • 在大綱側邊欄中,游標移動到想去的章節名稱上按下 Enter,主畫面就會立刻跳轉至該段落,在萬字大作中穿梭自如。

五、 新手快速啟用 SOP(5 分鐘完成設定)

如果你是第一次配置這套環境,請依序執行以下 5 個步驟:

  1. 安裝 Universal Ctags:在終端機執行 brew install universal-ctags(以 macOS 為例)。
  2. 安裝 vim-plug:執行前文提供的 curl 指令。
  3. 建立設定檔:將本篇第二段的完整設定檔存入 ~/.vimrc。
  4. 載入並安裝外掛:
    • 開啟 Vim:
      vim
    • 在命令列模式輸入安裝指令:
      :PlugInstall
    • 等待四個外掛下載並安裝完成後,輸入 :q 退出安裝畫面。
  5. 開始享受極簡寫作:
    • 開啟任意 .md 檔案(例如 vim novel.md)。
    • 按下 <F7>:開啟打字機專注模式(Goyo + Limelight)。
    • 按下 <F8>:展開側邊章節大綱(Tagbar)。

結語:回歸純粹的文字心流

許多人認為純文字編輯器過於冰冷,但對作家來說,沒有跳出的訊息通知、沒有繁雜的工具列、只有一行行隨游標浮現的墨黑文字,才是最極致的創作溫床。

這份設定檔既解決了中文長段落折行卡頓的多年頑疾,又透過 Goyo、Limelight、vim-markdown 與 Tagbar 構建了無可挑剔的視覺與導航體驗。將這份紀錄留作備份,也希望能幫助到每一位在終端機前默默敲擊鍵盤的故事講述者。

✦ 獨立報導 · 讀者支持 ✦

以實際行動支持獨立觀點,與我們一同走得更遠

每一篇條理清晰的分析、每一次不隨波逐流的觀察,背後都是對真實與品質的堅持。我們拒絕內容農場與演算法流量綁架,堅持自由獨立的客觀發聲。

維持高品質的原創寫作與獨立營運,需要持續的實質力量。您可以選擇一次性贊助或每月定期支持,透過 Google 安全結帳,與我們一同守護這份深刻與清醒。

由 Google 安全處理付款 · 可隨時於 Google 帳戶管理或取消

標籤Vim小說寫作Markdown文字工作者極簡配置vim-plugGoyoTagbar生產力工具