1、vim编辑器的使用
vi – vim
vim 是从 vi 发展过来的一款文本编辑器
格式:vi a.txt
工作模式
(1)命令模式 – 打开文件之后,默认进入命令模式
命令模式下的操作:
-
光标的移动:
H——前
J——下
K——上
L——后
将光标移动到行首: 0
将光标移动到行尾: $
将光标移动到文件开始位置: gg
将光标移动到文件末尾: G
行跳转: nG(n是自然数) -
删除操作:
删除光标后边的字符: x
删除光标前边的字符:X
删除单词: dw (光标移动到单词的开始位置, 否只能删除一部分)
删除光标到行首的字符串: d0
删除光标到行尾的字符串:D
删除光标当前行: dd
删除多行: ndd (n – 自然数)
剪切 == 删除 -
撤销操作
撤销: u
反撤销: ctrl + r -
复制粘贴
复制: yy
复制多行: nyy
粘贴: p (光标所在行的下一行)
粘贴: P (光标所在行) -
可视模式
切换到可是模式: v
选择内容: hjkl
操作—— 复制: y 删除: d -
查找操作
1) /hello
2) ?hello
3) # (把光标移动到查找的单词身上,按#)
遍历时的快捷键: N/n -
查看man文档:man man
(2) 编辑模式 – 需要输入一些命令,切换到编辑模式
文本模式下的操作:
切换到文本模式:a -- 在光标所在位置的后边插入 A -- 在当前行的尾部插入 i -- 在光标所在位置的前边插入 I -- 在光标所在行的行首插入 o -- 在光标所在行的下边建一个新的行 O -- 在光标所在行的上边建一个新的行 s -- 删除光标后边的字符 S -- 删除光标所在的行
(3)末行模式 – 在末行模式下可以输入一些命令
末行模式下的操作:
- 查找:
: s/tom/jack/g(替换光标所在行d的所有tom替换成jack)
:%s/tom/jack(替换光标所在行,tom被替换成jack)
:20,25s/tom/jack/g(20-25行被替换) - 保存退出:
q: 退出
q!: 退出不保存
w: 保存
wq: 保存退出
x == wq
在命令模式下保存退出: ZZ - 分屏操作:
1>. 水平分屏——:sp
2>. 垂直分屏——:vsp
分屏之间的切换——Ctrl ww
关闭:qalll、wqall、q(光标位于哪个就关闭哪个)
2. 静态库的制作
(1) 命名规则
lib + 库的名字 + .a
例如:libmytest.a
(2)制作步骤:
- 1、生成对应的.o文件 – .c --> .o -c
- 2、将生成的.o文件打包: ar rcs + 静态库的名字(libMytest.a) + 生成的所有的.o
(3)发布和使用静态库,包含lib和include
(4)优缺点
优点:发布程序时,不需要提供对应的库;加载库的速度快。
缺点:库被打包到应用程序,导致库的体积很大;库发生了改变,需要重新编译程序。
3. 共享库的制作
(1)命名规则
lib + 名字 + .so
(2)制作步骤
- 1、生成与位置无关的代码 (生成与位置无关的.o)
- 2、将.o打包成共享库(动态库)
(3)发布和使用共享库
- 1、gcc main.c lib/libmytest.so -o app -Iinclude
- 2、gcc main.c -Iinclude -L + 库所在目录 -l + 库名 -o + 生成文件名
(4)解决程序执行时动态库无法被加载的问题 - 临时测试
环境变量: LD_LIBRARY_PATH=将动态库的路径设置给该变量
将设置的值,导入到系统环境变量中: export LD_LIBRARY_PATH
当终端关闭,设置会失效。
(5)优缺点
优点:执行程序体积小;动态库更新了,不需要重新编译程序(前提是接口不改变)。
缺点:加载速度慢;发布程序时,需要将动态库提供给用户。