iSH iOS Linux 终端快捷键指南:5 个场景让敲命令省一半时间
【免费下载链接】ishLinux shell for iOS项目地址: https://gitcode.com/GitHub_Trending/is/ish
iSH 是跑在 iOS 上的 Linux shell 终端,装几个包就能在手机上拿到一条真正的命令行。它的快捷键体系分两层:一层是 iSH 自己提供的软键盘与硬件键盘映射,另一层是终端里跑的 Linux shell 自带的行编辑键。先分清这个分层,再看下面 5 个场景,都是日常真正用得上的 iSH 终端快捷键。
软键盘上怎么按出 Ctrl 组合键
iOS 自带键盘上没有 Ctrl 键,iSH 于是在屏幕上方放了个 ⌃ 按钮。它不是"按住"的键,而是一个开关:
- 按一次 ⌃,按钮高亮,之后每按一个字母都会自动变成对应的 Ctrl 组合键,比如 Ctrl+A、Ctrl+C
- 再按一次 ⌃,恢复正常打字
转换逻辑就在 app/TerminalView.m 里:
// Control 按钮开启时,单个字母会被转成控制字符发给终端 if (text.length == 1) return [self insertControlChar:[text characterAtIndex:0]];所以不用记哪个键是"Linux 的 Ctrl"——先点 ⌃、再打字母,顺序反了就回不来。同一排工具栏还有粘贴和复制按钮:粘贴会把系统剪贴板内容原样送进终端,长命令上手机最快的路就是这条。
记住这个就够:⌃ 是"开关",先点它再打字,任意字母变 Ctrl 组合。
命令打错之后的最快补救方法
打错字时不需要逐格删除。iSH 启动后默认执行/bin/login -f root,登录进一个 busybox shell,行编辑键由它提供,走的是标准 emacs 风格:
| 按键 | 作用 |
|---|---|
| Ctrl+A / Ctrl+E | 光标跳到行首 / 行尾 |
| Ctrl+B / Ctrl+F | 光标后退 / 前进一个字符 |
| Ctrl+U / Ctrl+K | 删除光标到行首 / 行尾的内容 |
| Ctrl+XX | 在行首与当前位置之间来回跳 |
| Ctrl+R | 反向搜索历史命令 |
| Ctrl+D | 删除光标处字符;空行上直接退出 shell |
典型补救流程:长命令打错了,先 ⌃+A 跳到行首,再 ⌃+K 整行剪切;或者只想删前面一半就 ⌃+U。两次按键解决的事,不用一格一格删。
注意一点:Alt 系按键只在硬件键盘上可用。在设置里把 Option 映射成 Esc 前缀后,词级操作就通了:Alt+B / Alt+F 按单词后退前进,Alt+D 删到单词尾。
记住这个就够:改错用 ⌃+A / ⌃+E 跳、⌃+U / ⌃+K 剪,别逐格删。
输出刷屏了怎么找东西
被日志或长构建输出刷满屏幕时,有三层动作:
- Ctrl+L:重绘提示符,等于清屏,日常使用频率最高
- 向上滑动看历史:终端有回滚缓冲区;外接键盘用户嫌它太长时,⌘K 可以一键清空(在 app/TerminalView.m 的
keyCommands里注册为clearScrollback:) - Ctrl+C:命令卡住不返回时先发中断;shell 开了作业控制的话,Ctrl+Z 能临时挂起
触控端还有个不常被注意的浮动手势:在终端里按住拖动,浮动光标会跟着移动,并随移动连续发出上下左右方向键序列。"光标差几个字符够不着"的场合,用它比打字快。
记住这个就够:Ctrl+L 清屏、⌘K 清回滚、Ctrl+C 停失控进程。
外接键盘接上后该改哪三个映射
iSH 对硬件键盘提供了三个映射开关,在设置(⌘+, 可直接打开)里调整:
- Caps Lock → Ctrl 或 Esc:很多键盘上 Ctrl 不好按,把 Caps Lock 改造成 Ctrl 是最常见的做法,配置项为
capsLockMapping,定义在 app/UserPreferences.h - **反引号
→ Esc**:iOS 布局下 Esc 难找,把映射过去,配置项backtickMapEscape - Option → Esc 前缀:
optionMapping打开后,Alt+B / Alt+F 这类词级编辑键才真正可用
映射项统一存放在 app/UserPreferences.m,设置界面在 app/AboutExternalKeyboardViewController.m,开关即时生效,不用重启终端。
顺手记两个应用级快捷键:⌘+ / ⌘− 调字号、⌘0 恢复默认;⌘1 到 ⌘7 切换内置终端。
记住这个就够:Caps Lock 变 Ctrl、反引号变 Esc,改完这两项外接键盘体验就顺了。
想换自己的按键习惯怎么改
硬件键盘的快捷键全部注册在 app/TerminalView.m 的keyCommands方法里,每个按键事件最终都走handleKeyCommand:分发——方向键被翻译成\x1b[A这类转义序列,Option 键被加上\x1b前缀,Ctrl 键被转成控制字符。想加自定义快捷键,可以克隆源码后在本地副本里动手:
git clone https://gitcode.com/GitHub_Trending/is/ish做法不复杂:在keyCommands里多注册一条UIKeyCommand,在handleKeyCommand:里多写一个分支;想加开关的话,参照backtickMapEscape的写法即可。仓库本身是只读的,所有改动放在你自己的本地副本里做就行。
记住这个就够:keyCommands管注册、handleKeyCommand:管分发,看懂这两处就能看懂全部按键行为。
下一步建议与延伸阅读
练习顺序建议:先用一周 ⌃+A / ⌃+E / ⌃+U 这三件套,再补 Ctrl+R 和 Ctrl+L,最后按自己的习惯调硬件键盘映射。延伸阅读路径:
- 项目整体介绍:README.md
- 终端渲染与前端逻辑(复制、清回滚的 JS 侧):app/terminal/
- 按键处理与软键盘逻辑:app/TerminalView.m
- 验证 shell 行为的端到端测试:tests/e2e/
【免费下载链接】ishLinux shell for iOS项目地址: https://gitcode.com/GitHub_Trending/is/ish
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考