vim
vim安装和使用
yum install vim
安装
vim a.txt
使用vim编译器打开a.txt文件
vim模式
- 命令模式——默认打开的模式,在该模式下可以通过移动光标位置,使用快捷键对文件内容进行复制、粘贴、删除等操作
- 编辑或者插入模式——按 I 进入编辑或者插入模式(INSERT),在该模式下可以对文件的内容进行编辑
- 底行模式——按 shift + ; 进入底行模式,可以在末行输入命令来对文件进行查找、替换、保存、退出等操作
- 按 ESC 返回命令模式
- 注意不能从插入模式直接进入底行模式,反之同理,因此,模式的切换都需先返回命令模式(按 ESC )
命令模式
- 复制粘贴
yy 复制当前行
2yy 复制当前行开始2行
p 粘贴
100p 粘贴100行
- 删除剪切
dd 剪切当前行
- 撤销恢复
u 撤销
ctrl + r 撤销u操作
- 光标定位
shift + g 光标定位到文件的末尾
gg 光标定位到文件的最开始
n + shift + g 光标定位到n行
shift + 6(^) 将光标定位到当前行的最开始
shift + 4($) 将光标定位到当前行的最末尾
w \ b 光标以单词为单位进行前后移动
h \ j \ k \ l 光标左 \ 下 \ 上 \ 右移动
- 大小写切换
shift + ~ 大小写切换
- 替换
shift + r 进入替换模式
r 替换一个字符
4r 替换四个字符
x 或者 shift + x 删除光标所在的字符,包括之前或者之后
底行模式
- 按 shift + ; 进入底行模式
- 保存退出
输入 q 退出(无修改)
输入 !q 不保存强制退出(有修改)
输入 wq 保存并退出
- 查找
输入要查找或搜索的关键词,然后回车
如果存在多个满足条件的结果。在搜索结果中切换上/下一个结果:N/n (大写N代表上一个结果,小写n代表next)
- 替换
s/要替换的关键词/替换后的关键词,该命令只能替换1次关键词
s/要替换的关键词/替换后的关键词/g(g=global全局替换),该命令替换多次,但只能替换一行内的关键词
%s/要替换的关键词/替换后的关键词,该命令替换整个文本内的每一行中满足条件的第一个关键词
%s/要替换的关键词/替换后的关键词/g,该命令替换整个文本内所有关键词
- 显示行号
set nu 打开行号或者取消行号
- 分屏
vs 文件名 分屏操作
ctrl + w 切换窗
*运行相应cmd指令
!cmd 不退出vim运行相应cmd指令
gcc
- gcc编译C语言,g++可以编译C语言也可编译C++
gcc mytest.c -o mytest
编译 mytest.c 生成 mytest执行文件
gcc -E mytest.c -o mytest.i
从现在开始对程序进行翻译,预处理完成后停止,生成mytest.i
gcc -S mytest.i -o mytest.s
从现在开始对程序进行翻译,编译完成后停止,生成mytest.s
gcc -c mytest.s -o mytest.o
从现在开始对程序进行翻译,汇编完成后停止,生成mytest.o
mytest.o是可重定向目标文件,无法执行
gcc mytest.o -o mytest
链接,生成mytest
gdb
- 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,即
gcc -g mytest.c -o mytest
;然后使用gdb mytest
进行调试
常用命令
- 显示
l+行号: 显示文件源代码,接着上次的位置往下列,每次列10行
- 退出
quit: 退出gdb
- 断点
b+行号: 在对应行号设置断点
info b: 查看断点(包含断点编号)
d+断点编号: 删除对应编号断点
disable/enable+断点编号:使能断点(关闭打开缎带你)
- 调试
r: 开始调试,如果没有设置断点,就直接运行结束
n:逐过程,F10
p 变量名:打印变量内容
s:逐语句,F11
bt: 查看当前的调用堆栈
finish: 将当前函数跑完就停下来
display 变量名:常显示
undisplay 变量编号:取消常显示
until:跳转到指定行,不建议
c:运行到下一个断点
make makefile
- make是一个命令,makefile是一个文件,包含依赖关系和依赖方法,主要用于项目创建和项目清理
- makefile举例如下
proc:proc.c
gcc -o proc proc.c
.PHONY:clean
clean:
rm -f proc
- 依赖关系
proc:proc.c
——proc文件依赖proc.c - 依赖方法
gcc -o proc proc.c
- make的执行规则是,只生成所有目标对象中的第一个,当然make会根据语法规则,递归生成第一个目标对象的所有依赖对象后再回头生成第一个目标对象,生成后退出;如下,只生成第一个hello文件
hello:hello.o
gcc hello.o -o hello
hello.o:hello.s
gcc -c hello.s -o hello.o
hello.s:hello.i
gcc -S hello.i -o hello.s
hello.i:hello.c
gcc -E hello.c -o hello.i
- 伪目标
.PHONY:clean
——.PHONY 来声明伪对象,每次都会执行 - makefile中的伪对象表示对象名称并不代表真正的文件名,与实际存在的同名文件没有相互关系,因此伪对象不管同名目标文件是否存在都会执行对应的生成指令。
- 伪对象的作用有两个,
- 使目标对象无论如何都要重新生成。
- 并不生成目标文件,而是为了执行一些指令。根据对伪对象的理解
使用
- 编写好相应的Makefile文件,如上
make
则成proc文件make clean
则执行伪目标rm -f proc
,清除文件proc