Vim使用与设置

- 命令模式
- 保存与退出:ZZ
- 代码格式化:gg=G
- 光标移动:
- h:光标左移
- j:光标下移
- k:光标上移
- l:光标右移
- w:移动一个单词
- gg:移动到文件开头
- G:移动到文件尾部
- 0:移动到行首
- $:移动到行尾
- nG:移动到第n行
- 删除命令
- x:删除光标后一个字符,相当于Del
- X:删除光标前一个字符,相当于BackSpace
- dw:删除光标开始位置的字,包含光标所在字符
- d0:删除光标前文本行所有内容,不包含光标所在字符
- D/d$:删除光标后本行所有内容,包含光标所在字符
- dd:删除光标所在行(实质是剪切)
- ndd:从光标当前行向下删除n行
- 撤销与反撤销
- u:撤销
- ctrl+r:反撤销
- 复制与粘贴
- yy:复制当前行
- nyy:向下复制n行
- p:光标下行粘贴
- P:光标上层粘贴
- 可视模式
- v:方向键移动选中文本,按d删除(剪切),按y复制,p粘贴到光标后面,P粘贴到前面
- ctrl+v:v的列选中模式
- 替换操作
- r:替换一个字符
- R:向后替换字符(不限制字数)
- 查找命令
- 编辑模式
- i:光标前插入
- a:光标后插入
- I:行首插入
- A:行尾插入
- o:向下新建一行,插入
- O:向上新建一行,插入
- s:删除后面一个字符,插入
- S:删除当前行,插入
- 列编辑:ctrl+v进入列模式,移动光标选中多行,按I插入字符,按两次ESC执行修改
- 末行模式
- 保存退出
- :q:退出
- :q!:强制退出,不保存
- :w:保存,不退出
- :wq:保存退出
- :x:等于wq
- 替换操作
- :s/old/new/ :光标所在行的第一个old替换成new
- :s/old/new/g :光标所在行的所有old替换成new
- :m,ns/old/new/g :将m行到n行之间的old全部替换为new
- :%s/old/new/g :当前文件中所有old替换为new
- :%s/old/new/gc :同上,但每次需要用户确认
- :1,$s/old/new/g :当前文件中所有old替换为new
- 快速翻屏
- ctrl+u:up向上翻半屏
- ctrl+d:down向下翻半屏
- ctrl+f:front向前翻一屏(ctrl+d*2)
- ctrl+b:back向后翻一屏(strl+u*2)
- 执行shell命令
- :!shell
- 分屏操作
- 打开文件后分屏
- :sp :当前文件水平分屏
- :vsp :当前文件垂直分屏
- :sp 某文件 :与某文件水平分屏
- :vsp 某文件 :与某文件垂直分屏
- :ctrl+w+w :在多个窗口切换光标
- :wall/:wqall/:xall/:qall/:qall! :保存/保存退出/保存退出/退出/强制退出
- 打开文件前分屏
- 水平分屏:vim -o file1 file2 …
- 垂直分屏:vim -O file1 file2 …
- 打开文件后分屏
- Vim配置文件
- 用户级别配置文件:~/.vimrc
- 系统级别配置文件:/etc/vim/vimrc
- 常用设置
- GCC指令流程
- 预处理 :gcc -E a.c -o a.i
- 翻译成汇编 :gcc -S a.i -o a.s
- 编译 :gcc -c a.s -o a.o
- 链接 :gcc a.o -o a.out
- 简写 :gcc a.c -o a.out
- GCC常用参数
- -v:查看gcc版本号,与—version相同
- -E:生成预处理文件
- -S:生成汇编文件
- -c:编译,生成.o文件
- -I:指定头文件路径(include,I)
- -L:指定库文件路径(lib,L)
- -l:指定库名称(lib,l)
- -o:指定生成的目标文件名称
- -g:包含调试信息,使用gdb调试需要添加-g参数
- -On:编译优化,n=0~3,越大优化越多
- -Wall:提示更多警告信息
- -D:编译时定义宏定义
- 静态库(static library)
- 静态库制作
- gcc -c a1.c a2.c # 将a1.c,a2.c编译生成二进制文件a1.o,a2.o
- ar rcs libtest.a a1.o a2.o # 将a1.o,a2.o打包为test静态库
- linux中静态库文件前缀lib后缀.a
- r更新、c创建、s建立索引(不带-)
- 静态库使用
- gcc -o main.out main.c -L ./ -l test -I ./
- 将main.c编译为main.out
- -l test :使用库test(libtest)
- -L ./ :在./路径下寻找libtest
- -I ./ :在./路径下寻找所需头文件(./可省略)
- gcc -o main.out main.c -L ./ -l test -I ./

- 动态库(shared library)/共享库
- 动态库制作
- gcc -fpic -c a1.c a2.c
- gcc -shared a1.o a2.o -o libtest2.so
- linux动态库文件前缀lib后缀.so
- 简写:gcc -fpic -shared a1.c a2.c libtest2.so
- 动态库使用
- gcc -o main.out main.c -L ./ -l test2 -I ./
- 将main.c编译为main.out
- -l test2 :使用库test2(libtest2)
- -L ./ :在./路径下寻找libtest2
- -I ./ :在./路径下寻找所需头文件(./可省略)
- ldd main.out # 查看可执行文件依赖的库
- gcc -o main.out main.c -L ./ -l test2 -I ./

- file main.out # 查看main.out文件类型为ELF类型

- 如何让系统找到动态库
- 拷贝自己制作的共享库到/lib或者/usr/lib
- 临时设置:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径
- 永久设置到用户:将上述指令写入~/.bashrc,执行. ~/.bashrc
- 永久设置到系统(两种方法):
- 将上述指令写入/etc/profile
- 在/etc/ld.so.conf文件中加入库文件所在目录,执行sudo ldconfig -v


