Flutter开发:OSX终端+Vim环境下保存文件无法触发热重载的解决方法
解决Flutter在Vim保存Dart文件后无法自动热重载的问题
Hey there! 我之前在OSX用Vim开发Flutter时也碰到过完全一样的问题,每次保存都要切回终端按r实在太麻烦,后来试了几个办法终于搞定了,分享给你:
1. 先确认应用处于Debug模式
热重载只在Debug模式下生效,如果你启动应用时加了--release或者--profile参数,那肯定没法自动重载。默认的flutter run就是Debug模式,可以先检查一下启动命令有没有问题。
2. 修改Vim的备份配置(最常见的解决方法)
Vim默认的保存机制是创建临时文件后替换原文件,这种“替换式”的保存Flutter的文件监听可能识别不到。你可以修改Vim的backupcopy选项,让它直接覆盖原文件:
- 打开你的Vim配置文件
~/.vimrc(如果没有就新建一个) - 添加一行:
set backupcopy=yes - 保存配置后重启Vim,再试试保存Dart文件,应该就能触发自动热重载了。
3. 排查文件监听是否正常
如果上面的方法没用,可以打开详细日志看看Flutter有没有检测到文件变化:
flutter run --verbose
保存Dart文件后,盯着终端日志看有没有类似File changed: lib/xxx.dart的输出,如果没有,说明系统或者Vim的文件变更没被Flutter捕获,再往下排查。
4. 调整OSX的文件监听限制
OSX对系统能监听的文件数量有默认限制,如果你的项目文件很多,可能触发了这个限制。可以临时调整:
sudo sysctl -w kern.maxfiles=5242880 sudo sysctl -w kern.maxfilesperproc=524288
如果要永久生效,需要编辑/etc/sysctl.conf文件(没有的话就创建),把上面两行加进去,保存后重启系统即可。
一般来说,修改Vim的backupcopy选项就能解决大部分问题,你先试试这个!
内容的提问来源于stack exchange,提问作者Bashar
相关产品推荐
相关产品推荐

