一.Vi编辑器
三种模式:
命令行模式 文本输入模式 末行模式
一般操作:
l进入vi
vi filename (例如$ vi helloworld.c)
如果只键入vi,不带文件名,这样也可以进入vi编辑器,进行编辑,退出之前保存文件即可。
进入vi默认就是命令模式,这时输入的字母都将作为命令来解释,而不是文本输入。“~”符号表示空行。
如果希望在进入vi后,光标处于文件中指定的某行上,可在vi命令上加上行号和文件名,格式如下
vi +行号 文件名 (例如$ vi +5 helloworld.c)
如果希望在进入vi之后光标处于文件最末行,只需去掉命令中“+”后面的数字即可,格式如下
vi + 文件名 (例如$ vi + helloworld.c)
vi编辑器支持模式匹配,用户可以在命令中指定一个模式串,进入vi后,光标就处于文件中第一个与指定模式串相匹配的那行
vi + /模式字符串 文件名 (例如$ vi +/main helloworld.c)
vi支持同时打开多个文件,例如要打开当前目录下的所有.c文件和.h文件,并将当前编辑文件设置为main函数所在文件,只需执行下列命令
$vi +/main *.h *.c
l插入文本命令:i和I
i命令将文本插入到光标所在位置前。
I命令将文本插入当前行的行首。
l追加文本命令:a和A
a命令将新文本追加到光标所在位置之后。
A命令将新文本追加到所在行的行尾。
l空行插入命令:o和O
o命令在光标所在行的下面插入一个空行。
O命令在光标所在行的上面插入一个空行。
l删除的基本操作
x删除光标处的字符
dd删除光标所在的整行
d删除包括当前行在内的两行字符
l文本复制操作
yy 复制光标所在的整行
Y或y$复制从光标所在处开始到行尾的内容
y复制包括当前行在内的两行内容
l文本粘贴命令
p命令。粘贴当前缓冲区中的内容
l撤销命令
u命令,撤销上一次所在的操作(在一次切换到文本输入模式中输入的所有文本算一次操作)
U命令,一次性撤销自上次移动到当前行以来所过的所有操作。
l退出vi
在末行模式下,
:q 若当前内容已保存 直接退出,若当前内容未保存,则等待用户操作
:q! 强行退出vi编辑器。慎用!
:w 新文件名 保存不退出,相当于另存为。
:w! 新文件名 强制保存,不询问是否有重名文件。慎用!
:wq 先保存再退出,如果当前文件未命名,则需指定文件名
:x 如已保存,则直接退出,如未保存,则保存文件
l光标移动
h 左移一个字符
j 光标下移一行
k 光标上移一行
l 光标右移一个字符
l屏幕滚动
在命令模式和文本输入模式下均可以使用
Ctrl + u 将屏幕向前翻滚半屏
Ctrl + d 将屏幕向后翻滚半屏
Ctrl + f 将屏幕向文件尾方向翻滚一整屏
Ctrl + b 将屏幕向文件首方向翻滚一整屏
命令之前加数字n,翻滚n行,或移动n页
l查找命令
/string 从光标处向后查找
?string 从光标处向前查找
g/string 使光标停止在第一个检索到的string串的行首
l替换命令
:[range]/s/s1/s2/[option]
[range]表示检索范围"1, 10"。表示从第一行到10行。"%"表示整个文件。".,$"从当前行到文件尾
s为替换命令 。s1要被替换的串。s2为替换的串。
Option:/g在全局文件中进行替换。/c表示在每次替换之前需要用户确认。省略时仅对每行第一个匹配串进行替换。
l设置环境
末行模式下输入:
: set nu (nonu)
设置显示行号(或者不显示行号)
: syntax on(off)
设置语法高亮显示(不高亮显示)
二.gcc编译器
gcc编译流程:
n将C语言源程序预处理,生成.i文件
n预处理后的.i文件编译成为汇编语言,生成.s文件
n将汇编语言文件经过汇编,生成目标文件.o文件
n将各个模块的.o文件链接起来生成一个可执行程序文件
常用选项汇总:
-c 编译、汇编指定的源文件,但是不进行链接
-S 编译指定的源文件,不进行汇编
-E 预处理指定的源文件,不进行编译
-o 编译成可执行文件
-I directory 指定include包含文件的搜索目录
-g 生成调试信息,可被调试器调试