My_Linux 工具续

编辑器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 [网址]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值