ics学习前置
我看的是21年的 https://nju-projectn.github.io/ics-pa-gitbook/ics2021/index.html文档内容
每年的内容应该不会有什么变化
Vim 使用
Vim 是一个强大的文本编辑器,在终端环境下非常高效。掌握 Vim 的基本操作对后续的 PA(编程作业)很有帮助。
基本模式
- 普通模式(Normal):默认进入模式,用于移动光标、删除、复制粘贴等。
- 插入模式(Insert):按
i进入,可编辑文本;按Esc返回普通模式。 - 命令模式(Command):按
:进入,可执行保存、退出、查找等命令。
常用操作
一、基础文件操作
| 操作 | 命令 | 说明 |
|---|---|---|
| 保存文件 | :w | 保存当前修改 |
| 退出 Vim | :q | 未修改时直接退出 |
| 强制退出 | :q! | 不保存修改,强制退出 |
| 保存并退出 | :wq / ZZ | 保存文件后关闭 Vim |
二、光标移动操作
| 操作 | 命令 | 说明 |
|---|---|---|
| 左/下/上/右 | h j k l | 基础光标移动 |
| 跳转到文件头 | gg | 快速回到代码顶部 |
| 跳转到文件尾 | G | 快速跳转到代码底部 |
| 跳转到行首 | 0 | 光标移至当前行最前端 |
| 跳转到行尾 | $ | 光标移至当前行最后端 |
| 下一个单词 | w | 按单词向后快速移动 |
| 上一个单词 | b | 按单词向前快速移动 |
三、文本编辑操作
| 操作 | 命令 | 说明 |
|---|---|---|
| 删除字符 | x | 删除光标所在位置字符 |
| 删除整行 | dd | 删除当前整行代码 |
| 撤销操作 | u | 撤销上一步修改 |
| 重做撤销 | Ctrl + r | 恢复被撤销的操作 |
| 复制整行 | yy | 复制当前行代码 |
| 粘贴内容 | p | 在光标后方粘贴 |
| 光标前插入 | i | 进入编辑模式,光标前输入 |
| 光标后插入 | a | 进入编辑模式,光标后输入 |
| 下方新建行 | o | 光标下新建行并编辑 |
四、搜索与替换
| 操作 | 命令 | 说明 |
|---|---|---|
| 向下搜索 | /关键词 | 查找代码中的指定内容 |
| 向上搜索 | ?关键词 | 反向查找指定内容 |
| 下一个结果 | n | 跳转到下一个匹配项 |
| 上一个结果 | N | 跳转到上一个匹配项 |
| 清除高亮 | :nohl | 取消搜索后的高亮显示 |
| 全文替换 | :%s/old/new/g | 全局替换文本内容 |
五、代码折叠(阅读源码必备)
| 操作 | 命令 | 说明 |
|---|---|---|
| 折叠/展开 | za | 切换当前代码块折叠状态 |
| 全部展开 | zR | 一键展开所有折叠代码 |
| 全部折叠 | zM | 一键折叠所有代码块 |
六、分屏操作(多文件对照查看)
| 操作 | 命令 | 说明 |
|---|---|---|
| 垂直分屏 | :vs 文件名 | 左右分屏打开文件 |
| 水平分屏 | :sp 文件名 | 上下分屏打开文件 |
| 切换分屏 | Ctrl + w + 方向键 | 在分屏窗口之间切换光标 |
以及 直接输入vimtutor的教程
Tmux 终端复用器
Tmux 让你在一个终端窗口中同时管理多个会话、窗口和面板,特别适合远程开发和长时间运行的任务。
基本概念
- 会话(Session):独立的工作环境,可以断开后重新连接
- 窗口(Window):会话内的标签页。
- 面板(Pane):窗口内的分屏区域。
常用快捷键(前缀 Ctrl+b)
| 操作 | 快捷键 |
|---|---|
| 新建会话(终端外) | tmux new -s name |
| 分离会话 | Ctrl+b d |
| 重新连接 | tmux attach -t name |
| 查看会话列表 | tmux ls |
| 垂直分屏 | Ctrl+b % |
| 水平分屏 | Ctrl+b " |
| 切换面板 | Ctrl+b 方向键 |
| 新建窗口 | Ctrl+b c |
| 切换窗口 | Ctrl+b n(下一个)、Ctrl+b p(上一个) |
| 关闭面板 | Ctrl+b x |
| 重命名窗口 | Ctrl+b , |
常用命令(终端内)
tmux new -s work:创建名为 work 的会话tmux attach -t work:重新连接tmux kill-session -t work:结束会话tmux list-sessions:列出所有会话
PA 建议:在 PA 实验时,可以打开一个 Tmux 会话,分为三个面板:代码编辑区、编译运行区、GDB 调试区,效率会高很多。 tmux教程
git使用
| 操作 | 命令 |
|---|---|
| 克隆仓库 | git clone <url> |
| 查看状态 | git status |
| 添加文件 | git add <file> 或 git add . |
| 提交变更 | git commit -m "message" |
| 推送 | git push |
| 拉取 | git pull |
| 创建分支 | git branch <branch> |
| 切换分支 | git checkout <branch> |
| 合并分支 | git merge <branch> |
| 查看历史 | git log |
PA 提示:每个 PA 阶段结束后及时提交,方便回退和对比。
make gcc
GCC 编译过程
一个 C 程序的编译通常分为四个阶段:
- 预处理(
-E):处理#include、#define - 编译(
-S):生成汇编代码 - 汇编(
-c):生成目标文件 - 链接:生成可执行文件
常用 GCC 选项
| 选项 | 说明 |
|---|---|
-o <file> | 指定输出文件名 |
-g | 生成调试信息 |
-Wall | 开启常见警告 |
-Wextra | 额外警告 |
-O2 | 优化等级 2 |
-std=c99 | 指定 C 标准 |
-I<dir> | 添加头文件路径 |
-L<dir> | 添加库文件路径 |
-l<name> | 链接指定库(如 -lm) |
Makefile 基础
CC = gcc
CFLAGS = -Wall -g
TARGET = myprog
OBJS = main.o util.o
$(TARGET): $(OBJS)
$(CC) -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(TARGET) $(OBJS)
.PHONY: clean
GDB 基础使用教程
一、前提
编译代码时必须加 -g(生成调试信息)
gcc -g test.c -o test
gdb ./test
| 命令 | 简写 | 作用 |
|---|---|---|
| run | r | 运行程序 |
| break 行号/函数 | b | 设置断点 |
| next | n | 单步执行(不进入函数) |
| step | s | 单步执行(进入函数) |
| print 变量 | p | 查看变量值 |
| continue | c | 继续运行到下一个断点 |
| list | l | 显示源代码 |
| finish | - | 运行到当前函数结束 |
| quit | q | 退出 GDB |
常用命令示例
b main #在 main 函数打断点
b 20 #在第 20 行打断点
p a #查看变量 a
p arr #看数组 arr
p &a #查看内存 / 地址内容
基础调试流程
- 启动 gdb
- 设置断点
- run 运行
- n /s 单步执行
- p 查看变量
- 找到问题后 quit 退出
目前进度
当前完成pa0 完成大部分环境搭建
- pa0
- []pa1
- []pa2
- []pa3
- []pa4

说些什么吧!