应直接修改className类名而非JSX结构,使用多光标时需确保双击精准选中完整类名(无空格/引号/句点),含下划线时需调整match_whole_word或用正则\bapi_v2\b,批量替换须分步验证单类名场景,动态拼接需人工处理,列编辑依赖等宽字体与矩形框选,改前须排查模板字符串及clsx等调用。

直接改 className 里的类名,别碰 JSX 结构本身——多光标能快,但错一个引号或花括号就报错。
Ctrl+D 选不全 class 名?先确认是不是“完整单词”
Sublime 的 Ctrl+D 不是搜全文,它只从你双击选中的那个词出发,严格匹配字面完全一致的字符串。如果你光标停在 header-main 中间、或者高亮带了空格/"/点号,后续就全漏了。
- 必须双击目标类名(如
btn-primary),确保高亮区域前后没空格、没引号、没句点 - 类名含短横线(
-)或下划线(_)时,-不影响全字匹配,但_默认被当分词符;若双击只选中api而非api_v2,临时关掉match_whole_word或用正则\bapi_v2\b替代 - 想跳过字符串里的同名内容(如
"btn-primary"),按Ctrl+K再按Ctrl+D,不是连按,要松开再按
批量替换 className="xxx" → className={styles.xxx} 得分步来
正则不能自动拆多类名,也不能理解 JS 拼接逻辑。硬套 className="([^"]+)" → className={styles.$1} 会把 "header main active" 变成 {styles.header main active},直接语法错误。
- 先用
Ctrl+F搜className="([a-zA-Z0-9_-]+)",勾选Regex和Whole Word,预览是否全是单类名;有空格/动态拼接的行,手动处理 - 安全替换写法:
className="([a-zA-Z0-9_-]+)"→className={styles.$1},仅适用于纯单类场景 - 遇到
className={`header ${isActive ? 'active' : ''}`或className={clsx(...)},别碰正则——用Ctrl+F搜className=\$\{[^}]+\}或className=clsx定位,人工重写
列选择改对齐字段(比如 CSV 第3列类名)必须等宽字体 + 精准框选
列编辑不是“选几行”,而是“从某列起向下拉矩形”。一旦某行该列是空或换行符,光标就停在行尾,不是悬空——这不是 bug,是设计行为。
- 必须用等宽字体(如
Fira Code或Consolas),系统默认 UI 字体会导致视觉偏移 - 按住
Alt+Shift(Windows/Linux)或Option+Shift(macOS),从第一行目标列首字符垂直拖到最后一行对应列位置 - 如果列不对齐(比如有空行、注释行、缩进不一致),列选会失效;此时改用正则:先
Ctrl+L选中所有目标行,再Ctrl+Shift+L拆光标,按End跳行尾,用方向键微调到类名起始位置后输入
真正容易出问题的不是快捷键按错,而是改完发现某个 className 里混着模板字符串或工具函数调用——它们根本不会被 Ctrl+D 或正则捕获,却会在运行时报 styles.xxx is undefined。动手前,先扫一眼有没有 ${、clsx、classnames 这类关键词。

















