vim编辑器
- 命令模式
- 移动光标
h
: 左移l
: 右移j
: 下移k
: 上移gg
: 光标移动文件开头G
: 光标移动文件末尾0
: 光标移动到行首$
: 光标移动到行尾123G
: 跳转到第123行
- 删除(并不是真正的删除,实际上是剪切)
x
: 删除光标后一个字符X
: 删除光标前一个字符dw
: 删除光标开始位置的字,包含光标所在字符d0
: 删除光标前本行所有的内容,不包含光标所在字符D(d$)
: 删除光标后本行所有内容,包含光标所在字符dd
: 删除光标所在行n dd
: 删除指定的行数
- 撤销
u
:撤销ctr+r
:反撤销
- 复制粘贴
yy
: 复制当前行p
: 在光标所在位置向下新开辟一行粘贴P
: 从光标所在行开始粘贴
- 可视模式
v
: 按字移动
- 查找
/hello
: 从光标所在位置向后查找hello?hello
: 从光标所在位置向前查找hellon
: 下一个N
: 上一个
- 替换操作
r
: 替换当前字符
- 文本行移动
>>
: 文本行右移<<
: 文本行左移
- 查看Man Page
- 光标移动到函数上,
shift+k
3+shift+k
: 查看第三章的ManPage
- 光标移动到函数上,
- 移动光标
- 文本模式
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
- 替换指定行
10,30s/abc/123/g
:将10-30行中的abc全部替换成123
- 执行shell命令
- 末行模式下输入!后跟命令
- 替换一行
- 行跳转
- 分屏操作
- 水平:
sp
- 垂直:
vsp + 文件名
ctrl+ww
: 切屏
- 水平:
gcc
- 编译过程
静态库
- 命名格式
- lib开头
- 静态库名
- .a结尾
- 例:
libsort.a
- 制作
- 得到*.o
gcc a.c b.c c.c -c
- 得到静态库
libmytest.a
ar rcs libmytest.a a.o b.o c.o
- ar 工具不包含在gcc中
- r: 将文件插入静态库中
- c: 创建静态库,不管库是否存在
- s: 写入一个目标文件索引到库中,或者更新一个存在的目标文件索引。
- 查看库中的符号(函数,全局变量等)
nm libmytest.a
- 使用静态库
- 写法一
- :
gcc main.c 静态库路径 -o sum -I+头文件路径
- 例:
gcc main.c lib/libMyCalc.a -o sum -Iinclude
- :
- 写法二
gcc main.c -I+头文件路径 -L 静态库路径 -l 静态库名(去掉前缀和后缀) -o myapp
- 例:
gcc main.c -Iinclude -L lib -l MyCalc -o myapp
- 写法一
- 得到*.o
动态库(共享库)
- 命名格式
- lib开头
- 动态库名
- .so结尾
- 例:
libmytest.so
- 制作
- 生成"与位置无关"的目标文件
gcc -fPIC a.c b.c c.c -c
- 参数
-fPIC
表示生成与位置无关的代码 - 执行完毕后生成一系列的.o文件
- 制作动态库
gcc -shared -o libmytest.so a.o b.o c.o
- 使用方式与静态库类似
- 生成"与位置无关"的目标文件
- 配置路径
- 方法一
export LD_LIBRARY_PATH=库目录
- 临时设置,退出终端后就无效了
- 方法二
- 将方法一那句话写入家目录下
.bashrc
文件中
- 将方法一那句话写入家目录下
- 方法三
- 将库所在的绝对路径加入到
/etc/ld.so.conf
文件中 - 使用
sudo ldconfig -v
更新
- 将库所在的绝对路径加入到
LD_LIBRARY_PATH
- 指定查找共享库(动态链接库)时除了默认路径之外的其他路径
- 设置方法:用
export
来设置
- 方法一