20144303 《信息安全系统设计基础》第二周学习总结

20144303 《信息安全系统设计基础》第二周学习总结

教材学习内容总结

vim:

vim键盘图:

光标移动:

  • h-←,j-↓,k-↑,l-→,方向键也可以控制相应的光标移动方向;
  • w-移动到下一个单词,b-移动到上一个单词。
  • [[ 转到上一个位于第一列的"{";
  • ]] 转到下一个位于第一列的"{";
  • { 转到上一个空行;
  • } 转到下一个空行

插入模式:

  • i 在当前光标处进行编辑
  • I 在行首插入
  • A 在行末插入
  • a 在光标后插入编辑
  • o 在当前行后插入一个新行
  • O 在当前行前插入一个新行
  • cw 替换从光标所在位置后到一个单词结尾的字符

保存和退出vim:

  • w 保存文档
  • :q! 强制退出,不保存
  • :q 退出
  • :wq! 强制保存并退出
  • :w <文件路径> 另存为
  • :saveas 文件路径 另存为
  • :x 保存并退出
  • :wq 保存并退出

删除文本:

  • x 删除游标所在的字符
  • X 删除游标所在前一个字符
  • Delete 同x
  • dd 删除整行
  • dw 删除一个单词(不适用中文)
  • d$或D 删除至行尾
  • d^ 删除至行首
  • dG 删除到文档结尾处
  • d1G删至文档首部

行内跳转:

  • w 到下一个单词的开头
  • e 到下一个单词的结尾
  • b 到前一个单词的开头
  • ge 到前一个单词的结尾
  • 0或^ 到行头
  • $ 到行尾
  • f<字母> 向后搜索该字母并跳转到第一个匹配的位置
  • F<字母> 向前搜索该字母并跳转到第一个匹配的位置

复制粘贴和剪切:

  • 普通模式中,yy复制游标所在的整行(3yy表示复制3行)
  • 普通模式中,y^ 复制至行首,或y0。不含光标所在处字符。
  • 普通模式中,y$ 复制至行尾。含光所在处字符。
  • 普通模式中,yw 复制一个单词。
  • 普通模式中,y2w 复制两个单词。
  • 普通模式中,yG 复制至文本末。
  • 普通模式中,y1G 复制至文本开头。
  • 普通模式中使用p粘贴
  • 普通模式中,p(小写)代表粘贴至光标后(下)
  • 普通模式中,P(大写)代表粘贴至光标前(上)

查找替换:

  • r+<待替换字母> 将游标所在字母替换为指定字母
  • R 连续替换,知道按下ESC
  • cc 替换整行,即删除游标所在行,并进入插入模式
  • cw 替换一个单词,即删除一个单词,并进入插入模式
  • C 替换游标以后至行末
  • ~ 翻转游标所在字母的大小写
  • u{n} 撤销一个或n次操作
  • U 撤销当前所有的修改
  • 快速查找:普通模式下输入/然后键入需要查找的字符串 按回车后就会进行查找。 ?与/功能相同,只不过?是向上而/是向下查找。 进入查找之后,输入n和N可以继续查找 n表示继续查找,N反向查找
  • 高级查找:
  • 普通模式下输入*寻找游标所在处的单词
  • 普通模式下输入#同上,但 * 是向前(上)找,#则是向后(下)找
  • 普通模式下输入g*同* ,但部分符合该单词即可
  • 普通模式下输入g#同# ,但部分符合该单词即可

视窗操作:

  • 命令行模式下输入:sp 1.txt 打开新的横向视窗来编辑1.txt
  • 命令行模式下输入:vsp 2.txt 打开新的纵向视窗来编辑1.txt
  • 普通模式下Ctrl-w s 将当前窗口分割成两个水平的窗口
  • 普通模式下Ctrl-w v 将当前窗口分割成两个垂直的窗口
  • 普通模式下Ctrl-w q 即 :q 结束分割出来的视窗。如果在新视窗中有输入需要使用强制符!即:q!
  • 普通模式下Ctrl-w o 打开一个视窗并且隐藏之前的所有视窗
  • 普通模式下Ctrl-w j 移至下面视窗
  • 普通模式下Ctrl-w k 移至上面视窗
  • 普通模式下Ctrl-w h 移至左边视窗
  • 普通模式下Ctrl-w l 移至右边视窗
  • 普通模式下Ctrl-w J 将当前视窗移至下面
  • 普通模式下Ctrl-w K 将当前视窗移至上面
  • 普通模式下Ctrl-w H 将当前视窗移至左边
  • 普通模式下Ctrl-w L 将当前视窗移至右边
  • 普通模式下Ctrl-w 减小视窗的高度
  • 普通模式下Ctrl-w + 增加视窗的高度

gcc:

GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。

GCC编译代码的过程:

  • 预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp
  • 编 译:gcc –S hello.i –o hello.s;gcc –S调用ccl
  • 汇 编:gcc –c hello.s –o hello.o;gcc -c 调用as
  • 链 接:gcc hello.o –o hello ;gcc -o 调用ld

用gcc编译一个经典的c程序:

gdb:

  • gdb programm(启动GDB)
  • b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
  • run 开始运行程序
  • bt 打印函数调用堆栈
  • p 查看变量值
  • c 从当前断点继续运行到下一个断点
  • n 单步运行
  • s 单步运行
  • quit 退出GDB

熟悉gdb的操作:

Makefile 使用:

  • make工具最主要也是最基本的功能就是根据makefile文件中描述的源程序至今的相互关系来完成自动编译、维护多个源文件工程。而makefile文件需要按某种语法进行编写,文件中需要说明如何编译各个源文件并链接生成可执行文件,要求定义源文件之间的依赖关系

  • 之后的一系列命令,是make执行的动作,通常是把指定的相关文件编译成目标文件的编译命令,每个命令占一行,并以tab开头(初学者务必注意:是tab,而不是空格),执行以上Makefile后就会自动化编译

  • 一个Makefile文件主要含有一系列的规则,每条规则包含一下内容:

    一个目标,即make最终需要创建的文件,如可执行文件和目标文件;

    目标也可以是要执行的动作,如‘clean’;

    一个或多个依赖文件的列表,通常是编译目标文件所需要的其他文件。

学习中遇到的问题及解决过程:

问:在使用“x”删除光标所在位置的字符时,错删了字符,不会撤回。

答:使用u键可以撤销。

问:GDB的n(next)命令让GDB执行下一行,然后暂停。 s(step)命令的作用与此类似,只是在函数调用时step命令会进入函数,那么实际使用中应该优先选用哪个?为什么?

答:next是单步跟踪程序,当遇到函数调用时,也不进入此函数体;而step遇到用户自定义的函数,将步进到函数中去运行,而 next 则直接调用函数,不会进入到函数体内。

Step命令,如果step命令将要运行的源代码行上有函数调用,那么step命令将导致GDB进入到被调用函数的内部。

(都是通过百度解决的)

本周代码托管截图

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 20/20
第二周 300/300 1/2 20/40

其他(感悟、思考等,可选)

这周学习任务较多,还没有完全消化理解。vim的学习过程,让我更加深刻体会到了什么叫“做中学”,那么多的命令符号,通过游戏式的学习,就能轻松理解、掌握,整个学习过程也没有感觉到丝毫的疲惫,学习效率极高。希望以后能有更多这样的学习机会。

posted @ 2016-09-25 23:14  20144303石宇森  阅读(214)  评论(2编辑  收藏  举报