20231224解决outcommit_id.xml1 parser error Document is empty的问题
20231224解决outcommit_id.xml1 parser error Document is empty的问题
2023/12/24 18:13
在开发RK3399的Android10的时候,出现:
rootroot@rootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$ make installclean
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=10
TARGET_PRODUCT=rk3399_Android10
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=cortex-a53
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv7-a-neon
TARGET_2ND_CPU_VARIANT=cortex-a15
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.15.0-91-generic-x86_64-Ubuntu-20.04.6-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=QQ2A.200305.004.A1
OUT_DIR=out
============================================
16:51:00 Deleted images and staging directories.
#### build completed successfully (14 seconds) ####
rootroot@rootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$ ll
total 249120
drwxrwxr-x 38 rootroot rootroot 4096 12月 24 16:43 ./
drwxrwxrwx 10 rootroot rootroot 4096 12月 24 07:30 ../
drwxrwxr-x 26 rootroot rootroot 4096 12月 24 16:09 10u-boot/
drwxrwxr-x 27 rootroot rootroot 4096 12月 20 19:18 61u-boot/
lrwxrwxrwx 1 rootroot rootroot 19 12月 20 15:06 Android.bp -> build/soong/root.bp
drwxrwxr-x 31 rootroot rootroot 4096 12月 20 15:06 art/
drwxrwxr-x 13 rootroot rootroot 4096 12月 20 15:06 bionic/
drwxrwxr-x 3 rootroot rootroot 4096 12月 20 15:06 bootable/
lrwxrwxrwx 1 rootroot rootroot 26 12月 20 15:06 bootstrap.bash -> build/soong/bootstrap.bash*
drwxrwxr-x 6 rootroot rootroot 4096 12月 20 15:06 build/
-r-xr-xr-x 1 rootroot rootroot 6914 12月 20 15:06 build.sh*
-r-xr-xr-x 1 rootroot rootroot 14109 12月 20 15:06 .classpath*
drwxrwxr-x 12 rootroot rootroot 4096 12月 20 15:06 cts/
drwxrwxr-x 10 rootroot rootroot 4096 12月 20 15:06 dalvik/
drwxrwxr-x 5 rootroot rootroot 4096 12月 20 15:06 developers/
drwxrwxr-x 20 rootroot rootroot 4096 12月 20 15:06 development/
drwxrwxr-x 4 rootroot rootroot 4096 12月 20 15:06 device/
drwxrwxr-x 306 rootroot rootroot 12288 12月 20 15:08 external/
drwxrwxr-x 15 rootroot rootroot 4096 12月 20 15:10 frameworks/
drwxrwxr-x 13 rootroot rootroot 4096 12月 20 15:10 hardware/
-r--r--r-- 1 rootroot rootroot 162 12月 20 15:06 javaenv.sh
drwxrwxr-x 30 rootroot rootroot 4096 12月 22 20:47 kernel/
-rwx------ 1 rootroot rootroot 214721754 12月 20 08:23 kernel72.tgz*
drwxrwxr-x 19 rootroot rootroot 4096 12月 20 15:11 libcore/
drwxrwxr-x 8 rootroot rootroot 4096 12月 20 15:11 libnativehelper/
-r--r--r-- 1 rootroot rootroot 92 12月 20 15:06 Makefile
-r-xr-xr-x 1 rootroot rootroot 10370 12月 20 15:06 mkimage.sh*
drwxrwxr-x 11 rootroot rootroot 4096 12月 24 16:51 out/
drwxrwxr-x 9 rootroot rootroot 4096 12月 20 15:11 packages/
drwxrwxr-x 6 rootroot rootroot 4096 12月 20 15:11 pdk/
drwxrwxr-x 3 rootroot rootroot 4096 12月 20 15:11 platform/
drwxrwxr-x 10 rootroot rootroot 4096 12月 20 15:12 platform_testing/
drwxrwxr-x 28 rootroot rootroot 4096 12月 20 15:24 prebuilts/
drwxrwxr-x 7 rootroot rootroot 4096 5月 22 2020 .repo/
-r-xr-xr-x 1 rootroot rootroot 519 12月 20 15:24 restore_patches.sh*
drwxrwxr-x 9 rootroot rootroot 4096 12月 24 16:03 rkbin/
drwxrwxr-x 9 rootroot rootroot 4096 12月 20 15:06 RKDocs/
drwxrwxr-x 5 rootroot rootroot 4096 12月 20 15:24 rkst/
drwxrwxr-x 5 rootroot rootroot 4096 12月 20 15:06 RKTools/
drwxrwxr-x 7 rootroot rootroot 4096 12月 24 16:45 rockdev/
drwxrwxr-x 24 rootroot rootroot 4096 12月 20 15:24 sdk/
drwxrwxr-x 38 rootroot rootroot 4096 12月 20 15:24 system/
drwxrwxr-x 9 rootroot rootroot 4096 12月 20 15:24 test/
drwxrwxr-x 4 rootroot rootroot 4096 12月 20 15:24 toolchain/
drwxrwxr-x 19 rootroot rootroot 4096 12月 20 15:25 tools/
drwxrwxr-x 22 rootroot rootroot 4096 12月 24 16:44 u-boot/
-rwx------ 1 rootroot rootroot 22333991 12月 24 16:39 u-boot81.tgz*
-rwx------ 1 rootroot rootroot 17818883 12月 14 19:21 u-boot81在firefly.tgz*
drwxrwxr-x 5 rootroot rootroot 4096 12月 22 19:45 vendor/
rootroot@rootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$
rootroot@rootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$
rootroot@rootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$ make -j36
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=10
TARGET_PRODUCT=rk3399_Android10
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=cortex-a53
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv7-a-neon
TARGET_2ND_CPU_VARIANT=cortex-a15
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.15.0-91-generic-x86_64-Ubuntu-20.04.6-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=QQ2A.200305.004.A1
OUT_DIR=out
============================================
$(shell find kernel/drivers/net/wireless/rockchip_wlan -name ""*.ko"" -type f | sed -E "s:(kernel/drivers/net/wireless/rockchip_wlan/?(.*)):\\1\\:/recovery/root/pcba/lib/modules/\\2:" | sed "s://:/:g") was changed, regenerating...
$(shell find kernel/drivers/net/wireless/rockchip_wlan -name ""*.ko"" -type f | sed -E "s:(kernel/drivers/net/wireless/rockchip_wlan/?(.*)):\\1\\:/recovery/root/pcba/lib/modules/\\2:" | sed "s://:/:g") was changed, regenerating...
[100% 449/449] initializing build system ...
device/rockchip/common/prebuild.mk:2: warning: Generating manifest snapshot at out/commit_id.xml...
device/rockchip/common/prebuild.mk:3: warning: You can disable this by removing this and setting BOARD_RECORD_COMMIT_ID := false in BoardConfig.mk
Traceback (most recent call last):
File "/home/rootroot/3TB/Rockchip_Android10.0_SDK_Release/.repo/repo/main.py", line 531, in <module>
_Main(sys.argv[1:])
File "/home/rootroot/3TB/Rockchip_Android10.0_SDK_Release/.repo/repo/main.py", line 507, in _Main
result = repo._Run(argv) or 0
File "/home/rootroot/3TB/Rockchip_Android10.0_SDK_Release/.repo/repo/main.py", line 180, in _Run
result = cmd.Execute(copts, cargs)
File "/home/rootroot/3TB/Rockchip_Android10.0_SDK_Release/.repo/repo/subcmds/manifest.py", line 80, in Execute
self._Output(opt)
File "/home/rootroot/3TB/Rockchip_Android10.0_SDK_Release/.repo/repo/subcmds/manifest.py", line 70, in _Output
peg_rev_upstream = opt.peg_rev_upstream)
File "/home/rootroot/3TB/Rockchip_Android10.0_SDK_Release/.repo/repo/manifest_xml.py", line 327, in Save
output_projects(None, root, list(sorted(projects)))
File "/home/rootroot/3TB/Rockchip_Android10.0_SDK_Release/.repo/repo/manifest_xml.py", line 241, in output_projects
output_project(parent, parent_node, project)
File "/home/rootroot/3TB/Rockchip_Android10.0_SDK_Release/.repo/repo/manifest_xml.py", line 268, in output_project
value = p.work_git.rev_parse(HEAD + '^0')
File "/home/rootroot/3TB/Rockchip_Android10.0_SDK_Release/.repo/repo/project.py", line 2747, in runner
(self._project.name, name, p.stderr))
error.GitError: rk/u-boot rev-parse: fatal: not a git repository (or any parent up to mount point /home/rootroot)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
[ 46% 454/971] including build/make/target/board/Android.mk ...
build fstab file with device/rockchip/rk3399/rk3399_Android10/fstab.in....
rebuilding dtbo image with device/rockchip/rk3399/rk3399_Android10/dt-overlay.in....
[ 72% 704/971] including hardware/rockchip/omx_il/Android.mk ...
tools/hooks .git/hooks
[ 20% 1490/7172] Building dtbo img file out/target/product/rk3399_Android10/obj/FAKE/rockchip_dtbo_intermediates/rebuild-dtbo.img.
out/target/product/rk3399_Android10/obj/FAKE/rockchip_dtbo_intermediates/device-dtbo.dtb: Warning (unit_address_vs_reg): Node /fragment@0 has a unit name, but no reg property
out/target/product/rk3399_Android10/obj/FAKE/rockchip_dtbo_intermediates/device-dtbo.dtb: Warning (unit_address_vs_reg): Node /fragment@1 has a unit name, but no reg property
create image file: out/target/product/rk3399_Android10/obj/FAKE/rockchip_dtbo_intermediates/rebuild-dtbo.img...
Total 1 entries.
[ 20% 1494/7172] Target buildinfo: out/target/product/rk3399_Android10/obj/ETC/system_build_prop_intermediates/build.prop
Target buildinfo from: device/rockchip/rk3399/rk3399_Android10/system.prop
[ 77% 5581/7172] Copy xml: out/target/product/rk3399_Android10/vendor/commit_id.xml
FAILED: out/target/product/rk3399_Android10/vendor/commit_id.xml
/bin/bash -c "(out/soong/host/linux-x86/bin/xmllint out/commit_id.xml >/dev/null ) && (mkdir -p out/target/product/rk3399_Android10/vendor/ ) && (rm -f out/target/product/rk3399_Android10/vendor/commit_id.xml ) && (cp \"out/commit_id.xml\" \"out/target/product/rk3399_Android10/vendor/commit_id.xml\" )"
out/commit_id.xml:1: parser error : Document is empty
^
[ 78% 5607/7172] build out/target/product/rk3399_Android10/system/etc/event-log-tags
packages/services/Car/tests/CarDeveloperOptions/src/com/android/car/developeroptions/EventLogTags.logtags:6: warning: tag "lock_screen_type" (90200) duplicated in packages/apps/Settings/src/com/android/settings/EventLogTags.logtags:6
packages/services/Car/tests/CarDeveloperOptions/src/com/android/car/developeroptions/EventLogTags.logtags:9: warning: tag "exp_det_device_admin_activated_by_user" (90201) duplicated in packages/apps/Settings/src/com/android/settings/EventLogTags.logtags:9
packages/services/Car/tests/CarDeveloperOptions/src/com/android/car/developeroptions/EventLogTags.logtags:12: warning: tag "exp_det_device_admin_declined_by_user" (90202) duplicated in packages/apps/Settings/src/com/android/settings/EventLogTags.logtags:12
packages/services/Car/tests/CarDeveloperOptions/src/com/android/car/developeroptions/EventLogTags.logtags:15: warning: tag "exp_det_device_admin_uninstalled_by_user" (90203) duplicated in packages/apps/Settings/src/com/android/settings/EventLogTags.logtags:15
packages/services/Car/tests/CarDeveloperOptions/src/com/android/car/developeroptions/EventLogTags.logtags:18: warning: tag "settings_latency" (90204) duplicated in packages/apps/Settings/src/com/android/settings/EventLogTags.logtags:18
16:56:10 ninja failed with: exit status 1
#### failed to build some targets (04:54 (mm:ss)) ####
rootroot@rootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$

百度搜索:out/commit_id.xml:1: parser error : Document is empty

https://blog.csdn.net/u010823818/article/details/132233861
commit_id.xml:1: parser error : Document is empty
SoulKuyan
已于 2023-10-24 09:45:58 修改
修改device/rockchip/common/BoardConfig.mk
将BOARD_RECORD_COMMIT_ID 改为false
BOARD_RECORD_COMMIT_ID ?= false
或者
SYSTEM_WITH_MANIFEST ?= true 修改成 false 即可
Z:\3TB\Rockchip_Android10.0_SDK_Release\device\rockchip\common\BoardConfig.mk
Z:\3TB\61Android11.0\device\rockchip\common\BoardConfig.mk
# ethernet
BOARD_HS_ETHERNET ?= false
# Save commit id into firmware
BOARD_RECORD_COMMIT_ID ?= false
# no battery
BUILD_WITHOUT_BATTERY ?= false

相关文章:
20231224解决outcommit_id.xml1 parser error Document is empty的问题
20231224解决outcommit_id.xml1 parser error Document is empty的问题 2023/12/24 18:13 在开发RK3399的Android10的时候,出现:rootrootrootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$ make installclean PLATFORM_VERSION_CODENAMEREL…...
电子电器架构刷写方案——General Flash Bootloader
电子电器架构刷写方案——General Flash Bootloader 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 注:文章1万字左右,深度思考者入!!! 老规矩,分享一段喜欢的文字,避免…...
【Linux】僵尸与孤儿 进程等待
目录 一,僵尸进程 1,僵尸进程 2,僵尸进程的危害 二,孤儿进程 1,孤儿进程 三,进程等待 1,进程等待的必要性 2,wait 方法 3,waitpid 方法 4,回收小结…...
Java小案例-Sentinel的实现原理
前言 Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。 主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 核心概念 要想理解一个新的技…...
【Leetcode Sheet】Weekly Practice 21
Leetcode Test 1901 寻找峰值Ⅱ(12.19) 一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。 给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 mat[i][j] 并 返回其位置 [i,j] 。 …...
C语言使用qsort和bsearch实现二分查找
引言 在计算机科学领域,查找是一项基本操作,而二分查找是一种高效的查找算法。本博客将详细解释一个简单的C语言程序,演示如何使用标准库函数qsort和bsearch来对一个整数数组进行排序和二分查找。 代码解析 包含头文件 #include <stdi…...
MySQL的替换函数及补全函数的使用
前提: mysql的版本是8.0以下的。不支持树形结构递归查询的。但是,又想实现树形结构的一种思路 提示:如果使用的是MySQL8.0及其以上的,想要实现树形结构,请参考:MySQL数据库中,如何实现递归查询…...
2022第十二届PostgreSQL中国技术大会-核心PPT资料下载
一、峰会简介 本次大会以“突破•进化•共赢 —— 安全可靠,共建与机遇”为主题,助力中国数据库基础软件可掌控、可研究、可发展、可生产,并推动数据库生态的繁荣与发展。大会为数据库从业者、数据库相关企业、数据库行业及整个IT产业带来崭…...
2024 年 10大 AI 趋势
2025 年,全球人工智能市场预计将达到惊人的 1906.1 亿美元,年复合增长率高达 36.62%。 人工智能软件正在迅速改变我们的世界,而且这种趋势在未来几年只会加速。 我们分析了未来有望彻底改变 2024 年的 10 个AI趋势。从生成式人工智能的兴起到…...
Uboot
什么是Bootloader? Linux系统要启动就必须需要一个 bootloader程序,也就说芯片上电以后先运行一段bootloader程序。 这段 **bootloader程序会先初始化时钟,看门狗,中断,SDRAM,等外设,然后将 Linux内核从f…...
ECMAScript 的未来:预测 JavaScript 创新的下一个浪潮
以下是简单概括关于JavaScript知识点以及一些目前比较流行的比如:es6 想要系统学习: 大家有关于JavaScript知识点不知道可以去 🎉博客主页:阿猫的故乡 🎉系列专栏:JavaScript专题栏 🎉ajax专栏&…...
代码随想录算法训练营第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素
239. 滑动窗口最大值 题目链接:239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 文章讲解…...
推荐五个免费的网络安全工具
导读: 在一个完美的世界里,信息安全从业人员有无限的安全预算去做排除故障和修复安全漏洞的工作。但是,正如你将要学到的那样,你不需要无限的预算取得到高质量的产品。这里有SearchSecurity.com网站专家Michael Cobb推荐的五个免费…...
Cross-Drone Transformer Network for Robust Single Object Tracking论文阅读笔记
Cross-Drone Transformer Network for Robust Single Object Tracking论文阅读笔记 Abstract 无人机在各种应用中得到了广泛使用,例如航拍和军事安全,这得益于它们与固定摄像机相比的高机动性和广阔视野。多无人机追踪系统可以通过从不同视角收集互补的…...
【LeetCode刷题笔记】动态规划(二)
647. 回文子串 解题思路: 1. 暴力穷举 , i 遍历 [0, N) , j 遍历 [i+1, N] ,判断每一个子串 s[i, j) 是否是回文串,判断是否是回文串可以采用 对撞指针 的方法。如果是回文串就计数 +1...
(十七)Flask之大型项目目录结构示例【二扣蓝图】
大型项目目录结构: 问题引入: 在上篇文章讲蓝图的时候我给了一个demo项目,其中templates和static都各自只有一个,这就意味着所有app的模板和静态文件都放在了一起,如果项目比较大的话,这就非常乱…...
蓝牙技术在物联网中的应用
随着蓝牙技术的不断演进和发展,蓝牙已经从单一的传统蓝牙技术发展成集传统蓝牙。高速蓝牙和低耗能蓝牙于一体的综合技术,不同的应用标准更是超过40个越来越广的技术领域和越来越多的应用场景,使得目前的蓝牙技术成为包含传感器技术、识别技术…...
宝塔面板Linux服务器CentOS 7数据库mysql5.6升级至5.7版本教程
近段时间很多会员问系统更新较慢,也打算上几个好的系统,但几个系统系统只支持MYSQL5.7版本,服务器一直使用较低的MYSQL5.6版本,为了测试几个最新的系统打算让5.6和5.7并存使用,参考了多个文档感觉这种并存问题会很多。…...
掌握常用Docker命令,轻松管理容器化应用
Docker是一个开源的应用容器引擎,它可以让开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。下面介…...
【数据结构1-2】P5076 普通二叉树(简化版)(c++,multiset做法)
文章目录 一、题目【深基16.例7】普通二叉树(简化版)题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1基本思路: 一、题目 【深基16.例7】普通二叉树(简化版) 题目描述 您需要写一种数据结构,来维…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
