QuickText

[English](../../README.md) · [简体中文](../../README.zh.md) · **繁體中文** · [日本語](README.ja.md) · [한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Italiano](README.it.md) · [Русский](README.ru.md) · [Tiếng Việt](README.vi.md) · [ไทย](README.th.md) · [Bahasa Indonesia](README.id.md) · [हिन्दी](README.hi.md) · [বাংলা](README.bn.md) · [العربية](README.ar.md) · [Türkçe](README.tr.md) # QuickText > Windows 托盤速貼,常用文字 / 圖片幾鍵即達游標。 ![在任意視窗上呼出面板,敲幾個字母,片語直接落在游標處](../images/quicktext-demo.webp) **別再把同樣的內容打第二次。** QuickText 常駐於 Windows 系統匣:把你一再需要用到的文字——電子郵件、地址、簽名檔、範本、罐頭回覆、圖片——只存一次,之後在**任何輸入框**裡打幾個鍵或一組縮寫,內容就直接落在游標處。多行、特殊字元與表情符號都逐字元原樣保留。 > 你的可重複使用文字,只差幾個鍵——直接落在游標上。 - WPF / .NET 10,單一檔案免安裝可攜式 exe,**免帳號、預設不連網**——僅可選的「檢查更新」會存取 GitHub。 - 資料是存在你自己資料夾裡的**本機 JSON**——放進 Dropbox / OneDrive / NAS 即可同步。 - 深色/淺色主題(也可跟隨系統)、**18 種介面語言**(阿拉伯文支援由右至左鏡像),設定即時生效。 **[⬇ 下載最新版](https://github.com/rockbenben/QuickText/releases/latest)** —— Windows x64,單檔綠色版。程式未做程式碼簽章,首次執行 SmartScreen 會攔一下:點**其他資訊 → 仍要執行**。 - `QuickText-<版本>-win-x64.zip` —— 已內建 .NET 執行階段,任何 Windows 10/11 x64 都能直接跑,沒有前置需求。拿不準就下這個:內網電腦、離線電腦,或用 USB 隨身帶著跑。 - `QuickText-<版本>-win-x64-needs-dotnet10.zip` —— 需要先安裝 [.NET 10 桌面執行階段](https://dotnet.microsoft.com/download/dotnet/10.0)。適合自己那台能連網的電腦:裝一次,之後每次更新都只要下載一個很小的包。 - `QuickText.exe` —— 同一個版本,只是沒套 zip:點開即用,也可以直接蓋掉現有的那份完成更新。 功能與資料完全相同,差別只在有沒有把執行階段打包進去。 --- ## 你會在哪裡用到它 只要你在 **Windows 上一再輸入同樣的內容**。它常駐系統匣,在每個輸入框都能用(聊天視窗、瀏覽器表單、編輯器、郵件用戶端——不綁定單一應用程式)。它是**片語管理員與文字擴充器合而為一**,再加上拼音搜尋、變數範本與圖片。 | 對象 | 他們存些什麼 | | -------------------- | -------------------------------------------------------------------------- | | **客服/電商** | 罐頭回覆、標準答案、活動文案、QR code 或商品圖 | | **業務/商務** | 郵件範本、開場白、報價、結尾語 | | **開發者/維運** | 指令、設定、JSON、樣板(`{...}` 逐字輸出,絕不解析) | | **辦公室/填表** | 電子郵件、地址、電話、證件號碼、會議記錄範本(提示你填寫,並記住上次的值) | | **人資/行政/法務** | 到職通知、標準公告、免責聲明——本機、離線,適合敏感內容 | > **關於存放敏感內容。** 片段以**純文字 JSON** 儲存,刻意不加密——這樣你能自己讀、自己 diff、自己改。存模板與套話、且機器只有你在用,沒有問題。但也代表寫進去的身分證字號或密碼,任何能讀到該檔案的東西都讀得到——包含以你帳號執行的其他程式,以及你把資料夾放進雲端同步後的服務商。真正的機密請交給密碼管理器,QuickText 留給那些「擺在桌面上你也不介意」的文字。 ## 30 秒看懂它 在**任何你能打字的地方**——比如你需要在聊天框裡貼上自己的電子郵件: 1. **呼叫** — 按 `Ctrl+Shift+8`;面板浮現在使用中的視窗上方。 2. **搜尋** — 打幾個字母;符合的項目會被標示。它會比對名稱、拼音(全拼+首字母)、縮寫與內文。 3. **Enter** — 電子郵件就貼在**你游標原本所在的位置**。完成。 > 什麼都不打就能依分類瀏覽,`最近` /`我的最愛`釘選在最上方;你最常用的項目會自動**浮到頂端**。 > `↑↓` 移動 · `←→` 切換分類 · `Alt+1–9` 快速挑選 · 雙擊送出 · `Esc` 關閉。 ## 三種取用方式——挑適合你的 同一份庫,三種取用方式;可以自由混用: | 方式 | 如何觸發 | 最適合 | | --------------- | -------------------------------------- | -------------------------------- | | 🔍 **面板搜尋** | `Ctrl+Shift+8` → 打字 → Enter | 片語多、偶爾用、想瀏覽著挑 | | ⌨️ **行內縮寫** | 直接打 `;sig` 再按 Space / Tab / Enter | 高頻的固定片語,免開面板 | | 🧩 **變數範本** | 用上述任一方式取出帶 `{變數}` 的片語 | 郵件/表單:一份範本,只改幾個字 | - **圖片也行**:從剪貼簿或檔案加入,送出時以圖片貼上;圖片也能設縮寫,所以打縮寫就能得到圖片(QR code、logo 簽名檔)。 - **逐片語輸出**:聊天片語貼上後自動送出,程式碼片語則絕不自動送出——彼此互不干擾。 縮寫與變數的完整細節見下方 **細部說明**——**預留位置**與**縮寫**兩節。 --- **細部說明** ## 開箱即用 雙擊 **`QuickText.exe`**;它常駐於**系統匣**(工作列上沒有按鈕)。**首次執行**時它會: - 放入一份小小的**入門庫**(兩個分類,使用你的**介面語言**),讓你能立刻試用; - 顯示一則氣泡提示告知呼叫熱鍵——預設 **`Ctrl+Shift+8`**。 > 面板右上角的圖示:**+ 新增** · **管理員**(開啟編輯器) · **設定** · **📌 釘選**(送出後保持面板開啟,以便連續送出多個)。無須回到系統匣即可直接跳到管理員/設定。 ## 新增/編輯你的文字 ![管理器:左側分類、中間片語、右側編輯器](../images/quicktext-manager.webp) - **系統匣 → 開啟管理員** — 完整編輯器:左側分類、右側片語、下方編輯器。新增/重新命名/刪除分類(附 **7 色**標籤),編輯片語(名稱、縮寫、內文、圖片)。拖曳可重新排序或在分類間移動;`Ctrl+Z` 可還原刪除。 - **系統匣 → 從剪貼簿新增** — 依目前剪貼簿內容建立新片語,並在管理員中開啟以完成(按**儲存**才會寫入磁碟;直接關閉管理員會先問你要儲存還是捨棄)。 - **在面板中建立** — 在搜尋框輸入內容後按 `Ctrl+N` 存成新項目(這段文字即內文;`@分類 …` 會歸入該分類)並跳到管理員完成(`Ctrl+E` 編輯選取的項目)。 > **長文字/程式碼**:內文上方的 `⤢` 按鈕會以近乎全螢幕的編輯器開啟它(或在內文中按 `Ctrl+Shift+Enter`);按 `Esc` 或「完成」結束編輯;有變更時會先問你要儲存還是捨棄。勾選「啟用 {變數} 預留位置」後,權杖會**依種類上色**——變數為青色,`{date}` 這類自動權杖為琥珀色,`{snippet:x}` 為紫色,`{cursor}` 為青色虛線;而拼錯的片語名稱、無效的日期格式或未關閉的大括號則會出現**紅色波浪底線**,滑鼠停留即可看到原因。這些內容送出時都會**逐字**貼上——以往只有貼錯之後才會發現。將滑鼠停在日期權杖上,也能預覽其解析後的值。若是程式碼,就把核取方塊保持關閉:標示會完全停用,讓滿是 `{}` 的內文保持安靜,狀態列只會註明有多少個權杖會照原樣輸出。此外還包含:**Enter 會保留縮排**、**`Tab` 會將整段多行選取一併縮排**。 > > 放大視窗**永遠顯示行號**,其頁尾提供**程式碼格式**選單——JSON、YAML、XML、HTML、Markdown、SQL、Python、JavaScript/TypeScript、C#、Java、PowerShell、Shell 與 INI,共 13 種——會為內文加上語法標示,並依片語各自記住。**儲存的文字仍是純文字,貼上的內容也不受影響。** 預留位置標示會為背景上色,語法標示則為文字本身上色,兩者互不干擾:含有 `{變數}` 的 JSON 內文可同時看出其結構與變數。 ## 預留位置(一份範本,多種情境)· 逐片語自選啟用 預留位置是**逐片語的開關**:在管理員編輯器裡勾選「**啟用 {變數} 預留位置**」,下列權杖就會在送出時解析;**不勾選(預設值)則內文逐字送出**——滿是字面 `{...}` 的程式碼、指令碼與 JSON 絕不會被誤解析或跳出提示。 > 升級說明:預留位置以前一律開啟。升級後首次啟動時,會自動為內文含 `{...}` 的**既有片語**勾選此開關,因此行為不變;對於其實是程式碼的那些,請在管理員中取消勾選。 啟用後,這些預留位置會在送出時解析: | 預留位置 | 作用 | | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `{name}`(任意標籤) | **貼上前提示你填寫**;**記住你上次的值**,重複時不再詢問 | | `{name:John}` | 帶**預設值**的變數,會預先填入提示框 | | `{env\|dev\|test\|prod}` | 帶**選項**的變數——提示框顯示下拉選單(第一個選項同時作為預設值;仍可自由輸入) | | `{clipboard}` | 插入目前剪貼簿內容 | | `{cursor}` | 貼上後將插入點停留在此處(同時抑制自動 Enter) | | `{date}` `{time}` `{datetime}` | 插入目前日期/時間;支援如 `{date+7}`(往後 7 天)的位移;支援自訂格式,如 `{date=yyyy年M月d日}`、`{time=HH:mm:ss}`,並可與位移組合 `{date+7=M月d日}`。中文別名 `{日期}` / `{时间}` / `{日期时间}` 同樣有效 | | `{uuid}` `{random}` | 隨機值:一組 UUID/6 位數字,每次出現都重新產生 | | `{snippet:name}` | **內嵌另一個片語的內文**(最深 3 層,具循環防護)——把共用的簽名檔集中維護於一處 | 範例:一份簽名檔 `Best regards,\n{name}`(已啟用預留位置)→ 送出時詢問名字 → 貼上完成的簽名檔。 ## 縮寫(邊打邊擴充,免開面板)· 選用 給片語一個**縮寫**,就能在任何輸入框直接擴充它。**觸發前綴**在設定中設定一次(預設 `;`): 1. 在管理員中,只需打入**縮寫本身**——例如簽名檔用 `sig`。前綴會自動加上(不用重打);欄位前方會顯示目前前綴 `;`。 2. 在任何輸入框打 **`;sig`**(= 前綴+縮寫)再按 **Space / Tab / Enter** → 它會刪除 `;sig` 並展開內文(若該片語啟用了預留位置,`{placeholder}` 會先跳出提示)。 3. **打錯了?** 在展開後**緊接著按 Backspace** 即可還原回 `;sig`(同一視窗內、5 秒之內)。 細節:比對**不分大小寫**(開著 CapsLock 時 `;SIG` 也會觸發);用 Backspace 更正的錯字仍會展開;兩個片語共用同一縮寫時,管理員會給出**行內警告**;系統匣選單另有一鍵**「暫停展開」**切換(供示範/遊戲用)。 > **關於前綴:** 前綴(預設 `;`)可避免一般打字/拼音誤觸發裸縮寫。在 **設定 → 縮寫 → 觸發前綴** 中更改(改成 `,`、`:`……)或**留空**。帶前綴的縮寫可自我分隔,即使緊貼前面的文字也會觸發(例如 `thx;sig`);不帶前綴時,它只會作為獨立單字觸發(絕不會作為較長單字的尾端如 `graf` 觸發)。你也可以逐應用程式停用縮寫(黑名單,例如 `cmd.exe; putty.exe`)或完全關閉。 ## 輸出與常用設定(系統匣 → 設定) - **輸出** — 預設「貼入使用中的應用程式」;或「僅複製到剪貼簿」(你自己按 `Ctrl+V` 貼上)。可選:貼上後按 Enter、單擊送出、「保留原剪貼簿內容」(還原預設關閉 —— 少數程式讀取剪貼簿較慢,還原可能趕在它讀取之前,導致貼出舊內容)。**每個片語都能覆寫此設定**(管理員 → 輸出:跟隨全域/貼上/貼上 + Enter/僅複製)——聊天片語自動送出,程式碼片語絕不。 - **面板位置** — 跟隨使用中的視窗(預設)/跟隨文字插入點/記住上次位置。 - **呼叫方式(擇一)** — ① **組合鍵**:點選方框後按下新的一組(一般按鍵需搭配 `Ctrl`/`Alt`/`Shift`/`Win`;功能鍵 **`F1`–`F24` 可單獨使用**);或 ② **輕點修飾鍵**:**單擊或雙擊一個修飾鍵**(例如右 `Ctrl`、右 `Shift`)來呼叫(單獨的修飾鍵無法作為一般熱鍵,因此以輕點方式偵測)。選擇輕點會停用組合鍵——兩者互斥,所以永遠清楚哪一個生效。 - **擷取熱鍵** — 選用的第二組組合鍵,可**靜默地把剪貼簿存成新片語**(氣泡回饋,不開視窗)。 - **資料夾** — 指向同步磁碟;**匯出/匯入備份**(zip,經驗證並附覆寫確認);每日**自動備份**到本機(保留最新 10 份,一鍵開啟資料夾)。 - **語言** — **18 種語言**:English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Português · Français · Deutsch · Italiano · Русский · Tiếng Việt · ไทย · Bahasa Indonesia · हिन्दी · বাংলা · العربية (RTL) · Türkçe,即時切換。**開機自動啟動**為選用。 - **主題** —— 深色(預設)/淺色/跟隨系統,點選即時生效,不用重啟。 - **檢查更新** — 預設關閉;開啟後僅在啟動時連線 GitHub 檢查有無新版本(本應用唯一的連線操作)。也可按「立即檢查」隨時觸發。 ## 鍵盤速查表 | 動作 | 按鍵 | | ------------------------ | ---------------------------------------------- | | 呼叫/關閉面板 | `Ctrl+Shift+8`(可設定)/ `Esc` | | 選取/切換分類/快速挑選 | `↑↓` / `←→` / `Alt+1–9` | | 送出 | `Enter` 或雙擊(單擊可選) | | 加入/移除我的最愛 | `Ctrl+D` | | 在面板中建立/編輯 | `Ctrl+N` / `Ctrl+E` | | 還原刪除(管理員) | `Ctrl+Z` | | 縮寫:觸發/還原 | 打縮寫 + Space·Tab·Enter / 展開後按 Backspace | --- ## 功能一覽 - **呼叫**:全域熱鍵——一組**組合鍵**(功能鍵可單鍵使用)或**單擊/雙擊一個修飾鍵**(例如右 Ctrl),**擇一**;面板跟隨使用中的視窗/文字插入點/記住的位置;頂列按鈕可跳到 **新增/管理員/設定**;釘選以連續送出多個;可拖曳與縮放並記住尺寸。 - **搜尋**:名稱/拼音/首字母/縮寫/內文,附標示;**平手時以使用頻率(frecency)決勝**;`@分類 關鍵字` 將搜尋範圍限縮到單一分類(單獨 `@分類` 即瀏覽該分類)。 - **內容**:純文字(多行、特殊字元、表情符號無損)、預留位置(預設值/選項下拉/片語巢狀/日期自訂格式/uuid/random——**逐片語自選啟用**)、**圖片**(來自剪貼簿或檔案,送出時以圖片貼上;**圖片也能設縮寫**——打縮寫、得圖片)。 - **縮寫**:以終止符觸發、變數提示、一鍵還原、Backspace 錯字更正、不分大小寫、點擊即中斷權杖、重複警告、逐應用程式黑名單、**系統匣一鍵暫停**。 - **輸出**:直接貼上/僅複製;可選自動 Enter、還原剪貼簿、單擊送出;**逐片語輸出覆寫**;擷取熱鍵(剪貼簿 → 片語,一鍵完成)。 - **管理員**:**寬敞的內文編輯器**(`⤢ 放大編輯` 開獨立視窗;有未儲存的變更一律先詢問 —— 關閉視窗時問,切換到其他項目時也問)、**預留位置標示**(依種類上色;失效的片語參照/無效的日期格式/未關閉的大括號會以紅色波浪底線標示,滑鼠停留可看原因;預留位置關閉時不會有任何標示,狀態列會改為說明),**對程式碼友善**(放大視窗永遠顯示行號,並提供 13 種程式碼格式供語法標示;Enter 會保留縮排、`Tab` 會將多行選取一併縮排、不換行模式),7 種分類顏色、拖曳重排/移動、**多選批次移動/刪除**(Ctrl/Shift 選取後按右鍵)、還原刪除、**回收桶(30 天內還原,附內文預覽)**、重複縮寫警告、使用統計、儲存回饋。 - **資料**:本機 JSON、熱重載(自動合併外部編輯/同步)、同步衝突通知、匯出/匯入備份、**每日自動備份(保留 10 份)**、開機自動啟動。 - **在地化**:**18 種介面語言**(簡體/繁體中文、English、日本語、한국어、Español、Français、Deutsch、Русский、العربية……),**阿拉伯文支援由右至左鏡像**,於設定中即時切換。深色/淺色主題(也可跟隨系統),同樣即時切換。 - **穩健性**:單一實例(第二次啟動會呼叫搜尋面板,而非重複安裝掛勾);CI 於每次推送執行測試加視窗煙霧檢查,並在 `v*` 標籤發佈兩種單一檔案建置。 ## 資料與同步 資料夾(預設 `Documents\QuickText`,可在設定中更改,可指向同步磁碟): ```text / ├─ index.json # category order + each category's file name and color ├─ .json # the snippets in that category (Snippet[]) ├─ trash.json # soft-deleted snippets (auto-purged after 30 days) └─ images/ # image files for image snippets ``` - `Snippet`:`{ id, name, abbr, body, useVariables, outputMode, imagePath?, updatedAt }`。 - **原子寫入**(`*.tmp` → `File.Replace`),因此同步永遠不會讀到寫了一半的檔案;`FileSystemWatcher` 熱重載(合併觸發),並附自我寫入防護。 - 機器本機狀態留在**同步資料夾之外**:設定存於 `%APPDATA%\QuickText\settings.json`,使用次數/我的最愛存於 `%APPDATA%\QuickText\usage.stats`(它們每次送出都變動,跨機器會衝突),每日自動備份存於 `%APPDATA%\QuickText\backups\`。 - **可攜模式**(無痕/隨身碟):在 **設定 → 資料 → 可攜模式** 中開啟——它會在 `QuickText.exe` 旁放一個 `QuickText.portable` 標記檔,並**於下次重啟時套用**(首次可攜啟動會把你的設定與使用資料帶過去,所以不必重新設定)。之後設定、使用資料、備份與預設庫會改存於 `\Data\`,而非 `%APPDATA%`/文件;「開機自動啟動」會改用啟動資料夾捷徑,而非登錄檔——這樣整個工具就能裝在隨身碟上四處走,且不在主機上留下任何東西。應用程式必須放在可寫入的位置(USB 隨身碟,而非 `Program Files`);**文字庫透過匯出/匯入備份搬移**。開機自動啟動是逐模式追蹤的,所以切換後若要用,請在新模式中重新勾選。若採用上述已安裝的配置則保持關閉(當資料夾是同步磁碟時,這才是正確選擇)。
_(它必須是標記檔,而非單純的設定——它決定 `settings.json` 本身存在哪裡;這個開關只在下次啟動生效,絕不擾動目前工作階段。)_ ## 品牌 素材放在 `assets/branding/`:`quicktext-mark.svg`(主要)、`quicktext-mark-mono.svg`(單色)、`quicktext.ico`(16–256,應用程式/系統匣圖示)、`quicktext-256.png`、`quicktext-social.png`(1200×630 og:image)、`quicktext-social-2x.png`(2400×1260 @2x)、`brand.html`(品牌手冊)。這個標記是薄荷綠方塊上的一個**文字 I 形游標(I-beam caret)**,旁邊是一塊剛落定文字的琥珀色方塊——「text▮」,也就是把你的文字放到游標處。配色「terminal dusk」:薄荷綠(應用程式強調色 `#3DC2A0`)+琥珀色 `#F2B457`,襯以偏藍綠的墨色;無襯線字標搭配 Cascadia Code 等寬字體。 ## 架構 純 Core(無 Win32,可單元測試)與 Win32/UI 分離。 | 專案 | 內容 | | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `src/QuickText.Core` | `Models`、`Persistence`(`Store`、`UsageStore`、`JsonConfig`)、`Search`(`SearchIndex`)、`Abbr`(`AbbrMatcher`)、`Snippets`(`Placeholders`)、`Pinyin`、`Settings`、`Localization`(.resx,18 種語言) | | `src/QuickText.App` | WPF UI(`SearchPanel` / `ManagerWindow` / `SettingsWindow` / `AppDialog` / `VariablesDialog`)、`Ui/Theme.xaml`(深色主題)、`Interop`(`GlobalHotkey`、`KeyboardHook`、`PasteEngine`、`Autostart`、`NativeMethods`) | | `tests/QuickText.Core.Tests` | Core 單元測試(xUnit) | ## 建置與執行 ```bash dotnet build QuickText.sln -c Debug dotnet test tests/QuickText.Core.Tests/QuickText.Core.Tests.csproj dotnet run --project src/QuickText.App # or run QuickText.exe under bin ``` 發佈單一檔案可攜式建置(win-x64): ```bash dotnet publish src/QuickText.App -c Release -p:PublishProfile=win-x64 dotnet publish src/QuickText.App -c Release -p:PublishProfile=win-x64-needs-dotnet10 ``` 需要 .NET 10 SDK。僅限 Windows(Win32 全域熱鍵/鍵盤掛勾/剪貼簿)。 ## 授權 [MIT License](../../LICENSE) · Copyright © 2026 rockbenben. 可自由使用、修改與散布。 ## 關於 365 開源計劃 [365 開源計劃](https://github.com/rockbenben/365opensource) 的第 **#023** 個專案——一人 + AI,一年 300+ 個開源專案。 [提交你的點子 →](https://365.aishort.top/) · [Discord](https://discord.gg/PZTQfJ4GjX) · [Telegram](https://t.me/aishort_top)