# 編輯器選項

本頁列出 `new MDEditor(config)` 接受的每個選項、預設值與實際生效方式。

## 建構

```javascript
const editor = new MDEditor({
    id: "editor",
    defaultContent: "# Hello",
    hotKey: true,
    autosave: true,
    preventRefresh: false,
    tabPin: false,
    style: { mode: "auto", fill: true, showRow: true },
    event: { save: (text) => {}, upload: async () => ({ href: "", alt: "" }) }
});
```

## 行為選項

| 選項 | 型別 | 預設 | 說明 |
|---|---|---|---|
| `id` | `string` | 無 | 容器元素 ID；找不到時建立未掛載的 `<section>`，用 `editor.body` 取得後自行插入 |
| `defaultContent` | `string` | `""` | 初始 Markdown，會先 `trim()`；第一次 `init()` 用完後即清空 |
| `hotKey` | `boolean` | `true` | 是否啟用格式化快捷鍵；復原、儲存、Tab 等編輯鍵不受影響，見 [快捷鍵](/keyboard-shortcuts) |
| `autosave` | `boolean` | `true` | 輸入後是否自動更新預覽；`false` 時只在 `save()` 更新，工具列會多出「儲存並預覽」按鈕 |
| `preventRefresh` | `boolean` | `false` | 為真時註冊 `beforeunload` 攔截，並在整個 document 攔截 `F5`、`Cmd/Ctrl+R` |
| `tabPin` | `boolean` \| `0`／`1` | `false` | 工具列是否固定顯示；可再由工具列的釘選按鈕切換 |
| `wrap` | `boolean` \| `0`／`1` | `true` | 自動換行；v1.11.6 中 `false`／`0` 會被 `\|\| 1` 覆蓋，初始值永遠為開啟，只能用工具列按鈕關閉 |
| `event.save` | `function(text)` | 無 | 儲存回呼，收到編輯器純文字；設為 `null` 時 `save()` 直接回傳 `false` |
| `event.upload` | `async function()` | 無 | 存在時工具列出現上傳圖片按鈕，見 [工具列](/editor-toolbar) |

## 樣式選項

| 選項 | 預設 | 說明 |
|---|---|---|
| `style.mode` | `"auto"` | `"auto"`／`"light"`／`"dark"`，不分大小寫；見 [主題](/theming) |
| `style.fill` | `true` | 寫入 `data-fill`，讓容器填滿父元素 |
| `style.fontFamily` | `"'Roboto Mono', monospace"` | 編輯器字型 |
| `style.showRow` | `true` | 寫入 `data-row`，顯示行號 |
| `style.placeholder.text` | `"Type here ..."` | 最後一列為空時顯示的提示文字 |
| `style.placeholder.color` | `"#bfbfbf"` | 提示文字顏色 |
| `style.focus.backgroundColor` | `"#0000ff1a"` | 目前所在列的背景色 |
| `style.focus.color` | `"#0000ffff"` | 目前所在列的文字與游標顏色 |

字型、提示文字與焦點顏色是以 `<style>` 插入 `<head>`，選擇器為全域的 `.pd-md-editor`。同一頁有多個編輯器時，後建立的設定會覆蓋先前的。

## 實例屬性

| 屬性 | 型別 | 說明 |
|---|---|---|
| `body` | `HTMLElement` | 編輯器容器（`contentEditable`），每一列是一個 `<div>` |
| `text` | `string`（唯讀） | 以 `\n` 串接各列的 `innerText`，工具列除外 |
| `viewer` | `MDViewer` | 綁定的預覽器；由 `MDViewer` 的 `sync.editor` 自動設定 |
| `deployKey` | `string` | 只在 nanomd.pardn.io 的部署功能使用 |

已棄用的頂層選項（`mode`、`fillMode`、`placeholder` 等）見 [已棄用 API](/deprecations)。
