Linux开发工具(vim、gcc、gdb、make、git/github)
文本编辑器:vim(功能最强大)
1、使用:
三种模式:命令行模式、插入模式、底行模式
“vim+空格+文件名” 例如vim hello.c
此时是命令行模式 无法插入数据 需要进入插入模式 :按i或者a
退出插入模式 按esc 切换到命令行模式 ,再按“shift+:” 进入底行模式 输入wq! 保存退出 (!强制退出)
set number 显示行号 set autoindent缩进 set cursorline标记行 vim /etc/vim/vimrc 编辑配置文件 set number
修改之前做备份 拷贝到home或共享文件夹
vim命令模式的操作(粘贴 复制 删除 恢复)
粘贴 p: 在光标之后粘贴。
P: 在光标之前粘贴。
删除:c[n]w: 改写光标后1(n)个词。
c[n]l: 改写光标后n个字母。
c[n]h: 改写光标前n个字母。
[n]cc: 修改当前[n]行。
[n]s: 以输入的文本替代光标之后1(n)个字符,相当于c[n]l。
[n]S: 删除指定数目的行,并以所输入文本代替之。
d[n]w: 删除(剪切)1(n)个单词
d[n]l: 删除(剪切)光标右边1(n)个字符。[n]x: 剪切光标右边n个字符,相当于d[n]l。
d[n]h: 删除(剪切)光标左边1(n)个字符。 [n]X: 剪切光标左边n个字符,相当于d[n]h
d0: 删除(剪切)当前位置到行首的内容
[n] dd: 删除(剪切)1(n)行。
:m,nd<cr> 剪切m行到n行的内容。
d1G或dgg: 剪切光标以上的所有行。
dG: 剪切光标以下的所有行。
daw和das:剪切一个词和剪切一个句子,即使光标不在词首和句首也没关系。
d/f<cr>:这是一个比较高级的组合命令,它将删除当前位置 到下一个f之间的内容。
复制:y: 复制在可视模式下选中的文本。
yy or Y: 复制整行文本。
y[n]w: 复制一(n)个词。
y[n]l: 复制光标右边1(n)个字符。
y[n]h: 复制光标左边1(n)个字符。
恢复:[n] u: 取消一(n)个改动。
:undo 5 – 撤销5个改变。
:undolist – 你的撤销历史。
ctrl + r: 重做最后的改动。
U: 取消当前行中所有的改动。
:earlier 4m – 回到4分钟前
:later 55s – 前进55秒
vim底行模式的操作(查找 替换 多文件编辑 另存为)
查找:/something: 在后面的文本中查找something。
?something: 在前面的文本中查找something。
/pattern/+number: 将光标停在包含pattern的行后面第number行上。
/pattern/-number: 将光标停在包含pattern的行前面第number行上。
n: 向后查找下一个。
N: 向前查找下一个。
替换:r: 替换光标处的字符,同样支持汉字。
R: 进入替换模式,按esc回到正常模式。
多文件编辑:使用:next(:n)编辑下一个文件。
:2n 编辑下2个文件。
使用:previous或:N编辑上一个文件。
使用:wnext,保存当前文件,并编辑下一个文件。
使用:wprevious,保存当前文件,并编辑上一个文件。
使用:args 显示文件列表。
:n filenames或:args filenames 指定新的文件列表。
vi -o filenames 在水平分割的多个窗口中编辑多个文件。
vi -O filenames 在垂直分割的多个窗口中编辑多个文件
另存为:
10个命令:
vim粘贴: p 复制整行 nyy 删除:dd ndd(多行) 恢复:u
查找:/+查找内容 或 ?+查找内容
替换:s/hello/hi 将hello替换为hi(第一个) s/hello/hi/g(替换全行) 5,10 s/hello/hi/g(5到10行) 5,10 s/hello/hi/gc (5到10行每个询问是否替换)
%s/hello/hi/g (全文) g:全行 c:询问 %:全文替换
另存为:3,12 w demo.c (3到12行另存到) r demo.c() w为写 r为读
多文件编辑:vim+多个文件 n demo.c(跳转到demo.c)n+空格+文件名 files:查看所有编辑文件 法二:底行模式下 sp+分屏显示的文件 Ctrl+w+g 下一个 Ctrl+g+w 上一个
Ctrl+n 补全检索内容
Linux开发工具
编译器gcc(编译选项、静态库和动态库的制作和使用)
gcc的特点:能过实现交叉编译 ***交叉编译:在当前CPU平台能够编译出在其他CPU平台运行的代码 不同CPU有不同的汇编
预处理 编译 汇编 链接 硬件的复杂操作用:c
预处理:头文件展开 宏替换 条件编译 预处理指令#line #error 只进行预处理 :gcc -E 文件名 预处理不检查语法错误
gcc-S 文件名 编译阶段检查语法错误
gcc-c 生成目标文件 汇编阶段
链接:建立符号表
gcc 文件名(demo.c) -o 重命名 (demo)
gcc-w 关闭警告 gcc-wall 警告打开
库文件:保存函数和变量 只能使用 不能看到其实现 静态库:使用静态库编译程序 是在编译时加载 后缀 .a 动态库:使用动态库编译程序 是在运行时加载 后缀 .so
区别:静态库生成的程序较大 占用内存大 后者反之
Linux的库文件存放位置:/lib /usr/lib
头文件展开:vim /usr/include/stdio.h
gcc -E 文件名(hello.c) > hello.i
#include<stdio.h> #include"stdio.h" 区别 :搜索路径不同 前:系统的头文件目录(/usr/include)后:先在当前目录搜索 然后到系统的头文件目录
pc:x86体系结构 移动终端:arm系统结构
-r:指定头文件的第三方搜索路径