Whidy Writes

VSCode的F2快捷键失效问题

创建于:最后更新:whidy

使用 VSCode 进行开发的时候,有时候会遇到 F2 快捷键失效,让人很不爽,以为是哪个app又搞了全局快捷键影响了VSCode快捷键(当然,当你阅读本文的时候真的有可能是某个全局快捷键占用了,这个就需要你自己去排查了~),关了所有的应用,仅保留VSCode或是重启电脑还是不行。

于是,被逼进行了深入的研究,你也可以根据我的方式进行排查。

  1. 检查了编辑器快捷键设置是否有过变更,默认是 F2
  2. 检查是否有第三方应用使用了全局快捷键造成冲突(默认开启全局快捷键的应用的产品设计都是垃圾
  3. 检查你当前开发环境,尝试针对不同的代码写法,或者文件进行测试

注意,第三点的操作会需要反复尝试,比如开启一个 jsts 或是 html 文件进行测试,当然 F2 的快捷键定义是 Rename Symbol (因为我用的英文版不知道中文翻译是啥- -) ,所以,理论上选中一个变量,按 F2 就应该会自动触发一个修改输入框,进行修改。

而我通过反复的测试,发现问题,VSCode编辑器没有问题,快捷键也没有冲突,在某些文件下可以正常操作,某些不行,例如 *.vue 文件。原因大致是编辑器对JS代码的解析机制来检测变量定义的。然而,vue文件解析我们都是用 Vetur 的,这个暂时无法支持。更多资料我也查了一下,这段摘自Explore TS Plugin support in Vetur by integrating znck/developer-experience's refactor support #2016的描述写的很清楚了:

Vetur currently has limitations that can only be solved by a TS Plugin. For example, rename/refactor in JS/TS files should generate changes across a project's JS/TS/Vue files, but with Vetur's current approach it won't support Vue files, so renaming might create compiler errors.

那么,文中也提到, Vue 3 是支持的,对于Vue 3正式版一下有了更多的期待。至此,VSCode编辑器下F2失效的原因就算整明白了。如果是Vue2的话,暂时小心翼翼的使用 Ctrl/Cmd + d 来操作修改吧~

avatar

Whidy

一名爱折腾的前端开发工程师,喜欢玩游戏听歌写东西 ฅʕ•̫͡•ʔฅ