zshell

การตั้งค่า

ตัวเลือกถาวรทั้งหมดของ Zshell หน้าที่ และตำแหน่งจัดเก็บ

การตั้งค่าถาวรส่วนใหญ่ของ Zshell อยู่ในไฟล์เดียว:

~/.config/zshell/config.toml

หน้าต่างการตั้งค่า (Cmd+,) เขียนไฟล์เดียวกัน ค่าบางอย่างที่ macOS ดูแล เช่น ภาษาและอัปเดตอัตโนมัติ อยู่ที่อื่นและระบุท้ายหน้านี้

การตั้งค่าใหม่เปิดคำแนะนำคำสั่ง Vim การกู้คืนประวัติเซสชัน และการแจ้งเตือนคำสั่งล้มเหลวโดยค่าเริ่มต้น การดาวน์โหลดอัปเดตอัตโนมัติก็เปิดไว้โดยค่าเริ่มต้นเช่นกัน การตั้งค่าเดิมและตัวเลือกที่บันทึกไว้จะคงอยู่

พฤติกรรมของไฟล์

ควรรู้ก่อนแก้ด้วยมือ:

  • อ่านการเปลี่ยนแปลงขณะแอปทำงาน การแก้ภายนอกที่ถูกต้องมีผลอัตโนมัติ ค่าสำหรับเทอร์มินัลใหม่ยังต้องเปิดบานใหม่ ไฟล์ที่อ่านไม่ได้หรือไวยากรณ์ผิดจะคงค่าที่ถูกต้องล่าสุด ไฟล์ที่จงใจว่างจะคืนค่าเริ่มต้นหลังรอสั้น ๆ
  • Zshell เขียนใหม่ทุกครั้งที่ค่าซึ่งเก็บในไฟล์เปลี่ยน ไฟล์ถูกสร้างใหม่ทั้งหมด ความเห็นและคีย์ที่ไม่รู้จักจึงหายเมื่อใช้ตัวควบคุมเหล่านั้นครั้งต่อไป เลือกแหล่งแก้ไฟล์หนึ่งแห่ง หรือเก็บสำเนาหลักไว้ใน dotfile
  • ค่าที่เป็นค่าเริ่มต้นส่วนใหญ่ไม่ถูกเขียน font-size, terminal.vim-command-hints, terminal.restore-history, terminal.notify-on-error จะถูกบันทึกเสมอ การลบคีย์เทอร์มินัลใดคีย์หนึ่งในสามคีย์นี้จากไฟล์เดิมจะปิดฟังก์ชันนั้น ส่วนการลบคีย์อื่นจะคืนค่าเริ่มต้น
  • ตัวอ่านออกแบบให้เล็กโดยตั้งใจ รองรับคีย์แบน คีย์แบบจุด หัว [table] ความเห็น # และค่าสตริง/ตัวเลข/บูลีน ไม่รองรับอาร์เรย์ ตารางอินไลน์ หรือสตริงหลายบรรทัด
  • ค่าไม่ถูกต้องกลับสู่ค่าปลอดภัย ขนาดนอกช่วง backend ไม่รู้จัก หรือชื่อธีมผิด ไม่ขัดขวางการเปิด Zshell

การบันทึกคงลิงก์สัญลักษณ์ของไฟล์และโฟลเดอร์ อัปเดตไฟล์ปลายทางแบบอะตอมและรักษาสิทธิ์ การแก้ภายนอกไม่เขียนทับความเห็นหรือคีย์ที่ไม่รู้จัก แต่การบันทึกผ่านหน้าตั้งค่าภายหลังยังสร้างไฟล์ใหม่ตามที่อธิบายข้างต้น

การแสดงแอป

app-presence

"dock" · "dock-and-menu-bar" · "menu-bar" — ค่าเริ่มต้น "dock"

เลือก การตั้งค่า → ทั่วไป → แสดง Zshell ใน เพื่อเปลี่ยนทันที "dock" แสดงไอคอน Dock เท่านั้น "dock-and-menu-bar" แสดงทั้งสองไอคอน และ "menu-bar" แสดงไอคอนแถบเมนูเท่านั้น

แถบเมนูใช้เปิดพื้นที่ทำงานปัจจุบัน เทอร์มินัลด่วน การตั้งค่า และการตรวจหารายการอัปเดต ในทั้งสองโหมดแถบเมนู การปิดหน้าต่างพื้นที่ทำงานสุดท้ายจะซ่อนหน้าต่างโดยเทอร์มินัลและงานยังทำงานอยู่ เปิดพื้นที่ทำงาน จะกลับไปยังหน้าต่าง โปรเจกต์ และเซสชันเดิม การปิดหน้าต่างอื่น แผง หรือโปรเจกต์ยังคงจบงานของสิ่งนั้น ออก ยังคงใช้ terminal.preserve-sessions ส่วน ออกและจบทุกเซสชัน จะจบงานทั้งหมด โหมดจะถูกบันทึกไว้หลังเปิดแอปใหม่

รูปลักษณ์

theme

"system" · "light" · "dark" — เริ่มต้น "system"

เลือกหน้าตาแอป "system" ตาม macOS ส่วนอีกสองค่าล็อก Zshell ไว้ที่หน้าตานั้น

theme-dark และ theme-light

สตริง — เริ่มต้น "Default Dark" และ "Default Light"

ธีมสีของแต่ละหน้าตา ธีมเปลี่ยนสีช่องเทอร์มินัล กรอบหน้าต่าง แถบด้านข้าง ตัวแก้ไข และ diff พร้อมกัน ธีมเริ่มต้นรักษาแถบด้านข้างโปร่งแสง ส่วนธีมอื่นใช้สีตามชุดสีของตน

หน้าตั้งค่าแสดงชุดธีมคัดสรรร่วมกันของทั้งสอง backend ชื่อที่เขียนเองต้องตรงชื่อแสดงทุกตัวรวมตัวพิมพ์ใหญ่เล็ก ไม่เช่นนั้น Zshell กลับธีมเริ่มต้นที่สอดคล้อง

toolbar.visibility

"hide" · "auto" · "always" — เริ่มต้น "hide"

ควบคุมแถบเครื่องมือขนาดเล็กใต้แท็บที่ใช้งาน:

  • "hide" ไม่แสดงในหน้าต่าง
  • "auto" แสดงเมื่อไดเรกทอรีโปรเจกต์เป็น Git repository เท่านั้น
  • "always" คงทางเข้า Git ไว้ทุกโปรเจกต์ รวมสถานะ ไม่มี Git Repository

ดูสิ่งที่แสดงในแถบเครื่องมือ Git

ข้อความ

font-family

สตริง — เริ่มต้น "" หมายถึง JetBrains Mono ที่มาพร้อมแอป

เทอร์มินัล ตัวแก้ไข และตัวดู diff ใช้ตระกูล Latin นี้ร่วมกัน ระบุชื่อตระกูล ไม่ใช่แบบย่อย เช่น "IBM Plex Mono" ไม่ใช่ "IBM Plex Mono Regular" ตระกูลที่ไม่รู้จักหรือไม่ใช่ monospace กลับสู่ฟอนต์เริ่มต้นที่แนบมา

ลำดับฟอนต์สำรองของเทอร์มินัลคือ Latin ตามด้วย CJK ที่เลือกด้านล่าง Symbols Nerd Font ที่แนบมา และฟอนต์สำรองระบบของ backend ตัวแก้ไขและ diff ยังใช้ระบบสำรอง macOS/WebKit ตามปกติ

terminal.font-fallback-family

สตริง — เริ่มต้น "" หมายถึงฟอนต์สำรองของ backend/ระบบ

เพิ่มตระกูล CJK ที่ติดตั้งหนึ่งตระกูลในลำดับสำรอง ตัวเลือกในหน้าตั้งค่ารวมตระกูลที่มีตัวอักษรตัวอย่างจีน ญี่ปุ่น หรือเกาหลี ไม่จำเป็นต้องเป็น monospace เคร่งครัด เพราะใช้เฉพาะตัวอักษรที่ฟอนต์ Latin หลักไม่มี

font-size

ตัวเลข 8–32 — เริ่มต้น 13

ขนาดฟอนต์หน่วย point ร่วมกันของเทอร์มินัล ตัวแก้ไข และ diff เป็นคีย์เดียวที่ Zshell เขียนแม้ค่าเท่าค่าเริ่มต้น

interface.scale

ตัวเลข 0.9–1.5 — เริ่มต้น 1

ปรับสเกลแท็บ ไอคอน ปุ่ม แถบด้านข้าง และส่วนติดต่ออื่น เนื้อหาเทอร์มินัล ตัวแก้ไข และ diff ยังคงขนาดฟอนต์ที่ตั้งแยกด้านบน

sidebar.font-size

ตัวเลข 9–24 — เริ่มต้น 14

ขนาดข้อความฐานของแถบด้านข้างทั้งสอง หัวส่วน แถว เมทาดาทา และตัวควบคุมรักษาลำดับขนาดสัมพันธ์เมื่อฐานเปลี่ยน

terminal.font-thicken

บูลีน — เริ่มต้น false

วาดตัวอักษรเทอร์มินัลให้เส้นหนาขึ้นเล็กน้อยคล้ายการเกลี่ยฟอนต์แบบเดิมของ macOS ทั้งสอง backend รองรับและหน้าพรีวิวแสดงผล การตั้งค่าเก่า font-thicken ยังอ่านแล้วเขียนกลับด้วยคีย์แบบจุดปัจจุบัน

terminal.font-thicken-strength

จำนวนเต็ม 0–255 — เริ่มต้น 255

ควบคุมความหนาเมื่อ terminal.font-thicken เป็น true ศูนย์คือระดับหนาน้อยที่สุด ไม่ใช่ปิด Ghostty ใช้ความแรง native macOS ส่วน Alacritty แปลงช่วงเดียวกันเป็นเส้น CoreText ทิศทางและปลายช่วงจึงตรงกัน แต่พิกเซลที่วาดอาจต่าง

terminal.line-height

ตัวเลข 0.75–2 — เริ่มต้น 1

คูณความสูงเซลล์ตามธรรมชาติของ backend แต่ละตัวโดยวางตัวอักษรกลางแนวตั้ง เปลี่ยนเฉพาะแถวเทอร์มินัล ไม่เปลี่ยนช่องไฟของตัวแก้ไขหรือ diff

Zshell ไม่มีตัวควบคุมน้ำหนักฟอนต์พื้นฐาน Ghostty เลือกสไตล์ที่มีชื่อหรือแกนแปรผัน ขณะที่ Alacritty/CoreText เลือกหน้าปกติและหนาจากคุณลักษณะ ค่าเดียวร่วมกันไม่อาจรักษาความต่างปกติ/หนาและน้ำหนักฟอนต์สำรองให้สม่ำเสมอทั้งฟอนต์คงที่และแปรผัน

editor.wrap-lines

บูลีน — เริ่มต้น true

ตัดบรรทัดยาวแบบอ่อนตามความกว้างช่องในตัวแก้ไขไฟล์ หาก false จะเลื่อนแนวนอน ไม่เปลี่ยนการตัดบรรทัดเทอร์มินัลหรือ diff

เทอร์มินัล

terminal.startup-program / terminal.startup-arguments

สตริง — เริ่มต้นไม่ระบุ

เลือก executable และเวกเตอร์อาร์กิวเมนต์สำหรับเทอร์มินัลที่สร้างหลังจากนั้น หากไม่มี terminal.startup-program Zshell ใช้ login shell ของบัญชีกับ -l ต่อไป โปรแกรมต้องเป็นเส้นทางเต็มที่รันได้ หากเส้นทางหายหรือรันไม่ได้จะใช้ login shell แทนเปิดช่องที่ไม่ทำงาน

terminal.startup-arguments แยกอาร์กิวเมนต์โดยไม่เรียก shell เครื่องหมายคำพูดและแบ็กสแลชรักษาขอบเขต รวมช่องว่างและอาร์กิวเมนต์ว่าง แต่ไม่ขยายตัวแปร glob หรือ command substitution เครื่องหมายคำพูดไม่ถูกต้องก็กลับสู่ login shell เช่นกัน argv ที่ CLI ของ Zshell ระบุชัดยังมาก่อนสำหรับเทอร์มินัลนั้น

terminal.backend

"libghostty" · "alacritty" — เริ่มต้น "libghostty"

เลือก emulator สำหรับเทอร์มินัลที่สร้างต่อจากนั้น ช่องเดิมคง backend ตอนเริ่ม ทั้งสองเป็น native เร่ง GPU รองรับภาพ และใช้ธีมเดียวกัน Alacritty มักใช้หน่วยความจำน้อยกว่า

ดูตัวแปรแวดล้อมและข้อกำหนดความเข้ากันได้ที่ Backend เทอร์มินัล

terminal.macos-option-as-alt

บูลีน — เริ่มต้น false

เมื่อ true ส่งชุดปุ่ม Option เป็น Alt/Meta ให้โปรแกรมเทอร์มินัล ค่าเริ่มต้นคง Option กับแหล่งอินพุต macOS เพื่อให้เค้าโครงอย่าง Polish Pro พิมพ์ตัวอักษรผสมได้

terminal.bell

บูลีน — เริ่มต้น true

ควบคุมเสียงเตือนและการเรียกความสนใจทางภาพของ macOS เมื่อโปรแกรมส่ง bell หาก false จะไม่เล่นเสียง ไม่ส่งการแจ้งเตือน bell และไม่เรียกความสนใจใน Dock เทคโนโลยีช่วยการเข้าถึงยังรับ bell เป็นการประกาศเชิงความหมาย ทั้งสอง backend ทำตามค่านี้

terminal.vim-command-hints

บูลีน — เริ่มต้น true

แสดงคำสั่ง Vim/Neovim ตามโหมดใต้ข้อมูลเซสชันในแถบ ข้อมูล มีผลทันทีบนทั้งสอง backend รวมตัวแก้ไขผ่าน SSH ที่จำแนกได้ ดูเงื่อนไขที่คำแนะนำคำสั่ง Vim

terminal.restore-history

บูลีน — เริ่มต้น true

กู้ประวัติเอาต์พุตของแต่ละเทอร์มินัลไว้เหนือ shell ใหม่เมื่อเปิดแอปใหม่ เนื้อหากู้คืนเป็นข้อความนิ่ง ไม่ใช่โปรเซสที่ยังอยู่

ประวัติเก็บบนดิสก์ จึงอาจรวมความลับที่เคยแสดงในเทอร์มินัล โปรเจกต์ แท็บ และเค้าโครงช่อง กู้คืนไม่ว่าจะตั้งค่านี้อย่างไร

ระบบอัตโนมัติ

ai.enabled

บูลีน — เริ่มต้น true

ให้เอเจนต์เขียนโค้ดที่รองรับประสานช่องเบื้องหลังเมื่อขอด้วยภาษาปกติ และแสดงสถานะวงจรชีวิตจากผู้ให้บริการใน UI Zshell ไม่อนุมานสถานะจากข้อความเทอร์มินัล แนะนำให้เปลี่ยนด้วยสวิตช์ในหน้าตั้งค่า เพราะแสดงข้อผิดพลาดในหน้าและไม่แก้การตั้งค่าเดิมที่ชนกัน

ขั้นตอนสำหรับผู้ใช้อธิบายที่ทำงานร่วมกับเอเจนต์ AI

เมื่อใช้ Codex app-server ร่วมกัน Zshell จะจับคู่ ID การสนทนาที่ตรวจสอบแล้วกับบานหน้าต่างเบื้องหน้า และไม่ผูกเมื่อกำกวม การผสานรวมที่จัดการจะเพิ่ม session-id ในชื่อเทอร์มินัล Codex โดยคงรายการอื่นไว้

ai.resume-conversations

ค่าบูลีน — ค่าเริ่มต้น true

เมื่อกู้คืนแผงเทอร์มินัลและ PTY เดิมไม่พร้อมใช้งาน จะสนทนาเดิมที่บันทึกไว้ของ Claude Code, Codex, Pi หรือ OpenCode ต่อโดยใช้บทสนทนาเดิมนั้น ต้องมี ai.enabled = true แผงที่ไม่มีบทสนทนาที่ตรวจสอบแล้วจะเปิดเชลล์ใหม่ Zshell จะไม่เลือกบทสนทนาล่าสุดจากไดเรกทอรี

ควบคุมได้ที่ การตั้งค่า → ระบบอัตโนมัติ → สนทนากับเอเจนต์ต่อ แยกจาก terminal.restore-history

การตั้งค่าเพิ่มเติม

คีย์เริ่มต้นค่า / ช่วงผล
app-icon"default""default" / "light" / "dark"ไอคอนแอป
editor.external-editor"default""default" / "vscode" / "zed" / "cursor"ตัวแก้ไขภายนอกสำหรับไฟล์และโฟลเดอร์
terminal.theme-onlyfalseบูลีนใช้ชุดสีเฉพาะเทอร์มินัล
terminal.cursor-shape"bar""bar" / "block" / "underline"รูปร่างเคอร์เซอร์เทอร์มินัล
terminal.cursor-blinkingtrueบูลีนให้เคอร์เซอร์กะพริบ
terminal.copy-on-selecttrueบูลีนคัดลอกข้อความเทอร์มินัลที่เลือก
terminal.focus-follows-mousefalseบูลีนโฟกัสตามเมาส์
terminal.shift-enter-newlinetrueบูลีนส่งลำดับขึ้นบรรทัดแบบเสริมด้วย Shift+Enter ต้องมีแอปรองรับ
terminal.background-opacity10.2–1ความทึบพื้นหลังเทอร์มินัล
terminal.background-blurfalseบูลีนเบลอพื้นหลังโปร่งแสง
terminal.notify-finish-seconds00 / 5 / 10 / 30 / 60แจ้งเมื่อคำสั่งรันอย่างน้อยเวลานี้แล้วเสร็จในเทอร์มินัล zsh ใหม่ 0 คือปิด
terminal.notify-on-errortrueบูลีนแจ้งคำสั่งล้มเหลวในเทอร์มินัล zsh ใหม่
quick-terminal.mode"reuse""reuse", "fresh"ใช้พื้นที่ทำงานเดิม / พื้นที่ทำงานใหม่ทุกครั้ง
quick-terminal.size0.750.35–0.95ขนาดเทอร์มินัลด่วนเทียบหน้าจอ
quick-terminal.opacity0.50.05–1ความทึบพื้นหลังเทอร์มินัลด่วน
quick-terminal.shortcutCmd+Iบันทึกในหน้าตั้งค่าบันทึกปุ่มลัดส่วนกลางในหน้าตั้งค่า รหัสปุ่มบันทึกอัตโนมัติ
panes.show-focus-ringtrueบูลีนแสดงวงโฟกัสรอบช่องที่ใช้งาน
panes.focus-ring-opacity0.850.05–1ความทึบวงโฟกัส

สำรองและย้ายการตั้งค่า

ใช้ Zshell → ส่งออกการตั้งค่า… เพื่อบันทึก TOML และ นำเข้าการตั้งค่า… เพื่อโหลด การนำเข้าขอยืนยันแทนที่และพยายามสำรองไฟล์ปัจจุบันเป็น config.toml.bak ในโฟลเดอร์เดียวกัน

การนำเข้าจะอ่านการตั้งค่าที่รองรับทั้งหมด คีย์ที่ละไว้ใช้ค่าเริ่มต้นของตัวอ่าน หากไม่มี ai.enabled จะคงการตั้งค่า AI ปัจจุบัน ภาษาและตัวแปรสภาพแวดล้อมของโปรเจกต์หรือแท็บจะบันทึกแยกกัน

ตัวอย่างครบถ้วน

~/.config/zshell/config.toml
theme = "dark"
theme-dark = "Catppuccin Mocha"
theme-light = "Catppuccin Latte"
font-family = "IBM Plex Mono"
font-size = 14
interface.scale = 1.25
sidebar.font-size = 13
toolbar.visibility = "auto"
terminal.font-fallback-family = "PingFang SC"
terminal.font-thicken = true
terminal.font-thicken-strength = 180
terminal.line-height = 1.15
terminal.macos-option-as-alt = false
terminal.bell = false
terminal.startup-program = "/opt/homebrew/bin/fish"
terminal.startup-arguments = "--no-config"
terminal.backend = "alacritty"
terminal.restore-history = true
editor.wrap-lines = true
ai.enabled = true
ai.resume-conversations = true

ทุกคีย์ไม่บังคับ ลบคีย์เพื่อคืนค่านั้นเป็นค่าเริ่มต้น

แป้นพิมพ์ลัด

เปิด การตั้งค่า → ปุ่มลัด เพื่อบันทึกชุดปุ่มใหม่ให้คำสั่งหลัก Zshell ปฏิเสธชุดที่ขัดกันและบอกชื่อคำสั่งที่ใช้อยู่ คืนปุ่มลัดเริ่มต้น ล้างค่าทับทั้งหมด คู่มือปุ่มลัด แสดงค่าเริ่มต้นที่มากับแอป

การตั้งค่านอกไฟล์นี้

  • ภาษา หน้าตั้งค่ามีค่าตามระบบและ 17 ภาษาเช่นเดียวกับเว็บไซต์ เปลี่ยนแล้วมีผลทันทีขณะเซสชันเทอร์มินัลยังรัน ใช้ค่าภาษารายแอปของ macOS จึงเก็บใน preferences ของ Zshell ไม่ใช่ TOML ค่าตามระบบตามลำดับภาษาของ macOS
  • อัปเดตอัตโนมัติ สวิตช์ตรวจ ดาวน์โหลด และติดตั้งใน การตั้งค่า → การอัปเดต เก็บใน preferences นอก TOML และจำข้ามการเปิดแอป ตัวเลือกติดตั้งแสดงเฉพาะเมื่อเปิดดาวน์โหลดอัตโนมัติ ดูการติดตั้ง
  • สถานะหน้าต่างและเค้าโครง ขนาดหน้าต่าง ความกว้างแถบ แผงที่เลือก โปรเจกต์ แท็บ ช่อง URL เบราว์เซอร์ และค่าตัวควบคุม diff อยู่ใน preferences macOS และสแนปช็อตเซสชันของ Zshell
  • ไฟล์ตั้งค่า backend Zshell ไม่อ่าน ~/.config/ghostty หรือไฟล์ Alacritty การตั้งค่า Zshell คือช่องทางตั้งค่าที่รองรับสำหรับทั้งคู่