配置iTerm2点击文件链接以VSCode打开指定扩展名文件及MacOS默认关联机制咨询
配置iTerm2点击文件链接以VSCode打开指定扩展名文件及MacOS默认关联机制咨询
嘿,我来帮你搞定这个问题,刚好之前我也跟iTerm2的文件打开行为较劲过,分享下我的解决方案和对MacOS关联机制的理解:
一、让iTerm2点击指定扩展名文件用VSCode打开
有两种方式,你可以根据需求选:
1. 全局修改系统默认关联(简单直接)
这个方法会让整个系统里的对应扩展名文件都默认用VSCode打开,iTerm2点击链接时自然会跟着系统走:
- 找到任意一个
.js/.ts/.pdf(或者你的自定义扩展名文件),右键点击它 → 选择「显示简介」 - 在「打开方式」下拉菜单里选中VSCode,然后点击「全部更改」,确认弹窗后就搞定了
- 自定义扩展名的话,先新建一个空白的对应扩展名文件(比如
.xyz),再按上面的步骤操作就行
2. 仅在iTerm2里自定义(不影响系统全局)
如果你不想改系统默认,只想让iTerm2里的链接按你的规则打开,可以这么做:
- 打开iTerm2偏好设置(快捷键
Cmd+,),切换到「Profiles」标签,选中你日常用的配置文件 - 找到「Advanced」选项,点击「Semantic History」旁边的「Edit」按钮
- 选择「Run command」,如果想所有文件都用VSCode,直接输入
code "$0"就行 - 要是想针对不同扩展名分开处理,比如JS/TS用VSCode,PDF用预览,其他用系统默认,可以写个小脚本:
给脚本加执行权限:#!/bin/bash # 保存为 ~/.iterm_file_handler.sh FILE_PATH="$1" EXT="${FILE_PATH##*.}" case "$EXT" in js|ts|xyz) code "$FILE_PATH" ;; # 这里替换成你想指定的扩展名 pdf) open -a "Preview" "$FILE_PATH" ;; *) open "$FILE_PATH" ;; # 其他文件用系统默认应用 esacchmod +x ~/.iterm_file_handler.sh,然后在Semantic History里输入~/.iterm_file_handler.sh "$0",保存后就生效了
二、关于MacOS文件关联的默认机制
你说的“总是打开奇怪应用”其实跟MacOS的Launch Services数据库有关:
- 每个应用安装时,都会向这个数据库注册自己能处理的文件扩展名,比如Sublime装的时候会抢
.js的关联,某些小众App可能注册了你没留意的扩展名 - 当你双击文件、用
open命令打开,或者iTerm2点击文件链接时,系统都会查询这个数据库,找对应的默认应用来打开 - 要是想查看数据库里的关联,可以用命令:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -A 10 -B 5 ".js"(替换成你想查的扩展名),不过一般用图形界面改更直观 - 你设置的
EDITOR环境变量只影响终端里用编辑命令(比如git commit)时的编辑器,跟文件链接点击打开的应用没关系,这就是为什么你的JS链接还是打开Sublime的原因
备注:内容来源于stack exchange,提问作者Lance Pollard
相关产品推荐
相关产品推荐

