1、vim 编辑器
正常模式与插入模式
Vim 的默认启动模式是正常模式 (Normal Mode),用于执行命令和导航。在正常模式下按 i 进入插入模式 (Insert Mode),可以编辑文本。按 Esc 返回正常模式。
插入模式的其他进入方式:
a:在当前光标后插入o:在当前行下方新建一行并插入I:移动到行首并插入A:移动到行尾并插入
保存与退出
在正常模式下执行以下操作:
:w:保存文件:q:退出(未修改时):q!:强制退出,放弃修改:wq或:x:保存并退出ZZ(大写):快捷保存并退出
批量注释
块操作注释(适合多行):
- 按
Ctrl + v进入可视块模式 - 用方向键选择要注释的行
- 按
I(大写),输入注释符号(如#或//) - 按
Esc,所选行首会自动添加注释符号
取消注释:
- 同样用
Ctrl + v选择注释符号 - 按
d删除
搜索与替换
搜索:
/keyword:向前搜索关键词?keyword:向后搜索n:跳转到下一个匹配项N:跳转到上一个匹配项
替换:
:%s/old/new/g:全局替换所有old为new:%s/old/new/gc:全局替换,每次询问确认:10,20s/old/new/g:替换第 10-20 行的内容
快速跳转
行内跳转:
0:跳转到行首^:跳转到第一个非空白字符$:跳转到行尾w:按单词向前移动b:按单词向后移动
文件内跳转:
gg:跳转到文件首行G:跳转到文件末行:n或nG:跳转到第 n 行(如:10或10G)Ctrl + o:返回上一个位置Ctrl + i:前进到下一个位置
标记跳转:
m{a-z}:设置标记(如ma)- ```a``:跳转到标记
a的位置 -
:跳转到上次编辑的位置
2、Git 基础操作与概念
git clone
用于将远程仓库克隆到本地。执行以下命令会将远程仓库复制到当前目录:
bash
git clone <repository-url>
可选参数 -b 指定分支:
bash
git clone -b <branch-name> <repository-url>
git add
将文件变更添加到暂存区。添加特定文件:
bash
git add <filename>
添加所有变更:
bash
git add .
git commit
提交暂存区的变更到本地仓库。附带提交信息:
bash
git commit -m "commit message"
修改上一次提交(未推送时):
bash
git commit --amend
git pull
拉取远程分支并合并到当前分支:
bash
git pull origin <branch-name>
等同于 git fetch + git merge。
git push
推送本地提交到远程分支:
bash
git push origin <branch-name>
强制推送(谨慎使用):
bash
git push -f origin <branch-name>
分支管理
创建分支
基于当前分支创建新分支:
bash
git branch <new-branch-name>
创建并切换到新分支:
bash
git checkout -b <new-branch-name>
切换分支
切换到已有分支:
bash
git checkout <branch-name>
合并分支
将指定分支合并到当前分支:
bash
git merge <branch-name>
删除分支
删除本地分支:
bash
git branch -d <branch-name>
强制删除未合并分支:
bash
git branch -D <branch-name>
删除远程分支:
bash
git push origin --delete <branch-name>
代码备份策略
常规备份
通过定期提交和推送到远程仓库实现备份:
bash
git add .
git commit -m "Backup: <date>"
git push origin main
使用标签(Tag)
为重要版本创建标签:
bash
git tag -a v1.0 -m "Release version 1.0"
git push origin v1.0
分支备份
创建专用备份分支:
bash
git checkout -b backup-<date>
git push origin backup-<date>
镜像仓库
添加额外远程仓库作为备份:
bash
git remote add backup <backup-repo-url>
git push backup --all
注意事项
- 强制推送 (
-f) 可能覆盖他人工作,需团队协商后使用 - 合并分支前建议先执行
git pull更新本地代码 - 敏感数据(如密码、密钥)不应提交到 Git
- 大型文件建议使用 Git LFS 或排除在版本控制外
3、Makefile + CMake基础
Makefile 编译规则
Makefile 用于定义编译规则,自动化构建过程。一个典型的 Makefile 包含目标、依赖和命令。
makefile
# 定义编译器和编译选项
CC = gcc
CFLAGS = -Wall -g
# 定义目标文件和可执行文件
TARGET = myprogram
OBJS = main.o utils.o
# 默认目标
all: $(TARGET)
# 生成可执行文件
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
# 编译每个源文件
%.o: %.c
$(CC) $(CFLAGS) -c $<
# 清理生成的文件
clean:
rm -f $(OBJS) $(TARGET)
多文件编译
多文件编译通常涉及多个源文件和头文件。Makefile 可以管理这些依赖关系。
makefile
# 定义源文件和头文件
SRCS = main.c utils.c
HDRS = utils.h
OBJS = $(SRCS:.c=.o)
# 生成可执行文件
myprogram: $(OBJS)
$(CC) $(CFLAGS) -o $@ $(OBJS)
# 自动生成依赖关系
%.o: %.c $(HDRS)
$(CC) $(CFLAGS) -c $<
clean:
rm -f $(OBJS) myprogram
CMake 工程配置
CMake 是一个跨平台的构建工具,可以生成 Makefile 或其他构建系统的配置文件。
cmake
# CMake 最低版本要求
cmake_minimum_required(VERSION 3.10)
# 项目名称
project(MyProject)
# 设置编译选项
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -g")
# 添加可执行文件
add_executable(myprogram main.c utils.c)
# 添加头文件目录
target_include_directories(myprogram PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
简单编译脚本
对于小型项目,可以使用简单的 Shell 脚本进行编译。
bash
#!/bin/bash
# 编译选项
CFLAGS="-Wall -g"
# 编译所有源文件
gcc $CFLAGS -o myprogram main.c utils.c
# 运行程序
./myprogram
总结
- Makefile:适合管理复杂的编译规则和依赖关系。
- 多文件编译:通过 Makefile 或 CMake 管理多个源文件和头文件。
- CMake:跨平台构建工具,适合大型项目。
- 简单编译脚本:适用于小型项目或快速原型开发。