#define # 数字
vi的三种模式:命令行模式,插入模式,底行模式。
命令行:控制光标移动,删除,移动复制某区段。
进入插入行,底行模式。
插入模式:输入文字,ESC返回命令行。
底行模式:保存,退出,设置编辑环境,如寻找字符串,列出行号等。
△一般命令行与底行合并,所以分为命令行和插入模式。
创建与退出步骤:
vi 文件名 创建文件并进入 命令行模式
i 注意配置完vim后任意键即可进入插入行,在输入文字后也可直接删除
进入插入模式 删除字需要按esc返回命令行模式
底行模式下 shift ZZ 保存退出
命令行模式下
:w 文件名 文章将以指定文件名保存
:wq 保存退出
:qi 不保存强制退出
(命令行模式下) 默认在命令行
复制与删除
删除:
x:按一次,删除光标所在位置的1个字符 (相当于剪切,也放在缓冲区中)
#x:删除光标所在位置的1个字符及往后#-1个字符
//X:按一次,删除光标所在位置前面1个字符
//#X:删除光标所在位置前面#个字符
dd:删除光标所在行
#dd:从光标所在行开始删除#行
复制:
//yw:将光标所在之处到字尾的字符复制到缓冲区中 p:将缓冲区字符粘贴到光标后面
//#yw:将光标所在之处到下面#-1行复制到缓冲区 p:将缓冲区字符插入到光标后面
yy:将光标所在行复制到缓冲区
#yy:将光标所在行及下面#-1行复制到缓冲区
p:将缓冲区内的字符粘贴
u:撤销上一次操作,可多次撤销
光标移动:
方向键上下左右 && h 左j下 k上 l右
Ctrl+b 屏幕往前移动一页
Ctrl+f 屏幕往后移动一页
Ctrl+u 屏幕往前移动半页
Ctrl+d 屏幕往后移动半页
Ctrl+g 列出光标所在行的行号
#+方向键 向上向下移动几行向左向右移动几列
gg/1G 光标移动到文章开头
G 光标移动到文章结尾
#G 移动到第#行开头
数字0/home/^ 光标移动到本行开头
$/home 光标移动到所在行的行尾
w 光标移动到下一字的开头
e 光标移动到下一字的字尾
b 光标回到上个字的开头
#1 光标移到该行的第#个位置
#[Enter] 光标向下移动#行
[#1] 光标移动到该行的第#个位置
标记:
命令行模式下
m + [a-zA-z] 做标记
'[a-zA-Z] 移动到标记,'为单引号
:marks 列出所有标记
:delmarks[a-zA-Z] 删除标记
特殊标记:
' 跳转前的位置
" 最后编辑的位置
替换:
r 替换光标所在处的字符
R 替换光标所到之处的字符,直到按下Esc键为止
/关键词 可用来查找,所有关键词显示高亮背光,光标停留在第一个关键词
n向下找
N向上找
替换
%s/xxx1/xxx2/g 将xxx1替换为xxx2 g代表全部
sp xxx 打开其他文件xxx
Ctrl-w-j 下一个窗口
Ctrl-w-k 上一个窗口
Ctrl-w-q 退出当前窗口
(底行模式下) 命令行模式按shift+:进入底行模式
set nu 列出每一行的行号
set nonu 不显示行号3
# 跳到第#行
/关键词 如果第一次找的关键词不是想要的,可以一直按n,向下查找
?关键词 如果第一次找的关键词不是想要的,可以一直按n,向上查找
noh 消除高亮
在文件外面执行命令:vim 文件名 x 直接停在第x行
Vim配置:
autoindent 自动缩进
set shiftwidth=4
set tabstop=4 设置Tab长度为四个字符
syntax on 关键词高亮 可以检错
gcc 编译
gcc hello.c -o hello 输出文件名
执行文件 绝对路径 /...
相对路径 ./
编译步骤
- 预处理 处理#开头的代码(头文件#include>复制替换,宏定义#define>替换,条件编译#if>注释 #if 0 这一部分代码不编译)
gcc -E 生成.i文件(文本文件)
- 编译 1、语法检查 2、把C代码翻译成汇编代码
gcc -S 生成.s文件(文本文件)
- 汇编 把汇编语言编译成二进制文件
gcc -c 生成.o文件(二进制文件)
- 链接 连接程序需要用到的源文件
gcc ...o 有几个o写几个
gcc -c hello.c -o hello.o 前三步一步到位
两个文件同时 gcc hello.c print.c -o hello
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc -c hello.c -o hello.o
gcc hello.o print.o -o hello
make(命令) Makefile(文件) 工程较大时用到 添加注释#开头
通过make执行文件 检测hello 是否变化 不变化不编译
先执行Makefile 再makefile
基本格式 target:dependency target:目标 dependency:依赖 有几个写几个
(Tab键)command command:命令
最简单的makefile:
mkdir Makefile
cd Makefile
vim hello.c
#include<stdio.h>
int main()
{
printf("HelloWorld!\n");
return 0;
}
vim Makefile
hello:hello.c
gcc hello.c -o hello
命令make 打印命令 并执行
2.0的Makefile
Target=hello
Object=hello.c
$(Target):$(Object)
gcc $(Object) -o $(Target) //$()引用
3.0的Makefile
Target=hello
Object=hello.o
$(Target):$(Object)
gcc $(Object) -o $(Target)
hello.o:hello.c
gcc -c hello.c -o hello.o //隐含规则,都可以不写 hello.o 自动寻找hello.c 生成
两个文件
vim hello.c
vim print.c
vim Makefile
Target=hello
Object=hello.o print.o
$(Target):$(Object)
gcc $(Object) -o $(Target)
.PHONY:clean
rm *.o hello
Makefile还有清理功能
如果有clean文件 执行make clean时认为clean为目标,报错
此时.phony:clean将clean设成伪目标
拓展:
ELT 开头为二进制文件
history | grep gcc 查看历史命令gcc
将文件从电脑移到虚拟机的方法
1.直接拖进去
2.菜单->虚拟机->设置->选项->共享文件夹->总是启用->添加自定义文件夹->确定
路径: /mnt/hgfs/share/