vi命令模式
- 复制文本
yyyank(拉拽)复制光标所在的行yw复制光标所在的位置到单词的结尾p粘贴内容到光标的后一个位置P粘贴到当前行
- 删除文本
dd删除光标所在的行dw删除光标所在的单词d0删除光标左边的内容(不包括本光标)d$删除光标右边的文本(包括本光标)dgg删除光标所在行之前的所有行(包括本行)dG删除光标之后的所有行 (包括本行)x删除光标所在位置的字符(可用del键)
- 修改文本
cc修改光标所在的文本r修改光标所在的字符R进入替换模式uundo撤销前一条命令
- 搜索字符串
/从上往下?向前搜索
vi末行模式
- 字符串的替换
:s/str1/str2用str2替换首次出现的str1:s/str1/str2/g替换行所有出现的str1:3,7 s/str1/str2/g替换3-7行所有的字符串,当前行可以用.最后行可以用$
- 文本内容的移动
:1,5 m 8把1到5行内容移动到第8行:3,4 co $把3-4行复制到最后一行 3.其他功能:80光标移动到80行:$-1光标移动到倒数第2行:w filename另存为:set设置(set number显示行号)(set nonumber不显示行号)
GCC基础
- 预处理
-E生成.i - 编译
-S生成.s - 汇编
-c生成.o - 链接
gcc hello.o -o hello生成可执行文件
命令格式gcc [选项] 要编译的文件 [选项] [-o文件名]
- 默认生成
a.out
GCC选项
-I可以向gcc的头文件搜索路径中添加到新目录-L指定库文件的搜索路径l链接特定的库文件-w关闭所有的告警Wall发出所有告警Werror把所有的告警转化为错误信息,并在告警发送时终止编译-ansi支持符合ANSI标准的C语言
GDB调试器
准备工作: -g加上-g才可以将调试信息加入到gcc输出的可执行程序中,否则不能正常调试
break(b)设置断点step(s)单步调试,且进入函数next(n)单步调试,不进入函数delete[断点号]删除断点c继续执行,直到下个断点r运行
make工程管理器
makefile eg1:
hello:hello.c
gcc hello.c -o hello#必须是Tap键
eg2:
program:main.o add.o dec.o mul.o div.o
gcc main.o add.o dec.o mul.o div.o -o program
main.o:main.c main.h
gcc -c main.c -o main.o
add.o:add.c
gcc -c add.c -o add.o
dec.o:dec.c
gcc -c dec -o dec.o
mul.o:mul.c
gcc -c mul.c -o mul.o
div.o:div.c
gcc -c div -o div.o
clean:#伪目标
rm *.o program