Repository navigation
Releases: forfudan/yumete
Release list
yumete 0.16.0
What is new in this release:
-
Every key is a command you can bind, in helix's config shape. Normal
mode's keys, those inside its groups too (about 340), Insert mode, select
mode, the command line, the pickers, the sidebars, a table's grid and the
search panel each take bindings by helix's names ([keys.normal],
[keys.insert],[keys.prompt],[keys.picker],[keys.sidebar],
[keys.table]): a group as a table, a list of commands run in order,
no_opto unbind.Space ?is the command palette, and the site lists
every bindable command with its keys under each keymap. With
[keys] inherit(on by default) your own keys follow you into the
sidebars, the command line and the pickers. -
The vim keymap is vim's, and yumete's additions are a flavour
([keys] flavor = "off" | "basic" | "full",basicby default): 28 items,
each one feature, listed on the Key remapping page and switched one by one
under[keys.flavor_items]or on a page of the settings panel. Under helix,
helix's keys are helix's unless an item says otherwise;flavor = "off"
leaves either keymap exactly as upstream has it. -
Windows: split beside and below as many times as fit (
C-w v,
C-w s,:vsplit,:hsplit,C-w n), walk them withC-w h j k l,
andye -rbrings the layout back. -
Links between files:
[[name]]resolved across the project, a links
panel (:links) and a graph that opens in the browser (:links-export). -
:hard-wrapre-fills text to a width without changing what it means:
Markdown structure, Typst, code comments and docstrings, and Chinese with
kinsoku. -
ye --export html|typst|csv|tsv|pdf FILEwrites a file out from the
command line. -
helix's pickers: changed files (
Space g), symbols and diagnostics
(Space sSdD), andSpace Rto replace with the clipboard. -
The input method's annotation modes are back, as in yume:
/while
typing steps through the modes (multi,double, or your own under
[ime.annotation_modes]); the annotations line up in a column, and a
narrow window leaves out whole fields rather than cutting one. -
The
ggroup's jumps moved to keys free in vim and helix alike:gz
jumps to a word by its first letters,gZto a Chinese character by its
pinyin,gxopens the web address under the cursor as vim's does, and
gLfollows any link.
Breaking:
:yume-chaifenis:yume-annotation, and[editor] show_chaifenis
[ime] annotation = "double".[keys] flavor = trueisflavor = "full".move_line_upandmove_line_downnow mean a whole line of the file, as in
helix;jandkaremove_visual_line_downand_up.g?,Space t ?andgD's other window are gone;gDis the declaration.- Under helix,
$is left to helix (the line's end isgl).
The full list is in CHANGELOG.md.
yumete 0.15.0
What is new in this release:
-
The manual is now a website, https://yumete.shurufa.app/, rewritten shorter
on helix's plan, with a book view at/book/. Its key, command and settings
tables are generated by the editor itself. Release archives no longer carry
docs/manual.md. -
The interface follows the system language (
[editor] language = "auto"):
Traditional Chinese onzh_TW/zh_HK, Simplified on otherzh, English
elsewhere, with an English:tutor. Setlanguage = "zh"to keep Traditional
on an English system. Config errors are reported in that language too. -
A live count on the status line and beside each heading in the outline,
counting a Chinese character as one and a Latin word as one.:countand the
daily target follow the same rule. -
Export keeps the document's structure: lists, block quotes, footnotes, pipe
tables and rules come out as HTML and Typst elements, and an English file is set
as English. -
For code: rename, references and code actions from the language server
(gr,Space r,Space a); TypeScript, C++, Bash and Lua grammars; citation
keys completed from the bibliography beside the file; an optional prose language
server (harper-ls) for spelling;:earlier/:later;:git-showopens the
committed draft beside the one you are writing; the change bar works outside git. -
Invisible characters are marked: zero-width spaces, soft hyphens, bidi
controls and odd spaces get an amber ground and are named on the status line. -
Tables: a table file is described by a
datapackage.jsonbeside it (a
Frictionless Data Package: fields,primaryKey, dialect), written only on
:table-schema write. What you choose while reading — delimiter, header,
hidden columns — is remembered for the file in yumete's own data directory.
A GFM table without outer pipes is a table.Space t p/Pput a copied
column in;Space t vwrites it over. Breaking: the old
.yumete/tables/*.tomlis no longer read; opening such a table says so,
and:table-schema writemakes the replacement. A plain.txtis no
longer guessed to be a space-separated table. -
Keys measured against helix and vim: vim's numbered registers,
gi,3.,
2R, countedrand~,d%, Visual endings,v…Esc; helix'sA-d,A-J,
2R,s/S/Kalways reading a regex.gqkeeps paragraphs that open with the
two-square indent apart. -
Closing the terminal window no longer loses what was typed, and the session
is written as files open and close, so-rafter a crash brings them back.
The full list is in CHANGELOG.md.
yumete 0.14.0
What is new in this release:
-
Words you have already written are offered as you write. After four Latin
letters a list of the words in every open file floats under the caret, those that
start with what you typed first, in the case you typed, then fuzzy matches.
Chinese words come up after two characters, and a simplified character finds the
traditional words and the other way round.C-nasks at any length, and also
offers the Chinese words that letters in full pinyin spell. In code they fill in
where the language server has nothing.[editor] word_completion,
[editor] completion_page_size(6 by default). -
Brackets and quotes close themselves, as in helix:
:auto-pairs off|basic|full,
[editor] auto_pairs.basic, the default, pairs helix's six ASCII pairs;full
also pairs the Chinese brackets and quotes, through the input method too. -
Code completion narrows as you type without asking the server again, appears as
soon as the server answers, and the signature stays up while you type the
arguments. -
The
mgroup, as helix's: each step lists what it takes; it acts on every
selection; counts step out pair by pair; any character is a pair (ms*,md$);
mrshows the pair it found first;msthenEnterputs the selection on lines of
its own;mi uis the clause,mi T/e/xthe test, the entry and the HTML
element,mi gthe change. Warning:maftermi/ma/mdis the nearest pair
only; Markdown marks moved tok. -
Several selections behave as in helix throughout: every key acts at every
cursor, every cursor is drawn, and undo and redo bring the selections back. -
Pages side by side:
:view-pages-horizontal 1–4, the text running on from one
page to the next. Warning::view-bandsis now:view-pages-vertical, and
takes 1 to 4. -
C-vunder the vim keymap: blockwise visual mode, measured against vim. -
The input method's candidate bar follows the theme.
[panel] inkand
[panel] paperare no longer used; a config that still has them keeps working. -
The shell line has its own label, ghost and history; Tab completes programs and
file names.:read <file>, as in helix and vim.-rand:resumebring back
the look of the page as well as the files.[editor] remember = falsekeeps
no memory of where you have been. -
Smaller things:
C-aandC-xfollow helix under the helix keymap, dates and
times included; path completion after a/or in a Markdown link; more look-alike
pairs for the bracket keys; and a number of fixes.
# macOS / Linux
brew install forfudan/tap/yumete
# Windows
scoop bucket add forfudan https://github.com/forfudan/scoop-bucket
scoop install yumete
Or an archive below.
yumete 0.13.0
What is new in this release:
-
Warning: seven themes are gone:
amber,kiln,firefly,mogao,cyanotype,
complementandmeridian, to keep the set at ten. A config that names one keeps
the default theme, and the config check says so;:themeand Tab lists the ten. -
Seven themes from the editors you already use:
one-dark,github,monokai,
dracula,tokyo-night,catppuccinandgruvbox. Each draws code and Markdown in
its own colours, value for value.github,tokyo-night,catppuccinandgruvbox
have a light and a dark half (:theme-mode); the other three are dark only. Their MIT
notices are inlicenses/. -
Light moods space their greys by contrast. Every step between the text and the
paper is the same ratio darker than the one before, so the selection, a table's
cursor row and its column bands stand as far apart on a light page as on a dark one.
Dark moods are unchanged. -
:write-quit-all(:wqa,:xa), as in vim and helix: save every file that
changed, then leave. A file that cannot be saved keeps the editor open.:wqa!writes
over files changed outside and leaves anyway, keeping the recovery copy of a file it
could not save. -
:sb:sw:spand:rb:rw:rp: search, or search and replace, in the
open buffers, the working directory or the project. -
The command menu lists commands only. A shortcut is shown in brackets beside its
command, and typing it brings that command up. -
Warning:
:word-showis:word-mark, and takesoff,color,ink,tintor
line;onis gone. In the config,show_segmentationbecomesword_mark = "off". -
Smaller things: the line number of every line a selection touches is lit; a
.jj
or.svncheckout is a project;:wkeeps a hard link;*.{md,txt}works in the
search panel's fields; a footnote wrapped over several lines is drawn as one; a
window too narrow for a sidebar draws none.
# macOS / Linux
brew install forfudan/tap/yumete
# Windows
scoop bucket add forfudan https://github.com/forfudan/scoop-bucket
scoop install yumete
Or an archive below.
yumete 0.12.0
What is new in this release:
-
⚠️ Space t yandSpace t ptake a column one record at a time. In 0.11.0 a
field holding a line break was taken as two halves, andSpace t pthen wrote every
cell below it two rows down — with the row and column counts unchanged, so nothing
said the table had gone wrong. A value with a line break now travels whole. If you
pasted a column in 0.11.0, look at the rows under any two-line value. -
tat the cell layer isSpace t. The message a delimited file opens with tells you
to presst oto go back to the source; in 0.11.0,t osearched the cell for an
oinstead. At the cell
layertnow opens the table's group; inside a cell it is till, as before. -
A double click goes into a cell, with the caret on the character clicked. A
single click still selects the cell. -
The grid scrolls by screen lines. A record whose cells wrap or hold line breaks
counts for the lines it takes, sojinto a tall record no longer throws it to the
middle of the screen, and the caret's cell stays on screen whole. A column is as wide
as the rows on screen need, not as a long value further down asks. -
Under the helix keymap,
ftFTrun on over line breaks, as helix's own
do. The vim keymap keeps vim's line-boundf. -
Space yat the cell layer copies the cell, asydoes, rather than its first
character. The record panel shows a cell's value — no quotes, its line breaks kept.
# macOS / Linux
brew install forfudan/tap/yumete
# Windows
scoop bucket add forfudan https://github.com/forfudan/scoop-bucket
scoop install yumete
Or an archive below.
yumete 0.11.0
What is new in this release:
-
A table is a grid, and the cell is the unit. Open a
.csv, a.tsv, a code
table or a markdown table andhjklwalk cells rather than characters;Tab
andS-Tabstep on; the status line names the column you are in, 「列 3 [碼]」.
creplaces this cell,dempties it and leaves the delimiter,yyanks it,x
selects the whole record — every line of it, where a quoted field runs over several —
and%selects the whole table rather than the chapter it sits in.A-dandA-c
do the same without touching the register.vthenh/lgrows the selection by
whole cells. -
pputs in,Rwrites over. A row's cell count belongs to the table, so the
only thing a grid can take in without changing shape is a whole record:pbelow,
Pabove. A cell, a run of cells, a block copied out of a spreadsheet can only be
written over what is there, and that key isR. -
Two layers. The whole cell is the unit at the top;
Entergoes down into the
cell, where this is an ordinary editor over one field —j/kwalk the cell's own
rows,oandOopen a line of the cell — andEsccomes back up.Escnever
leaves the grid. -
Three surfaces.
空格 t othe source,空格 t btable keys over the file as
it is written,空格 t tthe whole window with the delimiters drawn as rules
(空格 t qhands it back).空格 t wcycles how a cell too wide for its column is
drawn. A stretch inside a chapter can be a table too, read where it lies and never
rewritten. -
空格 tis the table's command group. Rows:t rt Rt d, moved with
t jt k. Columns:t yt p.t ithe record panel,t Hwhether the first
row is a heading,t ethis table's schema in the other half.t /andt ?
search column by column —t1/column 1 only,t2-10?columns 2 to 10 — and
:table-jump 木goes to the row this table calls 木. -
空格 eand空格 Ebrowse one directory at a time, the way helix does it:
the picker with a directory in it,../first, typing filters,Entergoes in.
空格 eat the project root,空格 Ebeside the file you are in. -
空格 空格turns the page,空格 退格turns it back. A whole page, the same
step asC-f/C-b;J/Kare still the half-page pair. -
The 拆分表 opens five times faster. A
"is the only thing that can join two
lines into one record, and the real 123,380-line table holds none — so the file is
asked for a quote before every line is walked. Opening falls from 250 ms to 49 ms,
and anEscout of a cell from 50 ms to 1 ms. -
A search no longer reads the file it is writing.
ye --grep word . > out.txt
foundout.txtand read back what it had just written: one such command reached
315 GB, silently. The walk asksfstat(1)for the identity behind stdout and says
on stderr which file it did not look at. -
⚠️ :yank-on-deleteis gone — that behaviour is now the single item in
:keymap-yumete-flavor on|off([keys] flavor), a short list of changes laid over
helix or vim rather than a third keymap. -
⚠️ The sidebar is one command,:sidebar [off|explorer|buffers|outline|search|info].
Each kind of panel has a fixed side. The[sidebar]config table is gone, and a
config file that still holds one does not load at all — take it out before
upgrading.filesis nowexplorer. -
⚠️ 碼表 are no longer looked for in~/.local/share/yumete. That layer sat
first in the search order, so a table copied there silently covered 宇浩's own —
which updates with the install. Name your own directory in[ime] data_dirs. The
directory itself stays: word lists, the line each file was last left on, and
sessions are still read there. -
vim's sentences cross lines, its paragraphs break on blank lines, and a motion
that cannot move fails — measured against vim rather than reasoned about. -
One rule for twenty-three switches: bare reports,
on/offsets,toggle
flips. And--help, the 「did nothing」 notice and eleven retired command names now
point at spellings the editor really has.
# macOS / Linux
brew install forfudan/tap/yumete
# Windows
scoop bucket add forfudan https://github.com/forfudan/scoop-bucket
scoop install yumete
Or an archive below.
yumete 0.10.0
What is new in this release:
-
The input method's keys are one group,
空格 z.⚠️ 空格 空格is gone — it
is空格 z znow. The letter underzis the letter Yume gives the same thing on
its own ⌃⇧ chord, so a hand that knows one knows the other:mwhen a word
commits,yprediction,ipick a scheme,nthe next scheme,/the 拆分
beside a candidate,3–9candidates on a page. The three settings with more
than two values go one level down:z pthe candidate bar,z ethe preedit,
z mthe commit method. -
空格 oopens something you had open before.o fthe files you have opened
under this project, newest first;o gthe same list with every project in it;
o pthe projects you have worked in — choosing one goes there and starts again
with that project's files already open;o rtakes up this directory's last
session and adds it, closing nothing. As commands::recent-files,
:recent-files-global,:recent-projects,:resume. -
⚠️ --continueis now--resume, and-ris its short name. One word for one
thing, and it is the word that still reads correctly inside a running editor. -
:yume-wherecan be read. It no longer folds the list after four names: every
file it found is on its own line, shown as the path it was found at, with the
format stamp it carries (YTB20260828,YFL20260913). An install whose tables are
a generation behind used to say only 「bad magic」; now the page says which
generation, so a report about an editor that types no 拼音 can be one screenshot. -
--shotwaits for the file picker.--files PAT --open --shotphotographed an
empty list and a turning spinner on a tree the pipe walks in eleven milliseconds.
brew install forfudan/tap/yumete, or a tarball below.
yumete 0.9.0
What is new in this release:
-
Table mode is settled. A table is read at four levels, and every key now has
one meaning at each of them. In the three drawn in the document (空格 t o,
t b,t f) the separators are text: the caret stands on the wall between two
cells and on the| --- |row. In the full window (t t) they do not exist —
nothing lands on one, word motions stay inside their cell,g h/g l,
Home/Endare the cell's two ends, and1G/2Gcount the rows the gutter
draws. -
Whole rows can be cut and pasted.
x dtakes a record,3x dtakes three,
pputs them back.mi ctakes the cell the cursor is in, somi c creplaces
a value outright. One rule decides all of it — an edit goes through if the table
is still a table afterwards — and it shut five ways a single keystroke used to
leave a file that no longer parsed as the table it was. -
The candidate bar has three places.
⚠️ :yume-panelnow takesbox,
bottomorinline, and:yume-preeditis renamed:yume-inline-preedit. The
list is always on screen: a box beside the caret, a row at the foot of the
window, or the line under the caret. SoTabopens the 字典 on the first press,
the arrow keys walk the list,PageUp/PageDownpage it — and none of the three
asks for a 碼表 to be loaded first. -
:git-diffshows both drafts. The paragraph before and the paragraph after,
with the changed words brighter, instead of one line carrying both. An afternoon
of rewriting no longer defeats it.空格 x,空格 Xand:git-diffare the same
diff drawn three ways. -
A generated report is a clean read-only page.
:git-diff,:diff,
:check-punctand:count-progressno longer pop an info panel or open up the
raw markup under the cursor, and a report about one file names it once. -
The editor draws its own block cursor, so it is as wide as the character it
stands on and shows up in a screenshot; a 字根 in a Private Use Area is two cells
wide. -
Smaller things. Typing a bare count opens a small panel of the keys where the
number is not a repeat. Any word in a command's name finds it.C-p/C-nwalk
the history on the:and/prompts.gKis gone — joining upwards isk
thenJ. A bareGdoes nothing under the helix keymap, as helix does.
yumete 0.8.0
本次更新加入了優化的豎排頁面方向鍵邏輯、Vim 預設、超大文件優化,以及全新的設置面板。
功能更新
-
豎排頁面的
h j k l,現在默認按照視覺方向移動。 在豎排頁面中,j和k分别向下、向上移動,h則向左切換到下一縱。如果你更習慣按照文本的閲讀順序操作,也可以使用:vertical-keys logical切換到邏輯方向模式,或者在配置文件中設置[editor] vertical_keys = "logical"。在這種模式下,h和l分别向前、向後移動一個字符,j和k則分别向下、向上移動一行。無論選擇哪種模式,gh、gj、gk、gl的含義都保持不變:段落及其兩端没有固定的空間方向,不需要跟着一起變。 -
Vim 預設鍵位更符合 Vim 習慣。 在這個預設下,
j用於沿段落移動,gj才用於沿列移動,恰好與 Helix 相反。h和l默認會停止在段落的兩端,除非在[editor] which_wrap中另有設置。gh和gl没有綁定動作:Vim 本來就用0、^、$來定位行首和行尾,而gh在 Vim 中另有用途,用於進入選擇模式。此外,s現在和cw一樣,只執行一次修改操作,因此按一次u就能完整撤銷。 -
保存文件時,保留原有的換行風格,並添加換行符。 原文件使用
\r\n,保存時就繼續使用\r\n;原文件使用\n,保存時也不會擅自改變。空文件仍然是空文件。這與 Vim 和 Helix 的行爲一致。如果需要精確保留文件的原始字節,包括末尾没有換行符的情况,可以設置[editor] insert_final_newline = false。 -
搜索面板中的全部替換,現在總是在中央窗口中進行確認。 無論當前處理的是單個文件還是整本書,都不例外。替換完一個文件後,高亮位置也會自動跳到下一個文件的首個匹配項,而不是退回列表頂部。
-
設置面板中的
q不再直接關閉面板。 現在需要使用:q才能退出。考慮到q與jk一樣,都是容易誤觸的按鍵,而且設置面板本身並不需要輸入文本,過去誤按一次q就可能丢失尚未保存的修改。這個改動避免了不必要的數據損失。
問題修復與性能優化
-
超大文件的打開内存佔用大幅降低。 以一個 3.91 GB 的 JSON 文件爲例,打開時的内存佔用從約 40 GB 降至 4.3 GB,耗時也從 19 秒縮短至 6.8 秒。這次優化主要來自四個方面:
- 對超過 16 MB 的代碼文件,不再構建語法樹。此前,語法解析會額外複製整份文本三次,造成巨大的内存開銷。
- 打開文件時,不再把整個文件複製進一個可能根本不會被讀取的請求中。
- 文件内容現在直接流式讀入 Rope,而不是先將整個文件一次性讀入内存。
- 判斷文件編碼時,只讀取開頭的幾行,不再複製整份文件進行猜測。
-
修復了空行上的删除和粘貼行爲。 在空行上執行
dd或dw,現在也能正常處理,不再毫無反應。在空行上執行p,内容會粘貼到該行之後,而不是意外地插入到下一行之後。此外,即使最後一行没有換行符,yy也會正確地複製整行,隨後執行p時會另起一行粘貼。 -
搜索面板中的單項替換,現在會跟隨高亮位置更新。 替換完成後,頁面會自動跳轉到新的高亮位置,同時保持文件列表原有的排序不變。
全新的設置面板
設置面板經過重新設計,現在會圍繞當前選中的配置項展示相關信息。
-
配置值不再受右側欄寬度限制。 以前用於顯示配置來源的欄位最多隻有 18 個字符,導致配置值的顯示空間受到擠壓。現在,配置項列表下方新增了一個信息區域,集中展示該配置項的用途,以及三個配置層級:默認值、全局配置和項目配置。當前生效的層級會以金色標出;未設置的層級則顯示
unset。這樣,配置項的作用和它當前的實際設置就能一目瞭然。 -
兩列寬度現在會根據實際内容動態調整。 對於較長的配置項名稱,例如「NORMAL模式下屏蔽系統版宇夢輸入法」,只要空間足够,就會完整顯示;空間不足時則以省略號提示,而不再像以前那樣直接截斷,讓人無從判斷後面還隱藏了什麽。
-
設置面板的標題現在會明確指出修改目標。 編輯全局配置時,標題顯示爲
設置 [全局];編輯項目配置時,則顯示爲設置 [本項目],旁邊還會標明對應的配置文件名。如果該文件尚不存在、保存時纔會創建,標題中還會顯示+。這樣可以清楚地區分當前修改的是哪一份配置,避免誤改。
yumete 0.7.0
新
-
Yumete 現在開始支持 Windows。Windows 不支持「單獨按 Shift」,所以中英切換請使用替身鍵
<C-^>。 -
空格 n可以在任何時候顯示漢字信息。宇浩全息拆分表嵌入了軟件中,從而不需要系統安裝宇夢輸入法。一般情況下它會顯示宇浩全息拆分、讀音、字集與碼位。加載方案時,會再在上面額外顯示方案拆分、編碼、分節編碼。 -
發布的包自帶星陳精華版碼表,包括單字和簡詞。
-
竪排的
hjkl將跟着行文方向移動。h/l是本行的上一個字/下一個字,j/k是上一行/下一行。它不再是螢幕上的左下上右,而是行文的邏輯。如果你想要使用視覺方向,可以用命令:vertical-keys visual。注意,「上下左右」四個方向鍵永遠是視覺方向,不受此開關影響。 -
命令
:layout vertical現寫作:vertical,:layout horizontal現寫作:horizontal。 -
在
/搜索時,可以使用<A-j>以匹配繁簡與拼音。/書可以匹配「书」,/shuzhai可以匹配「書齋」。
修
-
竪排時,一頁有多大,從前是按「剩下多少文字」來算,於是光標會自己往左漂移三四格。因此
zb落在正中而不是左邊。現已修復。 -
「縦中横」的光標現在只標它位於的字母,不再將整組反白。
-
浮動窗口會自動避讓詞語,而不是只避讓光標所在格。一個漢字佔兩格,而百科詞條有好幾個字,先前會被浮動窗口遮蓋大半,現在不再發生。