编辑器vim
复制:
yy 复制当前光标所在行 [num]yy
p(小写) 粘贴到光标所在行的下一行
P(大写) 粘贴到光标所在行的上一行
替换:
r:替换光标所在字符(一次就替换一个 )
R:替换光标所到之处的字符 (一次能够替换多个)
使用esc回到正常模式
撤销:
u : 撤销上一次误操作的命令
ctrl+r :反撤销
更改:
Cw :更改光标所在处的字到字尾处
[c#w] : #代表的是几个字, 表示说能修改几个字
跳跃:
[#G] : #代表数字,举例子15G : 代表是跳转到15行的行首
安装VimForCpp(为了高效编程)
[该网址下有安装操作详细介绍]
https://gitee.com/HGtz2222/VimForCpp
[想让那个用户有权限就在那个用户底下实现//不建议在根目录下完成]
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
[在安装的用户下使用//这个是卸载指令]
bash ~/.VimForCpp/uninstall.sh
在zyb用户下使用,
我们需要cd ~
vim ~/.vimrc
把值改成4
其他
其他:
1.多行注释和多行去注释
注释:
1.ctrl+v
2.选择要注释的行, 使用hjkl继续选择
3.shift+i: 进入到插入模式
4.输入注释符号 (C/C++:"//",#
5.esc
多行去注释
1. ctrl+v
2.选择要删除的注释符号 hjkl进行选择)
3.x : 直接删除
替换字符串 (在底行模式/命令模式下进行替换)
替换光标所在行首个目标字符串
eg : printf("hello hello\n") ;
hello -> nihao
命令: s/[待要替换的目标字符串]/[替换成为那个字符串]/
s/hello/nihao/
替换光标所在行所有的目标字符串
命令: s/[待要替换的目标字符串]/[替换成为那个字符串]/g
全文替换目标字符串
命令: %s/[待要替换的目标字符串]/[替换成为那个字符串]/g
swap文件已经存在通常两种情况导致
1.[文件被其他人正在修改]
2.[进程非正常情况退出]//这种可以直接删除swap文件,然后再对文件进行操作
预处理/编译/汇编/链接
预处理:
宏替换,头文件就地展开,去注释
gcc/g++ -E main.c -o main.i
// -E告诉编辑器在编辑程序时只进行预处理
编译
语法语义的检测
源代码编译成为汇编指令
gcc/g++ -S test.c/test.i -o test.s
汇编:
将汇编指令转化成为二进程代码(机器可识别代码)
gcc/g++ -c test.c/test.i/test.s -o test.o
test.o 也被称之为test.o目标文件
链接: 将若干个二进制代码 (.o) 或者库文件, 链接起来生成可执行程序
动态编译/静态编译
3.静态编译 & 动态编译:
区别在于编译程序的时候, 是否增加了 -static
如果没有: 则为动态编译
如果增加了,则为静态编译
3.1 ldd命令
使用方式 ldd [filename]该命令可以查看可执行程序依赖的文件,
3.2 静态编译
-static
区别:
动态编译产生的可执行程序小,耗时小静态编译产生的可执行程序大,耗时大
动态库的后缀是 .so
该程序依赖c运行时库libc.so.6
调试器gdb
4.调试器: gdb
4.1 程序发布的两种方式:debug模式和release模式
4.2 调试的基础方法
4.3 三种使用场景
4.1程序发布的两种方式: debug模式和release模式
结论: 1.linux下debug版本的程序在编译的时候需要增加 -g命令行参数
2.默认不加-g,则为release版本
debug,release之间的区别, debug比release多了调试信息
gdb调试的时候一定是调试的是debug版本
4.2决调试的基础方法
gdb[binfile]
l: 查看源码, 从main函数开始
l func-name] :查看某个函数的源码
r: 程序执行起来
n: 逐过程:F10
s: 逐语句:F11
b [行号]:
i b: 查看断点
c : 继续执行
delete breakpoints: 删除所有断点
delete breakpoints n;删除序号为n的断点
disable breakpoints: 禁用断点
enable breakpoints: 启用断点
info locals:查看当前栈局部变量的值
p [变量名]: 查看变量的值
bt: 展示调用堆栈, 可以通过调用堆栈来代码执行的函数调用关系
q: 退出
自动化构建项目
5.自动化构建项目: make&makefile
5.1
make : 是一个命令
makefile : 是一个文件
make根据makefile的文件内容,进行解析,编译程序(构建项目)
5.2 makefile的文件格式
5.3 make的工作方式
5.2 makefile的文件格式
目标对象:要生成的可执行程序
依赖对象:生成可执行程序的时候依赖的源代码
编译命令:如何通过依赖对象生成目标对象
注意: 编译命令之前的空白部分时由table键形成的
一般操作
makefile操作
2.若依赖对象的最后一次修改时间小于目标对象的最后一次修改时间
则不生成
5.4 makefile文件当中的自定义变量和内置变量
内置变量:
$^ 所有依赖的对象
$@ 目标对象
$< 代表第一个依赖对象自定义变量
自定义变量
可以自己给变量起名字, 后续使用$符号进行解析
CTAGS会被自动解析为 -g
定义伪目标//即便依赖对象早于生成对象//仍然生成
git
6.版本管理工具: git
6.1 克隆仓库
git clone xxxx
6.2 提交到本地仓库
git add
git commit -m log
6.3 推送到远端仓库
git push
6.4 将远端仓库内容更新到自己本地仓库
git pull
6.5 git status
在windows下创建仓库
git clone [网址]