一、vim文本编辑器:
可以直接在终端下采用纯键盘操作的一款文本编辑器,号称编辑器之神,可以二次升级、可以扩展
1.基础用法:
1、进入vim:
输入 vim file.c 文件存在则打开,否则新建并打开
2、输入i:
进入编辑模式,编写代码
3、保存退出:
按Esc键,输入ZZ保存并退出
2.vim的三大模式:
正常模式:(打开文件时的默认模式)
一般用于阅读文件,或者用于快捷键对文本快速修改
编辑模式:
一般用于输入内容、编辑文件
行底模式:
一般用于对vim的临时配置、或者执行一些高级操作
3.模式之间的切换:
正常 输入i -> 插入
插入 按Esc -> 正常
正常 输入: -> 行底
行底 按Esc -> 正常
4.正常模式下的常用操作:
光标移动:
h左 j下 k上 l右
gg 光标跳转到第一行
G 光标跳转到最后一行
n加回车 光标向下跳转n行
n+回车 光标向上跳转n行
nG 直接跳转到第n行
vim file.c +n 从第n行进入文件
删除操作:
dd 删除光标所在的一行代码
ndd 删除n行
x 删除一个字符
nx 删除n个字符
dw/de 删除一个连续的字符串(是否删空格)
d^ 从当前光标删除到行首
d$ 从当前光标删除到行尾
dgg 从当前光标删除到第一行
dG从当前光标删除到最后一行
复制代码:
yy 复制一行代码
nyy 复制n行代码
p 粘贴到当前光标的下一行
P 粘贴到当前光标的上方
移动代码:
删除的内容还存储在粘贴板上,使用p\P可以粘贴出来,从而达到移动代码的效果
xp 交换两个字符
替换代码:
r 替换光标所在的一个字符
cw 替换一个连续字符串
R 进入替换模式
(insert键切换替换和插入模式)
撤销操作:
u 撤销上一次操作
Ctrl+r 取消上次的撤销操作
5.进入插入模式的方式:
i 在当前光标前面进入插入模式
I 光标跳转到当前行首,进入插入模式
a 在当前光标后面进入插入模式
A 光标跳转到当前行尾,进入插入模式
o 在当前行的下面插入一行空白行,进入插入模式
O 在当前行的上面插入一行空白行,进入插入模式
6.插入模式下的操作:
Ctrl+p/n 自动补全,变量名\函数名\宏
Ctrl+i 相当于Tab键
Ctrl+j 相当于回车键
Ctrl+c 相当于Esc键
vim自定义功能:
Ctrl+z 保存并退出
Ctrl+x 保存并编译并运行
Ctrl+p(正常) 自动添加头文件和main函数
7.行底模式下的操作:
:w 写入
:q 退出
:q! 强制退出
:wq 保存退出
:x 保存退出
:X 加密码
:set key=(空格) 删除密码
注意:必须:wq 才能生效
:!cmd 在vim中执行cmd系统命令 !ls
:/key 查找关键字key,n下一个,N上一个
:%s/old/new 把old关键词替换为new
:set nu 显示行号
:set nonu 取消行号
:>n n行代码向右缩进一次
:<n n行代码向左缩进一次
注意:在行底模式下对vim进行配置只能是临时有效,关闭后会失效,如果想长期有效需要对vim的配置文件(~/.vimrc)进行设置
8.如何配置vim:
1、vim ~/.vimrc 打开配置文件
2、写完后,回到正常模式,ZZ退出
3、下次打开vim就生效了
9.学习使用vim的建议:
1、大概两周的适应时间
2、一招鲜吃遍天
3、教程vimtutor
二、C语言简介:
BCPL->New B->C->UNIX->Minix->Linux->gcc
C语言诞生于1971~1973年,美国贝尔实验室,肯.汤普逊和丹尼斯.里奇
C语言是专门为了编写操作系统而诞生的语言,天生适合对硬件编程,以运行速度快而著称,而且C语言非常适合编写数据结构和算法
因为C语言出现时间太早,所以有很多缺陷,因为没有想到普通人也可以编程,但是很多前辈总结避免这些缺陷或陷阱的经验
《C语言三剑客》-》《C陷阱与缺陷》《C与指针》
《C程序设计语言》
C语言的语法非常自由,自由意味着危险,自由源于自律
C89语法标准,旧的系统中的默认标准
C99语法标准,对C语言的扩展和增强 -std=gnu99
C11语法标准,全新的升级
1、 C语言第一个程序:
1.
#include <stdio.h>
程序员所编写的代码都不是标准的C代码,需要一段程序翻译成标准C代码,负责翻译的程序叫做预处理器,翻译的过程叫做预处理,被翻译的语句叫做预处理指令,以#开头的语句都是预处理指令
#include 的功能是把一个头文件导入(拷贝)到当前位置
#include <xxx.h>
从系统指定的路径下查找并加载头文件
#include "xxx.h"
先从当前工作路径查找,如果找不到再从系统指定的路径查找并加载
2.
stdio.h
头文件:以.h结尾,里面存储的是一些辅助性的代码,绝大多数都是函数的声明
源文件:以.c结尾,里面存储的是实际的功能性的代码
C语言标准委员会为C语言以函数形式提供的一些基础功能,这些函数都被封装在libc.so
然后通过很多的头文件对不同功能的标准库函数进行了说明,stdio.h就是其中之一,常用:stdlib.h string.h
3.
int main()
C语言中函数是管理代码的最小单位,一个函数就是一个功能的实现
main函数是程序的入口,有且只有一个
int 是一种数据类型,表示main函数的执行结果是一个整数值
4.
return 的作用:
1、返回一个执行结果给函数的调用者
正数 出现异常(别人导致)
0 一切正常
负数 出现错误(自己导致)
2、提前结束函数
main函数遇到return语句程序结束
main函数是由操作系统调用,所以它的返回值给了操作系统,反应了程序是如何结束的
{
printf("Hello World!\n");
return 0;
}
5.
printf/scanf 是标准库的输出输入函数,一般用于调试代码
printf("---------\n");
xxxx
printf("---------\n");
6.
转义字符:键盘上有一些不好直接表示的符号,通过一些特殊字符搭配来表示,这种字符搭配称为转移字符
\n 换行
\t 制表符,Tab键
\a 铃响
\b 光标后退一个字符
printf("\b \b") 退格效果**
\r 光标回到行首
%% 显示一个%
\\ 显示一个\
注意:C语言是以分号作为一行代码的结束标志,使用大括号来划分代码
注意:必须使用英文输入法
2.编译器:
负责把人能看得懂的文本文件,翻译成计算机能看得懂的二进制文件,由预处理器、编译器、链接器组成
gcc编译器是GNU社区为了编译Linux内核代码而开发一款免费的编译器,默认语法标准是C99或者C89
常用的编译参数:
-E 只显示预处理的结果
-S 生成汇编文件
-c 只编译不链接
-o 指定编译结果的名字
-I 指定头文件的加载路径 -I path
-l 指定要使用的代码库 -lm导入数学库
-Wall 尽可能多地产生警告信息
-Werror 把警告当错误处理
-std 设置编译语法标准 -std=gnu89/99
3、C代码如何从源文件变成可执行文件的过程:
1、预处理:把源文件翻译成预处理文件
gcc -E xxx.c 显示预处理结果到终端
gcc -E xxx.c -o xxx.i 把预处理的结果存储到xxx.i预处理文件中
2、编译: 把预处理文件翻译成汇编文件
gcc -S xxx.i 生成以.s结尾的汇编文件
3、汇编: 把汇编文件翻译成二进制的目标文件
gcc -c xxx.s 生成以.o结尾的目标文件
4、链接: 把若干个目标文件合并成一个可执行文件
gcc a.o b.o c.o ... 生成a.out可执行文件
4. C语言中的文件类型:
.c 源文件
.h 头文件
.h.gch 头文件的编译结果文件,会被优先使用
.i 预处理文件
.s 汇编文件
.o 目标文件
.so 共享库文件
.a 静态库文件