vim
vim用法
基础命令
要习惯模式转换!
i
:插入,按ESC
回到Normal
模式x
:删除当前光标所在的一个字符:wq
:存盘+退出(:w
存盘,:q
退出):w
:后可以跟文件名dd
:删除当前行,并把删除的行存在剪贴板里p
:粘粘剪贴板
进阶命令
以
:
开始的命令,需要输入<enter>
回车
例如 ::q
要输入:q<enter>.
1.各种插入模式
a
:在光标后插入o
:在当前行后插入一个新行O
:在当前行前插入一个新行cw
:替换从光标所在位置后到一个单词结尾的字符
2.简单移动光标
0
: 到行头^
:到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)$
:到本行行尾g_
:到本行最后一个不是blank字符的位置。/pattern
:搜索 pattern 的字符串
3.拷贝/粘粘
p
:粘粘在当前位置之后P
:粘粘在当前位置之前yy
拷贝当前行
4.Undo/Redo
u
:undoCtrl-r
:redo
5.打开/保存/退出/改变文件(Buffer)
:e <path/to/file>
:打开一个文件:w
:存盘:saveas <path/to/file>
:另存为<path/to/file>
:x
,ZZ
或:wq
: 保存并退出 (:x
表示仅在需要时保存,ZZ
不需要输入冒号并回车):q!
: 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改:bn
和:bp
: 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件
再进阶命令
1.重复
.
: 重复上一次的命令N<command>
: 重复某命令N次
2.光标移动
NG
: 到第N行gg
:到第一行G
:到最后一行%
: 匹配括号移动,包括(
,{
,[
。(需要把光标先移到括号上)*
和#
: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*
是下一个,#
是上一个)- 按单词移动:
w
: 到下一个单词的开头e
: 到下一个单词的结尾
- 如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成(陈皓注:程序变量)
- 如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。(陈皓注:程序语句)
- 剩余更多高级命令可参考前面放的链接,简明Vim练级攻略
vim编程
- 在你放置文档的地方,右键打开终端
- 输入
sudo vim hello.c
,创建hello.c文件 - 进入vim,输入i(不用按回车,左下角出现
-- 插入 --
表示进入编辑状态) - 输入代码:
- 按Esc推出编辑模式,输入
:wq
,保存退出
GCC
GCC编译器识别的文件类别
后缀名 | 文件类型 |
---|---|
.c | C语言源代码文件 |
.a | 由目标文件构成的档案库文件 |
.C, .cc, .cxx | C++源代码文件 |
.h | 程序所包含的头文件 |
.i | 已经预处理过得C源代码文件 |
.ii | 已经预处理过得C++源代码文件 |
.o | 编译后的目标文件 |
.s | 汇编语言源代码文件 |
.S | 经过预编译的汇编语言源代码文件 |
基础用法
最基本格式
gcc [option] infile
- 将源文件生成可执行文件
gcc -o hello hello.c
或gcc hello.c -o hello
- 源文件是
hello.c
,要生成hello
可执行文件
- 源文件是
- 将源文件生成目标文件
gcc -c hello.c
GDB
错误分类
- 编译错误:gcc时出现错误
- 根据错误提示找
- 从网上搜索错误提示
- 总结编译错误解决方法
- 运行错误:gcc正确,运行时出错
- 利用GDB
- 利用
printf
打印调试
GDB用法
gdb调试的是可执行文件,编译的时候需要-g选项
常用的gdb使用方法
命令 | 意义 |
---|---|
help | 帮助 |
list | 列出正在调试程序的源文件内容 |
break | 设置断点 |
run | 执行程序 |
打印变量的值 | |
whatis | 查看变量类型 |
continue | 继续执行下一个断点 |
next | 单步调试(不进入函数) |
step | 单步调试(进入函数) |
GDB的使用
- 编写test.c文件
#include<stdio.h>
int main()
{
int sum = 0, i;
for(i = 1; i < 100; i++)
sum += i;
printf("%d\n", sum);
return 0;
}
- 生成可执行文件
gcc -g -o test test.c
- 启动GDB调试工具
gdb
- 读入程序
file test.c
- 列出正在调试程序的源文件内容
list
- 设置断点
break 6
- 利用
next
,continue
,print sum
不断调试
- 退出
quit