外部编辑器
Git 客户端是你读代码的地方,很少是你修代码的地方。从在一份差异里发现问题,到光标真的落在编辑器里那一行上,中间隔着一次文件搜索和一次滚动——每次都是。
把 Gitcito 指向你的编辑器一次,这道缝就合上了:在文件视图或追溯视图里右键点一行,它就在那里、在那一行打开。
挑一个
**设置 → 通用 → 外部编辑器。**下拉列表里是 Gitcito 在这台机器上能找到的编辑器——它先找每个编辑器的命令,然后在 macOS 上再去 /Applications 和 ~/Applications 找应用包。每次打开设置时都会重新扫一遍,所以五分钟前才装好的编辑器不用重启就会出现。
开箱即认得的有:
| 编辑器 | 它会去找的命令 |
|---|---|
| Visual Studio Code | code、code-insiders |
| Cursor | cursor |
| Windsurf | windsurf |
| Zed | zed |
| Sublime Text | subl |
| JetBrains IDEs | idea、webstorm、pycharm、rustrover、goland、clion、rider、phpstorm |
| Xcode | xed |
值得知道的那条限制
跳到某一行需要编辑器的命令,而不是它的图标。 macOS 的 .app 应用包是通过 open 启动的,而 open 只接受一个路径、别的什么都不收——所以一个只以应用包形式被找到的编辑器,只会把文件从头打开;Gitcito 会在下拉列表底下如实说明,而不是假装无事发生。
补救办法在编辑器那一侧:VS Code 的 Shell Command: Install 'code' command in PATH、Sublime 的 subl 符号链接、JetBrains 的 Toolbox → Settings → Shell scripts。命令一旦存在,重新选一次编辑器,行跳转就能用了。
这些动作出现在哪里
| 位置 | 它打开什么 |
|---|---|
| 仓库标签页、侧边栏仓库、状态栏 | 仓库文件夹 |
| 文件树、提交的文件、贮藏的文件、提交编辑器 | 那个文件 |
| 文件树行尾的图标 | 那个文件,一击即达 |
| 在文件视图里右键点一行 | 那个文件,定位到那一行 |
| 在追溯视图里右键点一行 | 那个文件,定位到那一行 |
文件树中的 .xcodeproj 或其他包 |
该包,用系统关联的应用打开 |
只有在行号仍然有意义的地方,按行的动作才会出现:一个显示在旧提交上的文件,或者一份被倒回到更早修订版的追溯,它们的行早已对不上磁盘上的内容,所以 Gitcito 宁可在那里不提供跳转,也不把你送到错的地方。
Xcode 项目和其他包
MyApp.xcodeproj 是一个目录。Git 知道,文件树以前也这么当它——直到这开始碍事:
展开它去找 project.pbxproj、project.xcworkspace,以及 xcuserdata 下每位
开发者一个的文件夹,是为一件你本来就不打算手工编辑的东西付出的三次点击的噪音。
现在它们用包图标显示,点击这一行就会打开这个包,和在访达里双击一样。箭头
还在,所以你真正需要 project.pbxproj 的那一次——几乎总是合并冲突——照旧可以
展开进去。
会识别的:.xcodeproj、.xcworkspace、.xcframework、.framework、.app、
.appex、.dSYM、.playground、.xcuserdatad。
刻意不识别的:.xcassets 和 .lproj。它们也是包,但里面的文件确实要编辑,
折叠起来得不偿失。
限制
打开包的是系统,不是你的编辑器。 把 .xcodeproj 交给文本编辑器,它会当成
一个装满属性列表的文件夹打开——这不是点击的人想要的。所以 Gitcito 把它交给系统
关联的程序:在装了 Xcode 的 Mac 上就是 Xcode。你的编辑器设置不受影响,对任何
普通文件依旧有效。
这是命名约定,不是文件系统标志。 Gitcito 看的是扩展名,所以你碰巧命名为
notes.app 的目录也会被折叠;而在 Linux 或 Windows 上——它们只是普通文件夹——
点击打开的是文件管理器而不是 IDE。
一条属于你自己的命令
表格里没有的东西就选自定义命令——一个包装脚本、一个远程开发启动器、一个通过你自己的垫片启动的终端编辑器。
| 字段 | 含义 |
|---|---|
| 命令 | 要运行的可执行文件。不经过 shell,所以没有 &&、管道或通配符。 |
| 名称 | 菜单项里怎么称呼它。 |
| 打开文件的参数 | argv 模板,例如 -g {path}:{line}:{col} |
| 打开文件夹的参数 | argv 模板,通常就是 {path} |
模板按空格切分,每个词元只被替换一次——带空格的路径仍然是一个参数,之后也不会再被重新解析,所以一个文件名永远变不成语法。四个占位符:{path}、{line}、{col}、{repo}。
没有值的占位符会把它的标志一起带走:--line {line} {path} 在没有行号时运行,就只剩下路径,绝不会留下一个孤零零的 --line 把文件名当成自己的参数吞掉。模板里没有 {line},无非意味着 Gitcito 不会为那个编辑器提供精确到行的动作。
这不是什么
这不是「打开方式」应用那个设置——那个会弹出系统选择器,并且记住用某一个应用打开任何东西:一张图片、一份 PDF、一个在 Finder 里的文件夹。编辑器是两者中更具体的那个,所以在两者都设了的情况下,文件树行尾的图标归编辑器;右键菜单里两者都还在。
Gitcito 从不自作主张启动你的编辑器,关掉 Gitcito 也不会关掉它:编辑器是以分离方式、作为一个独立进程启动的。