目录
一. vi编辑器
1. 打开 vi 编辑器
vi 文件名 将文件在vi编辑器中打开,如果文件存在,直接打开,如果文件不存在,会新建并打开。
2. vi 编辑器的三种模式
2.1 命令行模式
打开一个文件默认的就是在命令行模式下,命令行模式一般是用来复制和粘贴代码的。其他模式下按 esc 按键就可以回到命令行模式。
2.2 插入模式
插入模式才是能用来插入文本的,进入插入模式的方式:
在命令行模式下:
i 在光标前开始插入
I (大写的i)在光标所在行的行首开始插入
a 在光标后开始插入
A 在光标所在行的行尾开始插入
o 在光标所在行下面新起一行开始插入
O 在光标所在行上面新起一行开始插入
2.3 底行模式
在命令行模式下 输入冒号 : 就进入了底行模式
底行模式主要是用来保存退出的
:w 保存
:q 退出
:wq 保存并退出
:q! 不保存强制退出
3. 命令行模式常用的操作
方向键:h(左) j(下) k(上) l(右)
yy 复制光标所在行
p 在光标所在行下面开始粘贴
P 在光标所在行上面开始粘贴
nyy n是一个数字,表示从光标所在行开始 复制n行
dd 剪切光标所在行
ndd n是一个数字,表示从光标所在行开始 剪切n行
gg 将光标定位到文件开头
G 将光标定位到文件结尾
ngg n是一个数字,表示将光标定位到第n行
u 撤销上一步的操作 ctrl + r 重做(反撤销)
/word 在全文中高亮显示所有的单词word 按n键跳转到下一个 N键跳转到上一个
shift zz 保存退出 等同于 :wq
4. 底行模式常用操作
:w 保存
:q 退出
:wq 保存并退出
:q! 不保存强制退出
:vsp 文件名 左右分屏打开说个文件同时编辑
:wqa 保存退出所有已经打开的文件
:set nonumber 取消显示行号
:set nonu 也可以
:set number 显示行号
:set nu 也可以
:noh 取消查找后的高亮显示
:%s/aa/bb/g 将全文的aa都替换成bb
:%s/aa/bb/gc 将全文的aa都替换成bb,每次替换会询问 y替换 n不替换
:m,ns/aa/bb/g 将第m行到第n行的所有aa替换成bb
二. helloworld 程序说明
#include <stdio.h>
// # 以#号开头的行 称为 预处理行
// #include 表示要包含头文件
// stdio 是指 standard input & output (标准输入输出)
// stdio.h 是标准输入输出的头文件 我们使用的 printf 就是在这个头文件里声明的
//int 函数的返回值类型 --先不用管
//main 主函数 每一个程序必须有且仅有一个
//main函数是程序的入口
// ()圆括号 []方括号 {}花括号 //() 里面的是main函数的参数 先不用管 不写也可以 但是 ()必须要写
int main(int argc, const char *argv[]) {
//{} 内部的语句称为 函数体 也就是程序要执行的代码
//printf 是系统给我们提供的输出的函数
//功能就是将要输出的内容 打印到终端
//"" 引住的就是要输出的内容 \n 表示换行的意思 就是回车
printf("hello wrold\n");
//C语言中每条指令后面都要有一个 分号 ;
//函数的返回值 先不用管
return 0; }
//单行注释
/* 多行 注释 */
#if 0 多行 注释 #endif
三. gcc 编辑器
编程语言分为 编译型语言 和 解释型语言。
编译型语言:就是在执行之前,需要专门有一个编译的过程,
将人类能识别的高级语言转换成方便计算机识别的低级语言。
优点:运行之前已经编译过了,每次运行无需重新编译,执行效率相对较高。
缺点:依赖于编译器,跨平台性相对较差。
例如:C C++ 都是编译型语言。
解释型语言:无需在执行之前单独编译,而是在执行的过程中,由解释器来逐行翻译给计算机看
又叫做 脚本语言
优点:跨平台性相对较好。
缺点:每次执行都需要解释器逐行翻译,执行效率相对较低。
例如:shell python都是解释型语言。
所谓的编译器就是,能将高级语言翻译成低级语言的一个工具。
我们linux系统中 C语言的编译器使用的是 gcc
四. 编译方式
4.1 简单明了
gcc xxx.c xxx.c是你的 .c 文件名
这种编译方式会在当前路径下生成一个 名字叫做 a.out 的可执行文件
使用 ./a.out 就可以执行它了。
4.2 自定义可执行文件名
gcc xxx.c -o 要生成的可执行文件名
这种编译方式默认会在当前路径下生成一个 自己指定的名字的 可执行文件
4.3 按照流程分布编译
预处理-->编译-->汇编-->链接
1.预处理:头文件的展开、注释的删除、宏定义的替换
gcc