CS 基础工具互动学习

Git · Linux · Vim · Markdown — 从笔记到肌肉记忆

概念地图

这四个工具构成了程序员的日常工作台。点击查看详情。

🌳

Git

版本控制:记录每一次修改,支持分支并行开发

20+ 命令
🐧

Linux

系统操作:文件管理、进程控制、权限管理

25+ 命令
⌨️

Vim

模式编辑:NORMAL/INSERT/COMMAND 三种模式切换

12+ 命令
📝

Markdown

轻量标记:用纯文本写出结构化文档

15+ 语法

命令浏览器

点击任意命令展开查看详细解释和示例输出。这是你的随身命令手册。

pwd — Print Working Directory

显示当前工作目录的完整路径。

$ pwd /home/user/projects
ls — List Files

列出当前目录下的文件和文件夹。加 -l 显示详细信息(权限、大小、日期)。

$ ls documents projects logs notes.md $ ls -l drwxr-xr-x 2 user user 4096 Jul 3 10:00 documents drwxr-xr-x 2 user user 4096 Jul 3 10:00 projects -rw-r--r-- 1 user user 128 Jul 3 10:00 notes.md
cd — Change Directory

切换目录。cd .. 返回上级,cd ~ 回主目录。

$ cd projects $ pwd /home/user/projects $ cd .. $ pwd /home/user
mkdir — Make Directory

创建新目录。

$ mkdir myproject $ ls documents projects logs myproject notes.md
touch — 创建空文件

创建一个空文件。如果文件已存在,只更新修改时间。

$ touch app.py $ ls -l app.py -rw-r--r-- 1 user user 0 Jul 3 10:00 app.py
cat — Concatenate(查看文件)

显示文件内容到标准输出。

$ cat notes.md # Notes - Learn Git - Practice Linux - Master Vim
echo — 输出文字 / 写入文件

输出文字。> 覆盖写入文件,>> 追加写入。

$ echo "Hello World" Hello World $ echo "print('hi')" > app.py $ cat app.py print('hi')
cp — Copy File

复制文件或目录。格式:cp 源 目标

$ cp report.txt backup/ $ ls backup/ report.txt
mv — Move / Rename

移动文件或重命名。

$ mv old_name.txt new_name.txt $ mv report.txt documents/
rm — Remove

删除文件。加 -r 递归删除目录。

$ rm old.log $ rm -r temp_dir
find — 查找文件

按名称或模式搜索文件。

$ find -name "*.log" ./logs/access.log ./logs/error.log ./logs/old.log
df / du — 磁盘空间

df 查看磁盘总体使用,du 查看目录占用。

$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 51200000 18432000 32768000 36% / $ du 4.0K ./documents 2.0K ./projects 7.0K .
ps / top — 进程管理

ps 列出当前进程快照,top 实时显示进程状态。kill PID 终止进程。

$ ps PID TTY TIME CMD 1024 pts/0 00:00:00 bash 1089 pts/0 00:00:00 ps
chmod / chown — 权限管理

chmod 修改文件权限(rwx),chown 修改文件所有者。

$ chmod 755 script.sh $ ls -l script.sh -rwxr-xr-x 1 user user 128 Jul 3 10:00 script.sh
| 管道 / > 重定向

| 把前一个命令的输出传给后一个。> 输出到文件,2>&1 错误重定向到标准输出。

$ ls | grep ".log" access.log error.log old.log $ ps > processes.txt
git init — 初始化仓库

在当前目录创建一个新的 Git 仓库(.git 隐藏目录)。

$ git init Initialized empty Git repository in ~/project/.git/
git status — 查看状态

显示工作区和暂存区的状态:哪些文件修改了、暂存了、未跟踪。

$ git status On branch main Changes to be committed: new file: main.py Changes not staged: modified: README.md
git add — 添加到暂存区

把文件加入暂存区,准备提交。. 表示添加所有改动。

$ git add main.py $ git add . $ git add -A
git commit — 提交

把暂存区的修改永久保存到仓库历史。-m 添加提交信息。

$ git commit -m "add login feature" [main a3f8b2c] add login feature 2 files changed, 45 insertions(+)
git log — 查看历史

显示提交历史。--oneline 精简为一行一个提交。

$ git log --oneline a3f8b2c (main) add login feature e7d2190 initial commit
git branch — 分支管理

无参数列出所有分支。加名称创建新分支。-d 删除分支。

$ git branch * main feature $ git branch feature Branch 'feature' created.
git switch / checkout — 切换分支

切换到指定分支。-b 创建并切换。

$ git switch feature Switched to branch 'feature' $ git switch -b hotfix Switched to a new branch 'hotfix'
git merge — 合并分支

把指定分支的修改合并到当前分支。如果两个分支改了同一处,会产生冲突。

$ git switch main $ git merge feature Merge made by the 'ort' strategy. 3 files changed, 120 insertions(+)
git tag — 标签

给某个提交打标签(通常用于版本号)。

$ git tag v1.0 $ git tag v1.0
git reset / revert — 回退

reset 回退到指定版本(移除之后的提交)。revert 创建新提交来撤销指定提交(不丢失历史)。

$ git reset v1.0 HEAD is now at a3f8b2c $ git revert a3f8b2c [main e9c4d1a] Revert "add login feature"
git remote / push / pull

remote add 关联远程仓库。push 推送本地提交到远程。pull 拉取远程修改并合并。fetch 只拉取不合并。

$ git remote add origin https://github.com/user/repo.git $ git push Enumerating objects: 5, done. To https://github.com/user/repo.git e7d2..a3f8 main -> main $ git pull Already up to date.
三种模式:NORMAL / INSERT / COMMAND

NORMAL:默认模式,用于导航和操作(移动、删除、复制)。
INSERT:输入文字的模式,按 i 进入。
COMMAND:输入 : 开头的命令(保存、退出等)。

NORMAL → i → INSERT → Esc → NORMAL → : → COMMAND
i / a / o — 进入插入模式

i 在光标前插入。a 在光标后插入。o 在下方新建一行并插入。

Esc — 返回 NORMAL 模式

无论在哪个模式,按 Esc 都回到 NORMAL 模式。这是 Vim 最重要的操作。

h j k l — 方向移动

NORMAL 模式下:h=左 j=下 k=上 l=右。替代方向键,手不用离开主键盘区。

dd — 删除当前行

删除(剪切)光标所在行。删除的内容可以通过 p 粘贴。

yy / p — 复制粘贴

yy 复制当前行(yank)。p 在下方粘贴。

x — 删除字符

删除光标所在的单个字符。

u — 撤销

撤销上一步操作。

w / b — 按单词移动

w 跳到下一个单词开头。b 跳到上一个单词开头。

G / gg — 跳到文件首尾

G 跳到文件最后一行。gg 跳到文件第一行。

:w :q :wq :q! — 保存退出

:w 保存。:q 退出。:wq 保存并退出。:q! 强制退出(不保存)。

:w → "hello.txt" written :wq → 已保存并退出 :q! → 强制退出(丢弃修改)
:s/a/b — 替换

在当前行把 a 替换为 b

:s/hello/world → 当前行第一个 "hello" 被替换为 "world"

Level 1 — 认知探索

Recognition
⏱ ~15 min🎯 熟悉各工具的基本命令
🐧

Linux 基本导航

在命令浏览器中依次展开以下命令,理解它们的作用:

  1. pwd — 查看当前路径
  2. ls — 查看当前目录内容
  3. cd — 切换目录
  4. mkdir — 创建目录
  5. touch — 创建空文件
验收:能说出每个命令的英文全称和核心功能。
🌳

Git 基本流程

在命令浏览器中展开 Git 命令,理解完整工作流:

  1. git initgit addgit commitgit log
  2. 理解暂存区(staging area)的作用
验收:能画出 git add → commit → push 的流程图。
⌨️

Vim 模式切换

  1. 理解 NORMAL → INSERT → COMMAND 三种模式
  2. 记住 i 进入插入、Esc 返回、:wq 保存退出

为什么重要:这些命令是每天都会用到的基础。熟练掌握它们能大幅提升你的工作效率。

Level 2 — 引导练习

Guided Practice
⏱ ~20 min🎯 组合使用命令完成多步骤任务
🐧

Linux 文件操作场景

假设你要创建一个项目,需要执行以下命令序列。先在脑中想出命令,再去浏览器验证:

  1. 创建目录 myproject → 用什么命令?
  2. 在其中创建文件 app.py → 用什么命令?
  3. 向 app.py 写入 print("hello") → 用什么命令?
  4. 验证文件内容 → 用什么命令?
  5. 查看详细信息 → 加什么参数?

mkdir myprojecttouch myproject/app.pyecho "print('hello')" > myproject/app.pycat myproject/app.pyls -l myproject

🌳

Git 分支操作场景

你要开发一个新功能,正确的 Git 操作流程是什么?

  1. 创建并切换到 feature 分支
  2. 开发完成后添加和提交
  3. 切回 main 并合并

git branch featuregit switch feature → 开发 → git add .git commit -m "feature done"git switch maingit merge feature

为什么重要:理解命令的组合使用比死记硬背更重要。

Level 3 — 独立实现

Independent
⏱ ~25 min🎯 独立分析场景,写出命令序列
💻

系统管理员日常

你是系统管理员,需要完成以下任务。不看命令浏览器,自己写出命令序列:

  1. 进入 logs 目录,查看日志文件
  2. 删除旧日志 old.log
  3. 返回主目录,创建 backup 目录
  4. 把 documents/report.txt 备份到 backup
  5. 检查磁盘空间

cd logsls -lrm old.logcd ~mkdir backupcp documents/report.txt backupdf

为什么重要:不看提示独立写出命令,是从"知道"到"会用"的关键跨越。

Level 4 — 进阶挑战

Challenge
⏱ ~30 min🎯 综合 Linux + Git 完成项目初始化
🚀

全流程项目初始化

不看命令浏览器,写出完整的项目初始化命令序列:

  1. 创建项目目录 awesome-app 并进入
  2. 初始化 Git 仓库
  3. 创建 README.md 和 main.py
  4. 写入初始内容
  5. 首次提交
  6. 创建 feature 分支并切换
  7. 打标签 v0.1

mkdir awesome-app && cd awesome-app
git init
touch README.md main.py
echo "# Awesome App" > README.md
echo "print('hello')" > main.py
git add .
git commit -m "initial commit"
git branch feature
git switch feature
git tag v0.1

为什么重要:这是你每次新建项目都会做的事。形成肌肉记忆后,30秒就能完成。

Markdown 实时编辑器

在左侧输入 Markdown,右侧实时预览渲染效果。

自测

检验你对这些工具的理解程度。

术语表 — 命令缩写释义

点击卡片翻转,看看这些缩写背后的全称和含义。

总结与下一步

核心要点

  • Linux 是所有操作的基础:文件、进程、权限
  • Git 记录每一次修改,分支让并行开发成为可能
  • Vim 的模式切换是高效编辑的关键
  • Markdown 用纯文本实现结构化文档

下一步学习

  • Shell 脚本编写 — 自动化重复任务
  • Git 高级:rebase、cherry-pick、bisect
  • Vim 插件与配置:Neovim + LSP
  • Docker 容器化部署

实践建议

  • 每天在终端中工作 30 分钟,强制不用鼠标
  • 用 Git 管理所有笔记和项目
  • 用 Vim 编辑所有配置文件
  • 用 Markdown 写所有文档和笔记