尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Vim 中运行 Prettier 后整个 buffer 被错误信息替换,怎么撤销并避免?
Vim 中运行 Prettier 后整个 buffer 被错误信息替换怎么撤销并避免【免费下载链接】prettierPrettier is an opinionated code formatter.项目地址: https://gitcode.com/gh_mirrors/pr/prettier在 Vim 里通过自定义按键直接调用 Prettier 格式化当前 buffer 时如果代码本身存在语法错误Prettier 的输出不是格式化后的代码而是一条错误信息——而 Vim 的 filter 机制会把 buffer 内容整体替换成这条错误信息。本文基于 docs/vim.md 说明这个现象的触发条件、如何用u撤销以及如何改用文档推荐的插件路径来避开这个坑。先确认你的运行方式是不是“裸 filter”docs/vim.md 的 Running manually 一节给出了一种不带插件、只用按键映射的裸用法以gp为例在当前活动 buffer上运行 Prettiernnoremap gp :silent %!prettier --stdin-filepath %CR这条映射做两件事:!prettier ...是 filter 操作Prettier 的标准输出会整体替换buffer 内容--stdin-filepath %告诉 Prettier “stdin 内容来自当前文件名”这样 Prettier 能根据文件扩展名推断语言并加载对应配置。--stdin-filepath的定义见 docs/cli.md 的--stdin-filepath一节。文档对这个用法的注意事项原文是Note that if theres a syntax error in your code, the whole buffer will be replaced with an error message. Youll need to pressuto get your code back.也就是说“整个 buffer 被错误信息替换”是这种%!filter 方式特有的已知现象buffer 内容以 stdin 送入 Prettier解析失败时 Prettier 打印错误信息到 stdout而 filter 机制不区分“格式化结果”和“报错”一律用来覆盖 buffer。撤销按 u 恢复代码文档给出的恢复方法只有一个按u执行 undo代码就会回来。两点需要留意这条撤销路径依赖 Vim 的 undo 历史如果 buffer 内容在你按下gp之前从未被修改、也没有可撤销的历史u是否能恢复到错误覆盖前的内容以你本地 Vim 的 undo 行为为准同一节还指出这个方式的另一个缺点光标位置不会被保留the cursor position wont be preserved这是该用法的固有限制撤销与否都成立。避免改用文档推荐的插件路径docs/vim.md 开头就给出结论Vim 用户应安装 vim-prettier 的 Vim 一节同样把这几款插件作为官方推荐的集成方式并补充了 coc-prettier。用插件而非%!filter 调用 Prettier就不存在“stdout 整体覆盖 buffer”这条链路。前提是先按要求本地安装 Prettier。docs/install.md 要求锁定精确版本--save-exact文档中的版本号占位符%PRETTIER_VERSION%在生成文档时会替换为具体版本号你直接替换为你安装的版本即可例如npm install --save-dev --save-exact prettier3.9.0docs/editors.md 特别提醒每个项目都要本地安装 Prettier让编辑器插件拾取本地版本保证各项目使用正确版本。下面是文档给出的两个可选分支选其一即可。分支一Neoformat在.vimrc中用 vim-plug 安装Plug sbdchd/neoformat如果希望 Neoformat 使用项目本地的 Prettier即node_modules/.bin/prettier而不是$PATH上的prettier需要打开let g:neoformat_try_node_exe 1在受支持的文件中运行:Neoformat或显式指定 Prettier:Neoformat prettier想保存时自动格式化可加 autocommand文档示例以*.js为例autocmd BufWritePre *.js Neoformat文档还提到可以绑定更频繁的事件如TextChangedNormal mode 下文本变化后和InsertLeave离开 Insert mode 时autocmd BufWritePre,TextChanged,InsertLeave *.js Neoformat分支二ALEALE 依赖 Vim 8 或 Neovim 的异步能力。用 vim-plug 安装Plug dense-analysis/aleALE 会优先使用本地安装的 Prettier找不到才回退全局安装。为所用语言启用 Prettier fixerlet g:ale_fixers { \ javascript: [prettier], \ css: [prettier], \}然后在 JavaScript 或 CSS 文件中运行:ALEFix注意文档里的一个易踩的坑ALE 同时支持 linter 和 fixer如果没有限制 linters会对所有支持语言运行全部可用工具可能出现“格式正确但一堆 lint 报错”的情况。只运行显式配置的 linter 需设置let g:ale_linters_explicit 1保存时自动格式化let g:ale_fix_on_save 1如何判断已经生效文档给出的验证方式就是运行命令后检查 buffer:Neoformat、:Neoformat prettier或:ALEFix执行后buffer 内容变为 Prettier 格式化后的代码且不再有错误信息覆盖。若 buffer 仍出现报错按文档逻辑回到根因——先修掉代码里的语法错误Prettier 解析成功后输出才会是格式化结果。限制“buffer 被错误信息替换”仅出现在%!filter 这种手动运行方式撤销手段是u该方式还会丢失光标位置这是文档明确列出的第二个缺点Prettier 选项也可以直接写进.vimrc如 ALE 的g:ale_javascript_prettier_options --single-quote --trailing-comma allNeoformat 的formatprg中每个空格都要用\转义但文档建议优先使用 配置文件。【免费下载链接】prettierPrettier is an opinionated code formatter.项目地址: https://gitcode.com/gh_mirrors/pr/prettier创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Python+SQLite实现体育用品商店管理系统:从需求到打包部署

Python+SQLite实现体育用品商店管理系统:从需求到打包部署

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/10 18:01:36
老款 Mac 安装最新 macOS:OpenCore Legacy Patcher 操作手册

老款 Mac 安装最新 macOS:OpenCore Legacy Patcher 操作手册

老款 Mac 安装最新 macOS:OpenCore Legacy Patcher 操作手册 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 如果你有一台不再获得官方系统更新的…

📅 2026/9/10 18:01:36
Docker命令实战指南:从容器生命周期到Compose编排与排错

Docker命令实战指南:从容器生命周期到Compose编排与排错

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/10 18:01:36
MORE NEWS

更多资讯

📰

CFD云仿真技术演进与云原生许可证管理实践

1. CFD云仿真技术演进与行业痛点CFD(Computational Fluid Dynamics)作为工程仿真领域的重要工具,近年来正经历从本地化向云端迁移的深刻变革。根据行业调研数据,2023年全球CFD云服务市场规模已达27.6亿美元,年复合增长…

📰

最长公共前缀算法解析:从暴力扫描到分治二分的面试进阶指南

1. 初识最长公共前缀:题目拆解与出题人意图1.1 从一道入门题看后端面试的考察逻辑最长公共前缀在LeetCode上的序号是14,难度标注为Easy。但如果你在面试中把它当成一道“送分题”来对待,那可能就踩进了出题人精心设计的陷阱里。这道题表面问的…

📰

Python控制流详解:if条件、for/while循环与性能优化

1. 控制流基础概念解析 程序执行顺序的控制是编程中最基础也最重要的概念之一。控制流(Control Flow)决定了代码的执行路径,就像交通信号灯指挥车辆行驶方向一样。在Python中,if条件判断、for循环和while循环构成了最基本的控制流…

📰

Spring Cloud LoadBalancer核心原理与生产实践

1. Spring Cloud LoadBalancer核心定位解析在微服务架构中,服务实例的动态发现与智能路由是核心基础设施。Spring Cloud LoadBalancer作为Spring Cloud 2025.0.0.0版本后默认的客户端负载均衡器,取代了昔日的Ribbon,成为微服务间通信的关键枢…

📰

小型风电场无功功率控制与Simulink建模实践

1. 小型风电场无功功率控制的核心挑战在可再生能源并网系统中,小型风电场的无功功率控制一直是个棘手问题。当风电场连接到无限电网时,系统呈现三个典型特征:电网电压恒定、频率稳定、短路容量远大于风电场容量。这种场景下,传统的…

📰

Data Science for Beginners 环境搭建完全指南:从零配置 20 课数据科学学习环境

Data Science for Beginners 环境搭建完全指南:从零配置 20 课数据科学学习环境 【免费下载链接】Data-Science-For-Beginners 10 Weeks, 20 Lessons, Data Science for All! 项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬