vim编辑器
安装 : sudo apt-get install vim
命令模式
移动光标
gg – 光标移动文件开头
G – 光标移动到文件末尾
0 – 光标移动到行首
$ – 光标移动到行尾
123G – 跳转到第123行
删除(删除相当于剪切)
x – 删除光标后一个字符
X – 删除光标前一个字符
dw – 删除单词
d0 – 删除光标前本行所有内容,不包含光标所在字符
D(d$) – 删除光标后本行所有内容,包含光标所在字符
dd – 删除光标所在行
n dd – 删除指定的n行数
撤销
u – 撤销
Ctr + r – 反撤销
复制粘贴
yy – 复制当前行
n yy – 复制 n 行
p – 在光标所在位置向下开一行 粘
P – 在光标所在位置向上开一行 粘
可视模式(选字)
v – 按字移动
查找
/hello – 从光标所在位置向后查找 hello(n: 下一个 ; N:上一个)
?hello – 从光标所在位置向前查找 hello(n: 下一个 ; N:上一个)
文本行移动
1)>> – 文本行右移
2)<< – 文本行左移
文本输入模式
i – 插入光标前一个字符
I – 插入行首
a – 插入光标后一个字符
A – 插入行未
o – 向下新开一行,插入行首
O – 向上新开一行,插入行首
s – 删除光标所在的字符
S – 删除当前行
末行模式
行跳转
:123 – 跳转到123行
替换
替换一行
: s/abc/123 – 将当前行中的第一个abc替换为123
: s/abc/123/g – 将当前行中的abc全部替换为123
替换全部
:%s/abc/123 – 将所有行中的第一个abc替换为123
:%s/abc/123/g – 将所有行中的abc全部替换为123
替换指定行
:10,30s/abc/123/g – 将10-30行中的abc全部替换为123
分屏操作
sp – 水平将屏幕分为两部分
vsp – 垂直将屏幕分为两部分
sp(vsp) + filename – 水平或垂直拆分窗口显示两个不同的文件
Ctrl + ww 切屏
用vim做IDE
系统级配置文件目录 – /etc/vim/vimrc
用户级配置文件目录 – ~/.vim/vimrc
保存退出
w – 保存
q – 退出
q! – 退出不保存
wq – 保存并退出
gcc(E S c)
为生成文件指定名称:-o
指定头文件目录:-I(大写的i)+目录
编译时定义宏:-D
编译优化:-O(大写的o)n n=0∼3
-O0 - 没有优化
-O1 - 缺省值
-O3 - 优化级别最高
提示更多警告信息:-Wall
只编译子程序(生成.o文件,用于生成静态/动态库文件):-c
生成预处理文件:-E
包含调试信息:-g (gdb调试的时候必须加此参数)
静态库
命名格式
lib + 静态库名 + .a(libsort.a)
步骤
- 得到.o文件(gcc -c hello.c -o hello.o)
- 得到静态库文件libmytest.a(ar rcs libmytest.a hello.o )
ar – 工具不包含在gcc中
r – 将文件插入静态库中
c – 创建静态库,不管库是否存在
s – 写入一个目标文件索引到库中,或者更新一个存在的目标文件索引。 - 第一种使用静态库方法(用静态库和mian.c生成可执行文件.out)
gcc + main.c + -L 静态库路径 + -l(小写L)静态库名 + -I(大写i)头文件目录 + -o 可执行文件名
gcc main.c -L./ -lmytest -I./ -o app
-L – 指定库所在的路径
-l – 指定库的名字(掐头去尾:去掉前缀 lib,去掉后缀 .a)
-I – 头文件目录位置 - 第二种使用静态库方法
gcc + 源文件 + -I(大写i)头文件 + libxxx.a
优点
寻址方便,速度快
库被打包到可执行程序中,直接发布可执行程序即可使用
缺点
静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。
如果静态函数库改变了,那么你的程序必须重新编译。
使用场合
在核心程序上使用,保证速度,可忽视空间
动态库(共享库)
命名格式
lib + 库名称 + .so (libmytest.so)
制作
- 生成“与位置无关”的目标文件 – gcc -fPIC -c hello.c (参数 -fPIC 表示生成与位置无关代码)
- 制作动态库 – gcc -shared -o libmytest.so hello.o(参数:-shared 制作动态库 ; -o:重命名生成的新文件)
- 使用动态库 – gcc main.c -L./ -l(小写L)mytest -I(大写i)./ -o app
-L – 指定库所在的路径
-l – 指定库的名字(掐头去尾:去掉前缀 lib,去掉后缀 .a)
-I – 头文件目录位置
4.手动连接动态库(查看依赖的动态库:ldd app 发现mytest找不到)
手动连接动态库
- 临时设置:export LD_LIBRARY_PATH=库路径,将当前目录加入环境变量,但是终端退出了就无效了,常用于测试。
- 永久设置:将上条写入家目录下.bashrc文件中,需要重新启动终端(ls -a 因为是隐藏文件)
- 粗暴设置:直接将动态库文件libmytest.so文件拷贝到/usr/lib/【/lib】目录下。(比较傻逼)
- 将libmytest.so所在绝对路径追加入到/etc/ld.so.conf文件,使用sudo ldconfig -v 更新