跳转到内容
首页
Docs/代码编辑器

代码编辑器

编辑器以全屏方式覆盖在应用之上,关闭后仍会保留你的标签页。它为 39 种语言提供语法高亮,其中 19 种可一键安装语言服务器;它用 17 个本地运行器在设备上直接运行代码,并提供命令面板、预览、代码片段和一些小工具。本页只讲编辑器本身,Git 和各个面板有各自的页面。

PocketCode editor on a tablet with hello.py open: the explorer docked on the left with the open tabs and the TaskCLI project tree, the tab strip, Python code, the symbol bar and the status bar
平板上的编辑器:左侧停靠资源管理器,另有标签页、代码、符号栏和状态栏。

它是什么,以及如何打开

编辑器是覆盖在应用之上的全屏层,不是主页面栏五个页面中的一个。关闭它并不会关闭你的标签页:再次打开时它们仍然在。

打开方式

  • 从主页面栏。在文件浏览器页面点按一个文件:它会在编辑器页面打开,也就是主页面栏的第四页。在那里点按在编辑器中打开即可全屏查看。
  • 通过导航。转到定义、搜索结果、AI 和工作流会在预览标签页中把文件打开到对应的行。
  • 从其他应用。用 PocketCode 打开或编辑一个文本文件,它会作为设备上标签页打开。在你操作之前,不会保存、运行或切换任何内容。
  • 在编辑器内部。(菜单或命令面板中的)从设备打开文件…会打开 Android 的文件选择器。
  • 退出。使用返回手势。若有未保存的更改,会出现未保存的更改,并提供保存、放弃和取消;关闭自动保存时,它会提示没有写入任何内容。
The Editor page of the pager with hello.py open as a tab and the Open in editor button at the bottom
主页面栏中的编辑器页面,带有自己的标签页,以及可让文件全屏打开的「在编辑器中打开」按钮。
Full-screen editor on a phone with hello.py open: top bar, tab, Python code, symbol bar, status bar and the Run panel showing the output and exit 0
手机上打开了运行面板的编辑器:顶栏、标签页、代码、符号栏、状态栏,以及 hello.py 的输出。

手机、平板与键盘

场景有什么变化
宽度小于 840 dp(手机、小平板)资源管理器是抽屉式面板。用资源管理器或标签栏末端的 ▾ 打开它。
宽度不小于 840 dp(平板)资源管理器停靠在左侧。同一个命令可显示或隐藏它,拖动它的边缘可调整宽度。
键盘打开时状态栏隐藏。横屏时顶栏和标签栏也会隐藏,为代码腾出空间。
禅模式隐藏各个栏以及 Android 的系统栏。见编辑器界面。
Ctrl+P 之类的快捷键只在连接物理键盘时可用。在手机上,请使用符号栏的命令键、更多选项菜单或命令面板:它们执行的是同样的命令。

界面地图

编辑器的每个界面和面板各占一行。拥有独立页面的面板见Git 与其他面板。

界面如何进入你可以做什么
编辑器(全屏)在编辑器页面点按在编辑器中打开,或从其他应用打开的文件编辑、保存和运行文件。下面的一切都从这里展开。
顶栏始终位于顶部,禅模式除外文件名和路径;DevBrowser、运行、保存文件和更多选项。在 Markdown 文件上,预览开关会取代前两个按钮。
标签栏在顶栏下方切换、重新排序、固定和关闭标签页;预览标签页;在分屏中打开。
面包屑导航设置 → 面包屑导航(默认关闭)显示路径和当前符号;点按即可跳转。
代码区域—语法高亮、多光标、列选择、书签、代码片段、双指缩放。
符号栏在键盘上方按语言提供的符号键、撤销和重做,以及带光标触控板的命令键。
状态栏屏幕底部行和列、语言、编码、换行符、Git 分支、语言服务器和问题。
禅模式F11 或切换禅模式隐藏各个栏;浮动按钮可将它们恢复。
资源管理器资源管理器、标签栏中的 ▾,或 Ctrl+Shift+E已打开的标签页和项目树:新建、重命名、删除、筛选,以及 Git 标记。
更多选项菜单顶栏中的扳手图标全部命令,分为六个分区,带搜索和快捷访问。
命令面板与 Quick OpenCtrl+P、Ctrl+Shift+P 或命令键打开文件、运行命令、跳转到某一行或某个符号。
查找和替换Ctrl+F 或 Ctrl+H在已打开的文件中搜索,可选区分大小写、全字匹配、正则表达式和保留大小写。
在文件中搜索Ctrl+Shift+F在整个项目中搜索文本或正则表达式,并打开某个结果。
「转到」与重构对话框菜单或命令面板跳转到行、转到符号、定义、速览、引用、重命名符号、自动导入、提取、快速修复、颜色选择器。
预览顶栏(Markdown)或视图分区Markdown、图片、树形视图(JSON、YAML)和表格视图(CSV、TSV)。
分屏Ctrl+ 或在分屏中打开只读的第二个窗格。
语言、编码和换行符在状态栏中点按它们为文件选择语言、编码标签,以及 LF、CRLF 或 CR。
语言服务器状态栏的 LSP 项,或对应命令安装、更新和移除一键安装的服务器;查看哪个服务器在为此文件服务。
运行面板运行或 F5输出、停止、stdin、筛选、复制,以及跳转到出错位置。
带参数运行…Ctrl+F5 或运行面板参数、最近运行记录,以及 WASM 引擎的网络开关。
任务与启动配置在运行面板中项目任务和已保存的运行配置。
插件管理器设置 → 编译器和运行时安装或移除 Lua、Go 和 Rhai 运行时。
代码片段库菜单的编辑分区,或命令面板内置片段、你自己的片段和精选片段。
开发工具工具分区十一个在设备上运行的实用工具,作用于你的选中内容或剪贴板。
草稿本、番茄钟、TODO 面板工具分区一条笔记、一个工作计时器,以及项目中的 TODO/FIXME 注释。
键盘快捷键、更新内容工具分区可搜索的快捷键列表和更新日志。
我的主题视图分区(Pro)导入、创建和编辑编辑器主题。
编辑器外观设置 → 外观 → 编辑器外观选择编辑器的主题、字体、字号和壁纸。

编辑器界面

从上到下依次是:顶栏、标签栏、面包屑导航(如果你开启了它)、代码、打开时的运行面板、符号栏和状态栏。在平板上,资源管理器位于左侧。

顶栏

你可以做什么

  • 查看文件名,以及它下方的所在文件夹(或项目名称)。
  • 点按 DevBrowser,通过项目的本地服务器在内置浏览器中打开该文件。
  • 点按标注为实验性的运行来运行文件(见运行代码)。
  • 点按保存文件。只有存在未保存的更改时它才可用。
  • 在 Markdown 文件上,用切换 Markdown 预览在文本和渲染后的页面之间切换。
  • 点按更多选项打开菜单。

你不能做什么,以及原因

  • 在从其他应用打开的文件(设备上标签页)上使用 DevBrowser 和运行;在 Markdown 文件上,预览开关会取代它们。有意为之
  • 运行没有运行器的文件:运行会变灰(例如暂时还无法安装的 Perl、C++ 或 Swift)。尚未提供

状态栏

几乎每一项都是按钮。可以在设置(状态栏)中关闭整个状态栏。

项目作用
行和列(Ln 12, Col 4)点按打开跳转到行。
Sel 24选中文本时出现,显示选中的字符数。
语言打开此文件的语言选择器。
编码(UTF-8)打开选择器,但只有标签会改变:文件始终以 UTF-8 读取和写入。
换行符(LF)打开选择器。选择其中一种会转换文本,并且可以撤销。
Git 分支打开源代码管理。
LSP此文件语言服务器的状态:就绪、连接中、出错、无、安装中,或未安装(下载图标:点按即可安装)。点按打开语言服务器。
问题统计已打开文件中的错误和警告,并打开问题面板。
已保存 / 未保存文件是否有尚未写入磁盘的更改。

禅模式

切换禅模式(F11 或菜单)会隐藏顶栏、标签栏、面包屑导航和状态栏,同时隐藏 Android 自己的系统栏;符号栏只在键盘打开时显示。浮动的退出禅模式按钮会在三秒后淡出,按返回键同样可以退出禅模式。

面包屑导航

在设置中开启面包屑导航(默认关闭)。它会显示路径和光标所在的符号。点按文件夹可列出同级项,点按文件可打开大纲,点按符号可跳转到它。

编辑引擎

编辑器基于 Sora Editor 0.24.6 构建,使用 TextMate 语法。

你可以做什么

  • 边输入边看高亮。语法高亮实时运行,另有行号、缩进参考线、粘性滚动、长按放大镜和双指缩放。
  • 在设置中调整视图(编辑器 · 输入和编辑器 · 显示)。行号和颜色色块默认开启;自动换行、缩略图、不可见字符、列参考线(位于第 80 列)、内嵌提示和字体连字默认关闭。
  • 同时在多处编辑。在所有匹配处添加光标(Ctrl+Shift+L)会在光标所在单词的每一处出现位置放置一个光标:输入一次就会应用到所有位置,点按 ✕ 可清除它们。它可以配合屏幕键盘使用。列选择用于选中一个矩形区域。
  • 撤销和重做每个标签页最多 200 步,由 Ctrl+Z、符号栏和菜单共用。被 Android 从内存中卸载的标签页,只有在文件不超过 128,000 个字符时才会保留其历史,并且最多保留 8 个标签页。
  • 补全和格式化。补全来自编辑器自带的引擎,以及(已连接时的)语言服务器。格式化文档(Shift+Alt+F,需要在设置中开启代码格式化)会先尝试语言服务器,再回退到针对 24 种语言的内置格式化工具:Kotlin、Java、JavaScript、TypeScript、C、C++、C#、Dart、Go、Swift、Rust、PHP、Scala、Gradle、Python、XML、HTML、JSON、YAML、CSS、SCSS、Less、SQL 和 Markdown。
  • 标记行。切换书签(Ctrl+Alt+K)、下一个(Ctrl+Alt+L)、上一个(Ctrl+Alt+J),以及全部清除。书签随已打开的标签页存在:关闭标签页或应用后会丢失。
  • 展开 Emmet。展开 Emmet 缩写(菜单或命令面板,无快捷键,Tab 键不会触发它)支持标签、.class、#id、>、+、*n、{text}、[attrs],! 或 html:5 之类的别名,以及 m10 或 df 之类的 CSS 简写。它只是一个子集:没有 ^,也没有 $ 编号。
  • 无需操心保存。自动保存默认开启,并以原子方式写入(见大文件、编码与保存)。

你不能做什么,以及原因

  • 折叠代码。没有代码折叠功能,因为 Sora Editor 0.24.6 不支持;代码结构只用于面包屑导航和大纲。第三方

大文件、编码与保存

打开文件之前,编辑器会先检查它的大小和内容。过大或不寻常的文件会关闭部分功能,或者根本不加载,以免拖垮应用。

文件如何打开

文件如何打开有什么变化
二进制:前 8 KB 中有 NUL 字节,或非文本字节超过 30 %显示一张说明该文件为二进制的卡片图片可选查看图片,也可选以文本方式打开(只读)。
80 MB 或更大不打开:文件过大,无法在此打开只提供用其他应用打开(或关闭)。
20 MB 或更大只读,并处于轻量模式可以阅读和搜索,但不能编辑。
512 KB 或更大、10,000 行或更多,或有一行达到 2,000 个字符轻量模式高亮、缩略图、语言服务器、AI 建议、自动补全、自动换行、粘性滚动、Lint、颜色色块和内嵌提示都会关闭。仍然启用高亮可恢复高亮。
其他情况正常所有功能均开启。
这些阈值是编辑器自己为避免内存不足而调出的数值:512 KB 这一档来自在一部手机上测得的案例,20 MB 和 80 MB 这两档没有重新测量。每一档都按精确数值计算,因此 512 KB 的文件已经处于轻量模式。

项目之外的文件

  • 从设备打开文件…以及其他应用中的用 PocketCode 打开使用 Android 的文件选择器,无需存储权限。标签页显示设备上。
  • 只有 20 MB 以内的有效 UTF-8 文本才能打开。含有 NUL 字节的文件会被当作二进制文件拒绝,非 UTF-8 的文件也会被拒绝,以免被损坏。
  • 如果对方应用不允许写入,标签页会显示设备上 · 只读:你仍可编辑,然后使用另存为…。
  • 另存为…(Ctrl+Shift+S)可将标签页写入任意位置,之后该标签页就指向那个文档。

保存

主题会发生什么
自动保存默认开启,每 2 秒一次。在设置的自动保存间隔中可选:关闭、1 s、2 s、5 s 或 10 s。写入是原子的。
换行符LF、CRLF 或 CR。保存时使用标签页自己的风格;换行符混用的文件会保留每一行各自的换行符。
BOMUTF-8 字节顺序标记会被保留,并原样写回。
.editorconfig会读取项目根目录下的那一份。indent_style、indent_size、tab_width、end_of_line 和 max_line_length(列参考线)会生效。trim_trailing_whitespace 和 insert_final_newline 会被读取但不生效,charset 只会改变编码标签。
编码状态栏显示 UTF-8。选择器提供 UTF-8、UTF-16LE、UTF-16BE、ISO-8859-1 和 ASCII,但只有标签会改变:PocketCode 只读写 UTF-8。命令面板中的更改文件编码命令则在七个标签之间循环(UTF-8、ISO-8859-1、US-ASCII、UTF-16、UTF-16BE、UTF-16LE 和 Windows-1252),效果相同。
行尾空格每次保存都会删除每一行的行尾空白。没有开关,.editorconfig 也无法关闭它。在 Markdown 中,这也包括用于硬换行的两个行尾空格。
磁盘上已更改如果文件在你有未保存修改时于磁盘上发生了变化,会出现横幅:磁盘上的文件已更改,而你有未保存的修改。,并提供比较、重新加载和保留我的。

你不能做什么,以及原因

  • 在这里打开 80 MB 或更大的文件,或编辑 20 MB 或更大的文件。设备
  • 读写其他编码:编辑器只处理 UTF-8 文本,编码选择器只是一个标签。尚未提供
  • 保存时保留行尾空格:它们总是会被删除。有意为之
  • 打开来自其他应用、但不是 UTF-8 文本、含有 NUL 字节或超过 20 MB 的文件。有意为之

标签页

顶栏下方的标签栏无论有多少个标签页都会显示,禅模式以及键盘打开的横屏状态除外。

你可以做什么

  • 查看每个标签页的状态。当前标签页带下划线,● 表示有未保存的更改,✕ 关闭当前标签页,加载时显示转圈图标,⚠ 表示读取出错或磁盘上有更改。
  • 使用预览标签页。通过导航打开的文件会复用同一个斜体标签页。编辑、保存、双击它,或选择保持打开后,它会变成普通标签页。可在设置中关闭这一行为(导航时以预览方式打开)。恢复出来的标签页不会再是预览状态。
  • 重新排序。按住后拖动;或在标签页菜单中使用左移和右移。
  • 固定。在标签页菜单中选择固定和取消固定。固定的标签页会与其他标签页分开放置,批量关闭时不会关闭它们。
  • 批量关闭。关闭、关闭其他、关闭右侧、关闭已保存和全部关闭。重新打开已关闭的标签(Ctrl+Shift+T)最多可找回 20 个已关闭的标签页。
  • 复制路径与分屏。复制路径、复制相对路径和在分屏中打开都在标签页菜单中。
  • 回到你离开的地方。重新打开项目时,标签页(包括固定的)、光标、选区和滚动位置会按项目恢复。恢复出来的标签页只有在你打开它时才会加载。主页面栏的编辑器页面会保存这些状态。

你不能做什么,以及原因

  • 保留超过 20 个标签页:打开第 21 个时,会关闭最久未使用且没有未保存更改的标签页,并显示已关闭 …(上限 20 个标签),可撤销。如果每个标签页都有更改或已固定,它仍会打开,超出上限。设备
  • 把每个标签页的文本都保留在内存中:根据手机内存的大小,只有 4、6 或 10 个标签页保持加载,其他的在你切换过去时重新加载。设备

菜单、命令面板与 Quick Open

命令面板是固定在顶部的面板,和 VS Code 的一样。它有四种模式——全部、命令、文件和符号——由你输入的第一个字符或打开方式决定。

前缀

你输入你得到
什么都不输入(Ctrl+P)Quick Open:项目中的文件,按路径片段模糊匹配并高亮匹配处,最近的文件排在前面,最多 50 条结果。
>(Ctrl+Shift+P)命令,按标题、分区和描述匹配。没有输入文字时,先显示常用,再显示各个分区。
: 加一个数字跳转到该行。只在编辑器内可用。
@当前文件的符号。
命令键(全部模式)同时列出文件、命令和符号。

Quick Open 最多索引 50,000 个文件。它会跳过隐藏文件夹、构建和依赖文件夹,以及项目 .gitignore 忽略的内容。第一次打开命令面板时会出现提示:输入 > 使用命令,: 跳转到行,@ 查找符号。

「更多选项」菜单

  • 顶栏中的扳手图标会打开一个面板,其中有搜索框(搜索操作…)和快捷访问一行:起初是格式化、查找、转到符号、源代码管理和运行,之后当你至少两次使用过其中四条命令时,就会换成你的常用命令。
  • 共六个分区:编辑、视图、转到、Git、AI 和工具。工具按分组以卡片形式显示:运行、项目、协作、实用工具和帮助与设置。
  • 菜单、命令面板和快捷键面板读取的是同一份包含 103 条命令的列表,因此三者保持一致。不适用的命令会被隐藏:没有运行器时的运行文件、没有项目时的依赖项或部署项目、没有书签时的下一个和上一个书签。
  • 编码、换行符、语言和标签页命令不在菜单中:请使用状态栏、命令面板或键盘。

每个分区包含什么

分区命令
编辑 · 28撤销、重做、保存、另存为…、全部保存、格式化、Emmet、查找和替换、重命名、提取方法和变量、整理导入、快速修复、自动导入、多光标、列选择、代码片段库、颜色选择器、移动、复制和删除行、注释、行排序、大写和小写。
视图 · 13禅模式、拆分编辑器、不可见字符、Markdown、图片、树形和表格预览、比较对象…、编码、换行符、语言、资源管理器和我的主题。
转到 · 23打开文件…、从设备打开文件…、命令面板、在文件中搜索、符号、大纲、行、定义、速览、引用、书签、下一个和上一个问题、问题、分析风格 (Lint) 以及标签页命令。
Git · 3源代码管理、GitHub PR 与 Issue 和本地历史记录…。它们在Git 与其他面板中介绍。
AI · 12就所选内容询问 AI(Ctrl+I)、解释、生成测试、文档或根据注释生成代码、重构、AI 生成器、修复错误、优化、简化、现代化和生成。
工具 · 24运行、调试和断点、带参数运行…、新建运行配置、依赖项、测试资源管理器、在 DevBrowser 中打开、Docker 工具、监控、后端生成器、部署项目、实时协作、开发工具、语言服务器、草稿本、TODO 面板、番茄钟、键盘快捷键、更新内容和编辑器设置。
完整的快捷键列表和键位预设位于设置中: 设置 · 键盘快捷键

在文件中搜索、在项目中搜索,以及在代码中移动,是三种不同的工具。

在文件中查找和替换

  • Ctrl+F 打开查找,Ctrl+H 打开查找和替换;两者也都在编辑分区中。
  • 四个选项按钮:Aa(区分大小写)、全字匹配、.*(正则表达式)和 AB(替换时保留大小写)。上一个和下一个在匹配项之间移动;替换和全部替换只作用于当前文件。

在文件中搜索

  • Ctrl+Shift+F,或转到分区中的在文件中搜索,会打开全屏搜索。至少输入两个字符。它会显示在 M 个文件中找到 N 个匹配项,点按某个结果就会在对应行打开该文件。
  • 选项:正则表达式、区分大小写和全字匹配。
  • 它遍历项目时会排除 node_modules、.git、build、dist、target、out、venv 及类似文件夹,只读取固定列表中的代码和文本扩展名,跳过 512 KB 或更大的文件,并在 500 条结果处停止。

转到

命令作用
跳转到行(Ctrl+G,或命令面板中的 :)输入从 1 到最后一行的行号。
转到符号(命令面板中的 @)对当前文件(而非整个项目)中的函数、类、接口、方法和其他符号进行模糊搜索。
转到定义(F12)使用语言服务器;没有语言服务器时,使用针对该语言的匹配模式。
速览定义(Alt+F12)在弹窗中显示定义及其上下文几行,无需离开当前文件。
查找引用(Shift+F12)有语言服务器时,显示它找到的引用,可能位于其他文件。没有时,只在当前文件中做文本搜索。
下一个问题和上一个问题(F8、Shift+F8)在文件的错误和警告之间跳转。

重构

命令作用
重命名符号(F2)显示预览,将代码中的匹配项与不会被重命名的注释/字符串中的匹配项分开。全部重命名用于应用。有语言服务器时,它可以修改其他文件:未打开的文件会直接写入磁盘,已打开的文件各自增加一步撤销。没有语言服务器时,它用文本模式在当前文件中重命名。
自动导入为尚未导入的符号建议 import,依据是内置的一张常见符号表,涵盖 Kotlin、Java、Python、JavaScript 和 TypeScript、Go 以及 Rust。它不会查找你项目自己的符号。整理导入(Ctrl+Shift+O)是单独的命令。
提取方法、提取变量按语言生成,没有快捷键。
快速修复(Ctrl+.)针对诊断信息的一键修复。编辑器自带针对 JavaScript 和 TypeScript、Kotlin、Java、Python、CSS、SCSS 和 Less、Go 以及 Rust 的修复。
颜色选择器包含十六进制、调色板和滑块标签。插入会在光标处放入 #RRGGBB(或 #AARRGGBB),或替换光标下的颜色。

你不能做什么,以及原因

  • 在在文件中搜索中跨文件替换、保留大小写或保留搜索历史:它只负责搜索。尚未提供
  • 搜索大于 512 KB 的文件、超过 500 条结果,或固定列表之外的文件类型。有意为之
  • 在没有语言服务器时获取整个项目的引用:它会回退到当前文件。尚未提供

语言与语言服务器

语法高亮支持 39 种语言和格式;其中 19 种还提供可一键安装的语言服务器。

语法高亮

TextMate 语法覆盖 C、C++、C#、Kotlin、Java、JavaScript、TypeScript、TypeScript React、Vue、Svelte、Astro、GraphQL、Prisma、Python、Go、Swift、PHP、Ruby、Rust、Dart、XML、HTML、CSS、SCSS、Less、JSON、YAML、Markdown、MDX、SQL、Gradle、Shell、PowerShell、R、Scala、TOML、INI、Properties 和 Dockerfile。Gradle 与 Kotlin 共用语法,Properties 与 INI 共用语法,因此共有 37 种不同的语法。编辑器认得 .gitignore 文件,但没有对应的语法;Makefile 会以纯文本打开。在状态栏点按语言,可以为该文件手动指定语言(高亮、分析和语言服务器都会跟随)。

一键安装的语言服务器

语言服务器提供补全、错误提示和转到定义。PocketCode 免费提供安装,入口是语言服务器面板。

  1. 1打开一个受支持语言的文件,点按状态栏中的 LSP 项(下载图标表示尚未安装)。
  2. 2在语言服务器中找到适合你文件的服务器。面板会说明它要下载什么、来自哪里、有多大以及使用什么许可证。
  3. 3点按安装。完成后,状态栏会显示该服务器已就绪。
  4. 4之后,如果应用固定了更新的版本,会出现更新,而卸载可将其移除。面板用已安装:N 个服务器 · 占用空间约 X 显示总计。

每个服务器都是一组来自公共 npm 注册表(registry.npmjs.org)的 JavaScript 软件包,在应用内固定到确切版本和 SHA-512 校验和。整个过程不经过任何 PocketCode 服务器,含有原生代码的软件包会被拒绝。它们运行在 PocketCode 自带的 Node.js 上,位于应用的私有存储中。项目自己 node_modules 中的服务器始终优先。

服务器软件包 · 服务对象下载 · 设备占用
TypeScript / JavaScripttypescript-language-server 6.0.1 + TypeScript 6.0.3 · TypeScript, TSX, JavaScript5.0 MB · 26.8 MB
PythonPyright 1.1.414 · Python4.2 MB · 19.5 MB
HTML / CSS / JSONvscode-langservers-extracted 4.10.0 · HTML, CSS, SCSS, Less, JSON13.7 MB · 80.5 MB
Markdownvscode-markdown-languageserver 0.5.0 · Markdown1.7 MB · 8.0 MB
Dockerfiledockerfile-language-server-nodejs 0.15.0 · Dockerfile0.4 MB · 2.5 MB
Bash / Shellbash-language-server 5.8.1,不含 ShellCheck · Shell3.8 MB · 21.8 MB
YAMLyaml-language-server 1.24.0 · YAML4.2 MB · 19.2 MB
Vue@vue/language-server 3.3.11 · Vue(同时会安装 TypeScript 服务器)4.0 MB · 23.6 MB
Sveltesvelte-language-server 0.18.4 · Svelte(需要 TypeScript 服务器)5.5 MB · 27.7 MB
Astro@astrojs/language-server 2.17.1 · Astro(需要 TypeScript 服务器)7.2 MB · 38.0 MB
GraphQLgraphql-language-service-cli 3.5.0 · GraphQL,仅在有 graphql-config 文件时可用19.5 MB · 96.6 MB
MDX@mdx-js/language-server 0.6.4 · MDX(需要 TypeScript 服务器)2.4 MB · 10.6 MB
Prisma@prisma/language-server 31.12.10 · Prisma6.7 MB · 36.6 MB
Emmet(辅助)@olrtg/emmet-language-server 2.8.0 · HTML, CSS, SCSS, Less5.5 MB · 15.1 MB
CSS variables(辅助)css-variables-language-server 2.8.4 · CSS, SCSS, Less4.5 MB · 20.0 MB
CSS Modules(辅助)cssmodules-language-server 1.5.2 · 带有 *.module.css 的 JavaScript 和 TypeScript0.7 MB · 3.9 MB
SCSS (Some Sass)(辅助)some-sass-language-server 2.3.8 · SCSS0.6 MB · 2.8 MB
Stylelint(辅助)stylelint-lsp 2.0.1 + stylelint 15.11 · CSS,前提是项目配置了 Stylelint 且 node_modules 中有它2.5 MB · 10.6 MB
UnoCSS(辅助)unocss-language-server 0.1.9 · 带有 uno.config.* 文件的项目2.4 MB · 9.9 MB
Docker Compose(辅助)@microsoft/compose-language-service 1.0.0 · Compose YAML0.4 MB · 2.2 MB
GitHub Actions(辅助)@actions/languageserver 0.3.61 · .github/workflows/*.yml0.3 MB · 2.0 MB
Angular(辅助)@angular/language-server 22.2.0 · 含有 angular.json 的项目中的 HTML 和 *.component.ts(需要 TypeScript 服务器)5.0 MB · 28.4 MB

合计 22 个软件包:13 个主服务器和 9 个辅助服务器。全部安装大约需要下载 100 MB,在设备上占用 506 MB。提供一键服务器的 19 种语言是 TypeScript、TSX、JavaScript、Python、HTML、CSS、SCSS、Less、JSON、YAML、Shell、Vue、Svelte、Astro、GraphQL、Prisma、MDX、Markdown 和 Dockerfile。

需要了解

  • 辅助服务器与主服务器并行运行,最多同时 2 个:每个辅助服务器都是多出来的一个 Node 进程,因此编辑器对其设了上限。
  • YAML 从不加载远程 schema;PocketCode 不会下载它们。
  • GraphQL 在项目根目录没有 graphql-config 文件时不会启动。
  • Tailwind CSS,以及通过 intelephense 提供的 PHP,只有在项目自己的 node_modules 中带有它们时才能工作。
  • 服务器运行需要 PocketCode 自带的 Node.js,只有安装时才需要网络。

你不能做什么,以及原因

  • 安装 Go、Rust、C 和 C++、Lua、Swift 或 Zig 的服务器。它们的服务器是原生程序,而 Google Play 不允许应用下载原生代码。Google Play
  • 安装 Java、Kotlin、Ruby 或 Dart 的服务器。它们需要 PocketCode 未包含的运行环境。Google Play

运行代码

一切都在你的设备上运行:没有远程沙箱。应用共注册了 24 个运行器,但目前可以运行的有 17 个(14 个随应用内置,3 个为可选下载),覆盖 16 种语言和文件类型。另外 6 个在插件管理器中标为即将推出。

语言运行方式状态
JavaScript(.js、.mjs、.cjs、.jsx)Node.js v25.3.0内置
TypeScript(.ts、.tsx)同一个 Node.js,它会去掉类型。没有类型检查,也没有 tsc。内置
Python(.py)编译为 WebAssembly 的 CPython内置
Ruby(.rb)WebAssembly 上的 Ruby内置
PHP(.php)WebAssembly 上的 PHP内置
C(.c)TCC 0.9.27,进程内运行。仅支持 .c内置
Kotlin(.kt、.kts)设备上的 kotlinc 2.3.21。如果项目声明了应用没有打包的库,就会回退到更简单的脚本模式,这种模式可能失败。内置
Java(.java)BeanShell 2.0b6,一个 Java 风格的解释器,不是 javac。实验性且功能有限:不支持注解处理,部分反射的行为也不同,大多数面向对象代码无法运行。内置,实验性
Shell(.sh、.bash、.zsh)三者都使用 Android 的 /system/bin/sh(toybox)。它没有自带的工具会以退出码 127 结束。内置,功能有限
SQL(.sql)Android 的 SQLite,每个文件名对应一个临时数据库。第一行写 -- @reset 会将其清空。它不是数据库模块所用的引擎。内置
HTML(.html)它不会渲染页面:只检查结构、打印 file:// 路径,并提供在 DevBrowser 中打开,它会通过项目的本地服务器打开页面。内置
Markdown(.md、.markdown、.mdx)打开预览。内置
JSON(.json)校验文件,不运行任何内容。内置
Lua(.lua)WebAssembly 上的 Lua 5.4。编辑器没有 Lua 语法高亮:.lua 文件会以纯文本打开。可选下载,0.59 MB
Go(.go)WebAssembly 上的 Yaegi 0.16:仅限标准库、单个文件、没有 go get,也不支持带 go.mod 的项目。可选下载,37.96 MB
Rust(.rs、.rhai)Rhai,一种 Rust 风格的脚本语言。它不是 rustc:不支持高级 trait、生命周期、async 或 crate,旁边有 Cargo.toml 的 .rs 也无法运行。可选下载,1.36 MB
Perl、C++、C#、Zig、Dart、Swift—暂无法安装

运行面板

  • 点按运行(标注为实验性)或按 F5。面板会显示状态、配置名称,运行结束时还有一个 退出码 N · Mms 徽标。
  • 输出会保留 ANSI 颜色,并区分 stdout 和 stderr。你可以使用停止、自动滚动、筛选输出、复制输出和清除。JavaScript 在 Node 上有调试;见Git 与其他面板。
  • 在 stdin 输入…中输入内容并点按发送,即可回应读取输入的程序。
  • 当某次运行在某一行失败时,跳转到错误(第 N 行)会跳转到那里。
  • 面板保留最近 5,000 行,溢出时丢弃最旧的十分之一。

带参数运行(Ctrl+F5)

  • 输入以空格分隔的参数;双引号用于分组,反斜杠用于转义。不做变量展开。
  • 最近保留你最近 20 次运行(参数、退出码、耗时),方便再次启动其中一次。
  • 允许 WASM 引擎访问网络默认关闭:在你打开它之前,WebAssembly 模块(Python、Ruby、PHP、Lua、Go、Rhai)无法建立网络连接。Node、C 和 Shell 不受影响。

任务与启动配置

  • 启动配置的用法类似 launch.json:名称、运行时、命令、参数、工作目录、环境变量(KEY=VALUE)和预启动命令。其中一个可以设为默认。它们保存在设备上,只有当项目位于磁盘上时才会出现新建运行配置。
  • 项目任务列出编辑器检测到的内容:package.json 脚本、Makefile 目标、Gradle 和 Cargo.toml。

可选运行时(插件管理器)

  1. 1打开设置,进入编译器和运行时分区,找到额外的语言运行时一行。
  2. 2在插件管理器(标题为可选编译器)中,对 Rhai、Lua 5.4 或 Go(Yaegi WASI)点按安装。取消会停止下载,卸载会将其移除。打开这个界面不会发出任何网络请求。
  3. 3没有网络时,从文件安装 …可以安装你已有的插件文件;它的 SHA-256 同样会被校验。

你不能做什么,以及原因

  • 运行 Perl、C++、C#、Zig、Dart 或 Swift。它们在插件管理器中显示为即将推出:应用没有包含安装它们所需的校验和。尚未提供
  • 用真正的编译器运行 Java:编辑器注册了完整的 Java 运行器,但它的编译器没有被打包,所以 Java 是在 BeanShell 解释器上运行的。尚未提供
  • 声明带构造方法、实例字段、继承或接口的自定义类:在 Android 上,BeanShell 会把它们编译成手机无法加载的 JVM 字节码("can't load this type of class file")。泛型、lambda、enum、record 和 printf 同样无法运行。设备
  • 在远程服务器上运行代码:所有执行都在本地进行。有意为之
  • 安装原生编译器或添加 Maven 库。插件是 WebAssembly 文件,其 SHA-256 固定在应用内,因为 Google Play 不允许下载原生代码;Kotlin 的库仅限于已打包的那些(coroutines、serialization 和 Okio)。Google Play
  • 指望项目任务能使用 npm、make、gradle 或 cargo:任务通过系统 Shell 运行,而 Android 没有自带这些工具。设备
  • 在 WebAssembly 程序中访问网络,除非你打开允许 WASM 引擎访问网络。有意为之

主题与字体

编辑器的主题、字体和字号不是在编辑器内部设置的:它们位于设置中。

在哪里更改

  1. 1打开设置 → 外观 → 编辑器外观。实时代码示例会显示你选中的主题。
  2. 2从主题图库中选择一个主题(筛选项为全部、深色、浅色和已包含)、一个字体和一个字号(S、M、L 或 XL)。同一面板还可设置编辑器的壁纸及其不透明度。

23 个内置主题

分组主题
默认:跟随应用编辑器会跟随应用的浅色或深色主题。它本身不是一个主题,因此图库显示的是24 个主题 · 5 个已包含:23 个主题加上这一项,这一项和 4 个免费主题就是那 5 个已包含项。
Free(4)PocketCode Dark、PocketCode Light、VS Code Dark+、GitHub Light。
Pro(19)Monokai、Dracula、Solarized Dark、Nord、One Dark、Night Owl、GitHub Dark、Catppuccin Mocha、Ayu Mirage、Solarized Light、Gruvbox Dark、Gruvbox Light、Tokyo Night、Material Palenight、Synthwave '84、Cobalt2、Horizon、Panda Syntax 和 Rosé Pine。

字体

Default 是系统等宽字体,免费。其余七个属于 Pro:JetBrains Mono、Fira Code、Source Code Pro、Cascadia Code、Roboto Mono、Ubuntu Mono 和 Inconsolata。终端字体适用同样的限制。字体连字(默认关闭)对支持连字的字体有效(Fira Code、JetBrains Mono、Cascadia Code),行距(1、1.15、1.3 或 1.5)就在它旁边,位于编辑器 · 显示中。

我的主题(Pro)

  • 菜单视图分区中的我的主题会列出你的主题:使用、编辑主题、重命名和删除(会先确认)。
  • 导入主题…可读取不超过 1 MB 的 .tmTheme(plist)或 VS Code 主题 .json、.jsonc。至少需要背景色和文字颜色。
  • 新建主题从零开始。主题编辑器带有实时预览、编辑器颜色(背景、文字、光标、选区、当前行、行号)和 8 种语法颜色:关键字、字符串、注释、函数、数字、类型、运算符和注解。
  • 如果文字与背景的对比度低于 4.5:1(WCAG AA)会给出警告,导入的主题也会这样提示:已导入 —— 但文字与背景的对比度低于推荐的最低值(4.5:1)。
  • 在 Free 上,该命令会显示可导入主题页面(导入文件、带实时预览的基础编辑器、对比度检查),并带有升级按钮。

你不能做什么,以及原因

  • 在 Free 上使用 19 个 Pro 主题、七个 Pro 字体或我的主题:它们会打开 Pro 页面。Pro
  • 保留超过 50 个导入的主题:保存第 51 个时,最旧的一个会被悄悄丢弃。有意为之
  • 导入超过 1 MB 的主题文件,或不是 .tmTheme 也不是 VS Code JSON 的文件。有意为之
  • 在设备之间共享你的主题:它们只保存在设备上。有意为之

预览与分屏

预览可从顶栏或菜单的视图分区打开。

预览你得到什么
Markdown(.md、.markdown,或你设为 Markdown 的文件)顶栏中的切换 Markdown 预览。编辑器自带的转换器会在关闭 JavaScript 的 WebView 中渲染标题、粗体、斜体和删除线、列表和任务列表、引用、链接、图片、基础表格和代码块。代码块只是普通方框,没有语法颜色。MDX 没有预览。
图片(.png、.jpg、.gif、.webp、.bmp、.svg)预览图片:缩放、平移和信息面板。.ico 文件会被当作不支持的类型而拒绝。
JSON 和 YAML树形视图:可折叠的树,带键和值筛选以及全部展开。JSON 必须以 { 或 [ 开头,因此不接受注释。YAML 由一个极简解析器读取,所以锚点、流式写法和复杂的多行值可能无法显示。
CSV 和 TSV表格视图:分隔符会根据第一行检测(, ; 制表符 |),你也可以更改。可搜索行;副标题显示为N 行 × M 列。
HTML运行不会渲染它:只检查结构并打印 file:// 路径。顶栏中的地球按钮和运行面板中的在 DevBrowser 中打开按钮,会通过项目的本地服务器在内置的 DevBrowser 中打开该文件。
分屏(Ctrl+\)切换拆分编辑器会显示第二个窗格:一个只读查看器,镜像当前文件或另一个文件,带行号,点按即可跳转。它不是第二个编辑器。在分屏中打开位于标签页菜单中。

符号栏与触控操作

键盘上方的那一行是专为手机设计的。

你可以做什么

  • 每种语言一套配置。 41 种语言模式各有自己的符号键,另外还有 Tab 和 ↑ ↓ 方向键。
  • 自定义。更多操作(⋯)→ 自定义按键…可添加、移除和重新排序按键。可添加的额外操作有:Tab、← ↑ ↓ →、上移或下移行、注释、块注释、复制行、跳转到行、行排序,以及大写或小写。每种语言保留自己的配置,恢复默认值可恢复出厂配置。
  • 使用命令键,它在最左端。点按它会以全部模式打开命令面板(打开命令和文件)。拖动它可精确移动光标,先按住再拖动则是选中。光标触控板可以在 ⋯ 菜单中关闭。
  • 撤销和重做位于最右端,紧挨着 ⋯ 菜单,菜单中有移动行、复制、注释、块注释、跳转到行、排序和大小写。
  • 边做边学。五条首次使用提示(命令键、命令面板前缀、多光标、禅模式和资源管理器箭头)只显示一次,每个会话最多一条。设置中的重置编辑器提示可让它们重新出现。

你不能做什么,以及原因

  • 在设备之间同步符号栏配置:它们保存在设备的本地偏好设置中。有意为之
  • 在禅模式下看到符号栏,除非键盘已打开。有意为之

代码片段

编辑分区中的代码片段库有两个标签:本地和精选。

你可以做什么

  • 使用 78 个内置片段,涵盖 17 种语言(Kotlin 10、JavaScript 10、Python 8、Java 5、Rust 5、TypeScript 4、HTML 4、CSS 4、Go 4、Swift 4、SQL 4、Shell 4、Dart 4、C 2、C++ 2、Ruby 2、PHP 2)。它们按文件的语言筛选,支持搜索,并可用 Tab 在 $1…$0 字段之间移动。
  • 创建和编辑你自己的片段,使用添加片段:名称、触发前缀、可选的描述和正文。
  • 导入和导出为 JSON 文本:你粘贴或复制它,没有文件。导入同样遵守 Free 的 5 个自定义片段上限:放得下的会被添加,若有被排除的,会出现上限提示。
  • 浏览精选,这是来自 PocketCode 应用市场的精选列表,缓存在设备上,下载一次后即可离线使用。它会显示真实的作者、下载量和评分。安装需要登录(浏览不需要),并走正常的应用市场安装流程;你安装的内容会移到本地。

你不能做什么,以及原因

  • 在 Free 上创建、安装或导入第 6 个自定义片段:你的套餐最多允许 5 个自定义代码片段。删除一些或升级到 Pro 以安装更多。Pro
  • 在 Free 上安装标有 Pro 的精选片段:此代码片段属于 Pro。Pro
  • 在设备之间同步片段:它们保存在设备的本地偏好设置中。有意为之

便签、计时器、TODO 与实用工具

菜单工具分区中的小面板。它们以面板形式覆盖在编辑器之上。

草稿本

整个应用只有一条笔记,而不是每个项目一条。用保存保存,关闭面板时也会保存,会显示字符数,也可以清空。它保存在设备上。该命令叫草稿本,面板标题是便签。

番茄钟

25 分钟专注,5 分钟短休息,每完成四轮专注后有 15 分钟长休息。有开始、暂停、重置和跳过;它会统计完成的轮数,并在阶段结束时发出提示音。计时器属于这个面板:PocketCode 不运行后台服务,也不发送通知,所以请保持面板打开。

TODO 面板

扫描整个项目,查找注释(//、#、/*、<!--、--、%、;)中的 TODO、FIXME、HACK、NOTE、BUG、XXX 和 WARN。可按类型筛选,按文件分组或使用平铺列表,点按即可跳转。它读取固定列表中的代码和文本扩展名,跳过 512,000 字节或更大的文件,以及隐藏文件夹和构建文件夹。

开发工具

十一个在设备上运行的工具:JSON/XML 格式化工具、Base64 编码/解码、URL 编码/解码、UUID 生成器、哈希生成器(MD5、SHA-1、SHA-256、SHA-512)、时间戳转换器、颜色转换器、Lorem Ipsum 生成器、正则测试、JWT 解码和差异对比。它们作用于你的选中内容,没有选中内容时则作用于剪贴板。结果可以复制、插入或替换所选内容。

键盘快捷键

一份可搜索的列表(Ctrl+Shift+/),由真实的命令生成,显示你当前键位下的按键。

更新内容

更新日志,副标题为更新日志和升级。

编辑器的资源管理器

编辑器有自己的资源管理器,它不是主页面栏中的文件浏览器页面。它是 VS Code 风格的面板:在手机上是抽屉式面板,在宽度不小于 840 dp 的屏幕上则停靠在左侧。用资源管理器(Ctrl+Shift+E)、标签栏中的 ▾ 打开它;在平板上,同一个命令用于显示或隐藏它。

你可以做什么

  • 切换标签页。已打开分区列出已打开的标签页,并带有全部保存和全部关闭。
  • 浏览项目树,按文件夹逐级加载。文件夹排在前面,然后是不区分大小写的名称。.git 和 .pocketcode 永远不会列出;被忽略的条目(由 .gitignore 或构建和依赖文件夹决定)会以暗色但可见的方式显示。
  • 新建。新建文件和新建文件夹;名称中的 / 也会创建子文件夹。
  • 重命名、删除和复制。重命名、删除(会先询问:该文件将从设备中删除。其本地历史记录会保留。,并对有更改的已打开标签页发出警告)、复制路径和复制相对路径。
  • 找到方向。刷新、全部折叠、显示当前文件和按名称筛选,后者使用 Quick Open 的索引。
  • 查看 Git 状态。标记 M 已修改、A 已添加、U 未跟踪、D 已删除和 R 已重命名,包含更改的文件夹带有一个圆点,底部有一栏显示分支、待推送或待拉取的提交数以及更改数量。
  • 拖动边缘调整停靠面板的大小:最小 200 dp,最大为窗口的 45 %。宽度会被记住。

你不能做什么,以及原因

  • 在这里复制、剪切、粘贴、重复或多选文件。这些操作属于文件浏览器页面。有意为之
  • 选择排序方式或隐藏点文件:排序是固定的,只有 .git 和 .pocketcode 会被隐藏。有意为之
  • 看到带有独立字母的冲突或忽略标记:只有五种标记,被忽略的条目以暗色显示。有意为之
  • 在没有打开项目时浏览文件:只会看到标签页和一条消息(没有打开的项目。打开一个项目即可在此查看其文件。)。有意为之
The File Explorer page of the pager on a tablet showing the TaskCLI project with 3 folders and 4 files and the icon rail on the left
主页面栏中的文件浏览器页面,而不是编辑器自带的资源管理器:这是另一棵文件树,有自己的菜单。

这些工具从同一个菜单打开,但有各自的页面。

内容在哪里介绍
源代码管理(每次提交、push、pull、合并和储藏后都会显示消息,并可解决合并冲突)、GitHub PR 与 Issue、blame、文件历史、分支比较、rebase、cherry-pick、按 hunk 暂存、本地历史记录…和比较对象…Git 与 GitHub
调试、测试资源管理器、Docker 工具、监控、依赖项、后端生成器、AI 生成器和 AI 代码操作、实时协作、问题和大纲编辑器工具
在 AI 中使用你的选中内容:就所选内容询问 AI(Ctrl+I)、解释、测试、文档、重构它们使用你配置的提供商,并会先征得你的同意。应用只会替换发送出去的代码(函数或选区),如果期间代码被改动会给出提示;复制会把结果放到剪贴板。见编辑器工具。

Free 与 Pro

编辑器中的几乎所有功能在 Free 和 Pro 上都一样。差异如下,来自应用的套餐表:

功能FreePro
编辑、标签页、搜索、导航、预览、资源管理器、内置代码片段、草稿本、TODO、开发工具包含包含
语法高亮(39 种语言)和语言服务器(22 个软件包)包含包含
运行代码(17 个运行器)和可选运行时包含包含
Git、本地历史记录,以及使用你自己密钥的 AI包含包含
编辑器主题4 个主题和跟随应用(默认)全部 23 个主题
我的主题:导入 .tmTheme 和 VS Code JSON,创建和编辑,并带对比度检查否是
编辑器和终端字体Default(系统等宽字体)Default 加另外 7 个
自定义片段5 个套餐不设上限
标有 Pro 的精选片段否是
如果 Pro 套餐到期,编辑器的 Pro 主题(内置或导入的)会回到跟随应用,免费的 PocketCode Dark 和 PocketCode Light 也一样(只保留跟随应用、VS Code Dark+ 和 GitHub Light);编辑器中 Default 以外的任何字体也会回到 Default;编辑器中的其他内容都不会改变,终端的字体和主题不会被重置。整个应用的套餐表见 套餐与价格

键盘快捷键

这些按键只在连接物理键盘时可用(Ctrl,键盘上有 Cmd 时也可用 Cmd)。在手机上,请使用命令键、菜单或命令面板。Ctrl+P 和 Ctrl+Shift+P 跟随你在设置中选择的键位;其余的就是下面的按键。

按键操作
Ctrl+P · Ctrl+Shift+PQuick Open · 命令面板
Ctrl+S · Ctrl+Shift+S · Ctrl+Alt+S保存 · 另存为… · 全部保存
Ctrl+Z · Ctrl+Shift+Z(或 Ctrl+Y)撤销 · 重做
Ctrl+F · Ctrl+H · Ctrl+Shift+F查找 · 查找和替换 · 在文件中搜索
Ctrl+G · F12 · Alt+F12 · Shift+F12跳转到行 · 定义 · 速览 · 引用
F2 · Ctrl+. · Ctrl+Shift+O重命名符号 · 快速修复 · 整理导入
Ctrl+Shift+L在所有匹配处添加光标
Ctrl+D · Ctrl+Shift+K · Ctrl+/复制行 · 删除行 · 切换注释
Ctrl+Shift+↑ · Ctrl+Shift+↓上移一行 · 下移一行
Ctrl+] · Ctrl+[增加选区缩进 · 减少选区缩进
Shift+Alt+F格式化文档
Ctrl+Shift+E · Ctrl+\ · F11资源管理器 · 拆分编辑器 · 禅模式
Ctrl+Tab · Ctrl+Shift+Tab · Ctrl+W · Ctrl+Shift+T下一个标签页 · 上一个标签页 · 关闭标签页 · 重新打开已关闭的标签
Ctrl+Alt+M更改语言模式…
Ctrl+Alt+K · Ctrl+Alt+L · Ctrl+Alt+J切换 · 下一个 · 上一个书签
F8 · Shift+F8 · Ctrl+Shift+M下一个问题 · 上一个问题 · 问题
F5 · Ctrl+F5 · Shift+F5运行文件 · 带参数运行… · 调试文件
Ctrl+I · Ctrl+Shift+G就所选内容询问 AI · 源代码管理
Ctrl+Shift+/ · Ctrl+,键盘快捷键 · 编辑器设置

隐私与安全

  • 你的代码留在设备上。编辑、运行、语法高亮、预览和各种小工具都不需要网络。只有安装语言服务器、插件和精选片段才需要。
  • 下载的内容是固定的。语言服务器来自公共 npm 注册表(registry.npmjs.org),插件来自公共 GitHub 仓库 Pocket-Code-App/pocketcode-plugins。中间没有任何 PocketCode 服务器。每个文件都会与应用内固定的校验和核对(服务器用 SHA-512,插件用 SHA-256),不匹配就会被拒绝。
  • 运行是本地的。没有远程沙箱,在你打开允许 WASM 引擎访问网络之前,WebAssembly 程序没有网络。
  • 你的笔记和编辑器数据留在设备上。草稿本、自定义片段、符号栏配置、运行历史、启动配置、导入的主题以及每个文件的语言选择都保存在应用的本地偏好设置中,不会在设备之间同步。
  • 来自其他应用的文件通过 Android 的文件选择器打开,无需存储权限:PocketCode 只能访问你选择或分享的那个文件。
  • AI 操作会先询问。它们会用你自己的密钥,把你选中的代码发送给你配置的提供商,并且每个提供商在发送任何内容之前都会征求你的同意。

限制

编辑器目前做不到什么,以及原因。上面各节对每个工具有更详细的说明。

  • 没有代码折叠:编辑器引擎不支持它。第三方
  • 编辑器只读写 UTF-8;编码选择器只会更改一个标签。尚未提供
  • 每次保存都会删除每一行的行尾空格,而 .editorconfig 无法将其关闭。有意为之
  • 512 KB 或更大、10,000 行或更多,或有一行达到 2,000 个字符的文件以轻量模式打开;20 MB 或更大的文件为只读;80 MB 或更大的文件不会打开。这些阈值只是调优的结果,不是保证。设备
  • 20 个标签页是软上限,而且只有 4、6 或 10 个会把文本保留在内存中。设备
  • 在文件中搜索不能替换,不保留历史,在 500 条结果处停止,并跳过 512 KB 或更大的文件。尚未提供
  • Go、Rust、C 和 C++、Lua、Swift 或 Zig 没有一键语言服务器(它们是原生程序),Java、Kotlin、Ruby 或 Dart 也没有(它们需要 PocketCode 未包含的运行环境)。Google Play
  • Perl、C++、C#、Zig、Dart 和 Swift 无法运行:它们的插件被列为即将推出。尚未提供
  • Java 运行在 BeanShell 解释器上,而不是编译器上。尚未提供
  • TypeScript 运行时会去掉类型,不做类型检查;Rust 以 Rhai 脚本方式运行;Go 只能运行一个不带 go.mod 的标准库文件。有意为之
  • 项目任务需要手机上有 npm、make、gradle 或 cargo,而 Android 没有自带它们。设备
  • Markdown 预览不会给代码块着色,运行也不会渲染 HTML。尚未提供
  • 自动导入只认识六种语言的一张常见符号表,Emmet 也只是一个子集。尚未提供
  • Pro 主题、Pro 字体、我的主题、超过 5 个自定义片段和 Pro 精选片段需要 Pro。Pro
  • 导入的主题最多 50 个(最旧的会被悄悄丢弃),每个不超过 1 MB。有意为之
  • Quick Open 最多索引 50,000 个文件,并显示 50 条结果。有意为之

故障排除

轻量模式 (…):已关闭高亮、缩略图、LSP 和 AI 建议

文件达到 512 KB 或更大、有 10,000 行或更多,或有一行达到 2,000 个字符(压缩过的代码通常如此)。你仍然可以编辑。点按仍然启用高亮可恢复高亮,代价是速度变慢。

文件过大,无法在此打开 (…)

文件达到 80 MB 或更大。只提供用其他应用打开。从 20 MB 起,文件会以只读方式打开。

… 是二进制文件

前 8 KB 中有 NUL 字节,或非文本字节过多。查看图片会显示图片;以文本方式打开(只读)会把原始字节显示为文本。

磁盘上的文件已更改,而你有未保存的修改。

在你开始编辑之后,文件在磁盘上发生了变化。比较显示差异,重新加载放弃你的修改,保留我的保留你的修改。

无法保存

你的更改仍保留在编辑器中。后面的消息会说明原因,例如缺少权限。排除问题后再次点按保存文件;错误未解决期间,按钮会显示重试保存,保存出错。

已打开 N 个标签,且都无法在不丢失更改的情况下关闭。请保存或关闭一些标签。

编辑器最多保留 20 个标签页,并会关闭最久未使用且没有更改的那个来腾出位置,但每个标签页都有更改或已固定。它仍然打开了你的文件,超出了上限。请保存或关闭一些标签页。

已关闭 …(上限 20 个标签)

打开第 21 个标签页时,关闭了最久未使用且没有未保存更改的标签页。消息带有撤销。

该文件不是 UTF-8 文本;为避免损坏,未打开。

来自其他应用的文件以及从设备打开文件…必须是有效的 UTF-8。PocketCode 会拒绝其他一切文件,而不是改写它不理解的字节。请先在别处把文件转换为 UTF-8。

文件过大,无法打开(上限 20 MB)。

通过 Android 选择器打开的项目之外的文件,上限为 20 MB。项目内部的文件遵循大文件、编码与保存中的大小模式。

此文件为只读:共享它的应用不允许修改。使用“另存为…”将更改保存到新文件。

你仍然可以编辑这个标签页。用另存为…(Ctrl+Shift+S)把结果写到你可以写入的位置。

无法连接到 npm 注册表。请检查网络后重试。

语言服务器从 registry.npmjs.org 安装。请在能访问它的网络下重试。如果提示npm 注册表拒绝了下载。请稍后重试。,说明注册表返回了错误。

下载内容与预期的校验和不符,已丢弃。

文件与应用内固定的 SHA-512 不一致,因此没有安装任何内容。请重试,最好换一个网络。

某个软件包包含原生代码,未安装。

安装程序会有意拒绝原生代码和不安全的软件包内容(某个软件包包含不安全的内容,未安装。):PocketCode 就是这样遵守 Google Play 的规则的。

设备可用空间不足。

一个服务器最多需要设备上约 97 MB(GraphQL),全部 22 个加起来约 506 MB。请释放一些空间,或卸载你不用的服务器。

此设备上没有可用的 Node.js,语言服务器无法运行。

服务器运行在 PocketCode 自带的 Node.js 上,因此一个也无法启动。语法高亮和编辑器自带的检查仍然可用。

语言服务器因错误而停止。

打开语言服务器查看是哪一个,然后重新安装或更新它。对于 GraphQL,请检查项目中是否有 graphql-config 文件。

Go 没有一键安装的服务器:gopls 是原生程序,而 Google Play 不允许应用下载原生代码。

Rust、C 和 C++、Lua、Swift 以及 Zig 同样如此。对于 Java、Kotlin、Ruby 和 Dart,消息改为说明服务器需要 PocketCode 未包含的运行环境。语法高亮和编辑器内置的检查仍然可用。

无法识别的格式。请选择 .tmTheme 或 VS Code JSON 主题文件。

只能导入 .tmTheme 以及 VS Code 的 .json 或 .jsonc 主题。如果提示文件太大,不像是一个配色主题。,说明文件超过 1 MB;无法解析该文件 —— 它似乎已损坏或格式错误。则表示无法读取它。

该主题缺少必需的编辑器颜色(背景/文字)。

文件中没有背景色或没有文字颜色。请在文件中补上,或在新建主题中构建这个主题。

已导入 —— 但文字与背景的对比度低于推荐的最低值(4.5:1)。

主题已导入,但部分代码可能难以阅读。打开编辑主题并调整颜色,直到警告消失。

你的套餐最多允许 5 个自定义代码片段。删除一些或升级到 Pro 以安装更多。

Free 最多 5 个自定义片段。删除一个,或升级到 Pro。如果看到没有网络连接,且代码片段尚未下载。,请先联网打开一次精选:之后它也能离线使用。登录后即可安装市场中的代码片段表示安装需要账号,浏览则不需要。

该名称无效 · 已存在同名的文件或文件夹 · 该路径不在项目内

这些是资源管理器在你新建或重命名时所做的检查。请使用不含禁用字符的名称、尚未被占用的名称,以及位于项目内部的路径。

运行按钮是灰色的

该文件当前没有可运行它的运行器:它属于没有运行器的类型、是你尚未安装的运行时(Lua、Go、Rhai),或是六个暂时无法安装的类型之一。此外,运行不会显示在 Markdown 文件或设备上标签页中。见运行代码。