You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sed命令时出现zsh: event not found错误的排查与解决

解决zsh中sed命令的"event not found"错误

错误原因

你的sed命令用双引号包裹,zsh会解析其中的!作为历史事件扩展符,尝试查找匹配的历史命令,这直接触发了zsh: event not found错误。同时双引号内的转义规则复杂,容易导致特殊字符解析混乱。

解决方法

方法1:改用单引号包裹sed脚本(推荐)

单引号会让zsh完全不解析内部的特殊字符,只需处理sed脚本内的单引号转义即可。sed中在单引号字符串内嵌入单引号,需要用'\''的格式拼接:

sed 's/map('\''t'\'', '\''<Esc>'\'', '\''<C-\\><C-n>'\'')/map('\''t'\'', '\''<Esc>'\'', '\''<C-\\><C-n>:q!<cr>'\'')/g' ~/.config/nvim/lua/core/keymaps.lua

方法2:对双引号内的!转义

如果坚持使用双引号,需要把!转义为\!,避免zsh触发历史扩展:

sed "s/map(\x27t\x27, \x27<Esc>\x27, \x27<C-\\\\><C-n>\x27)/map(\x27t\x27, \x27<Esc>\x27, \x27<C-\\\\><C-n>:q\!<cr>\x27)/g" ~/.config/nvim/lua/core/keymaps.lua

方法3:更换sed替换分隔符

可以用#或其他非冲突字符作为sed的替换分隔符,减少转义复杂度:

sed 's#map('\''t'\'', '\''<Esc>'\'', '\''<C-\\><C-n>'\'')#map('\''t'\'', '\''<Esc>'\'', '\''<C-\\><C-n>:q!<cr>'\'')#g' ~/.config/nvim/lua/core/keymaps.lua

内容的提问来源于stack exchange,提问作者Tejinder Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:27:18