学习记录:第一周day02笔记
vim文本编辑器:
可以直接在终端下采用纯键盘操作的一款文本编辑器(号称编辑器之神,可以升级、可以扩展)
基础用法:
1、进入vim:
输入 vim file.c 文件存在则打开,否则新建并打开
2、输入i:
进入编辑模式,编写代码
3、保存并退出
按Esc,输入ZZ保存并退出
vim三大模式:
正常模式:(打开文件时的默认模式)
一般用于阅读文件,或者用于快捷键对文件快速修改
编辑(插入)模式:
一般用于输入内容、编辑文件
行底(命令)模式:
一般用于对vim的临时配置、或者执行一些高级操作
模式之间的切换:
<= 按: 输入i =>
行底 正常 插入
按Esc => <= 按Esc
1、正常模式下常用操作:
光标移动
h左 j下 k上 l右
gg 光标跳转到第一行
G 光标跳转到最后一行
n+Enter 光标向下跳转n行
n- 光标向上跳转n行
nG 直接跳转到第n行
vim file.c n 从第n行进入文件
删除操作
dd 删除光标所在的一行代码
ndd 删除n行
x 删除一个字符
nx 删除n个字符
dw/de 删除一个连续字符串(de不删空格)
d^ 从当前光标删除到行首
d$ 从当前光标删除到行尾
dgg 从当前光标删除到第一行
dG 从当前光标删除到最后一行
复制代码:
y 复制选中的高亮文本
yy 复制光标所在的一行代码
nyy 复制n行代码
p 粘贴到当前光标(下一位置)下一行
P 粘贴到当前光标上一行
移动代码
删除的内容还存储在粘贴板上,使用p/P可以粘贴出来,从而达到移动代码的目的
xp 相当于交换两个字符
替换代码:
r 替换光标所在的一个字符(按下r后,输入要替换的字符)
cw 替换一个连续字符串(就是删除字符串后,进入插入模式)
更改类命令格式:c [number] motion
R 进入替换模式(insert键切换插入与替换)
撤销操作:
u 撤销上一次操作
Ctrl+r 取消上一次的撤销操作
其它操作:
输入%可以查找配对的括号)、]、}(要将光标移动到括号处)
2、插入模式常用操作
进入插入模式的方式
i 在当前光标前进入插入模式(常用)
I 光标跳转到行首进入插入模式
a 在当前光标后进入插入模式
A 光标跳转到行尾进入插入模式(常用)
o 当前行的下面插入一行空白行,再进入插入模式(常用)
O 当前行的上面插入一行空白行,再进入插入模式
插入模式下的操作
Ctrl+p/n 自动补全,变量名\函数名\宏...
Ctrl+i 相当于Tab键
Ctrl+j 相当于Enter键
Ctrl+c 相当于ESC键
vim自定义功能:
Ctrl+z 保存并退出
Ctrl+x 保存并编译并运行,且按任意键可以回到vim中
Ctrl+p 这是正常模式下的Ctrl+p,自动添加头文件和main函数
3、行底模式下的操作
:w 写入
:q 退出(未作修改时可以退出)
:q! 强制退出
:wq 保存并退出(:wq还会保存配置和属性,ZZ只会保存文本)
:x 保存并退出
:X 给文件加密
:set key= (将密码设为空格,相当于取消密码)
注意:必须:wq才能生效
:!cmd(命令) 在vim中执行cmd系统命令(看完结果后,按任意键可以返回vim)
:/key 查找关键字key,n下一个,N上一个,Ctrl+o回到之前的位置,Ctrl+i跳转方向相反
?代替/是逆向查找
:%s/old/new 把old关键字替换为new
:set nu 显示行号
:set nonu 取消行号
:> n行代码向右缩进一次
:< n行代码向左缩进一次
: r filename 向当前文件中插入另外的文件内容
除此之外还可以读取外部命令的输出,例如,:r !ls可以读取ls命令的输出
:w filename 将当前vim中正在编辑的文件保存到名为filename的文件中
按下v后移动光标可以选择区域,然后输入:w filename可以将选中部分内容保存在文件filename中
命令补全功能:
输入:e
按Ctrl+d键,vim会显示以e开始的命令列表
按<Tab>键,vim会补全命令
注意:行底模式下对vim进行配置只能是临时有效,关闭后会失效,如果想长期有效需要对vim的配置文件(~/.vimrc)进行配置
如何配置vim?
1、vim ~/.vimrc 打开配置文件
2、写完之后,回到正常模式,ZZ退出
3、下次打开vim就生效了
注意:vimtutor是vim提供的一个学习手册
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语法标准,全新的升级
C语言第一个程序
编译器:
负责把人能看懂的文本文件,翻译成计算机能看得懂的二进制文件,由预处理器、编译器、链接器组成
gcc编译器是GNU社区为了编译Linux内核代码而开发的一款免费的编译器,默认语法标准是C99或者C89
常用的编译参数
-E 只显示预处理的结果
-S 生成汇编文件
-c 只编译,不链接
-o 指定编译结果的名字
-I 指定头文件的加载路径 -I path
-l 指定要使用的代码库 -lm导入数学库
-Wall 尽可能多地产生警告信息
-Werror 把警告当作错误处理
-std 设置编译语法标准 -std=gnu99/89
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可执行文件
C语言中的文件类型:
.c 源文件
.h 头文件
.h.gch 头文件的编译结果文件,会被优先使用
.i 预处理文件
.s 汇编文件
.o 目标文件
.so 共享库文件
.a 静态库文件