20145229吴姗珊 《信息安全系统设计基础》第2周学习总结
教材学习内容总结
1.vim
-
普通模式
可用i或者a进入插入模式 -
插入模式
大多数按键在此模式下会向文本缓冲中插入文本 可用ESC进行退出 -
可视模式
与普通模式相似的高亮模式 -
选择模式
-
命令行模式
可以通过输入文本如:/ 执行命令 -
EX模式
可以一次执行多条命令 -
三种模式的切换
vim启动进入普通模式,处于插入模式或命令行模式时只需要按Esc或者Ctrl+[(这在vim课程环境中不管用)即可进入普通模式。普通模式中按i(插入)或a(附加)键都可以进入插入模式,普通模式中按:进入命令行模式。命令行模式中输入wq回车后保存并退出vim
进入vim
1.使用vim命令进入vim界面
2.游标移动
在进入vim后,按下i键进入插入模式
3.进入插入模式
4.退出vim
从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑
2.vim文档编辑
-
重复执行上次命令
拷贝测试文件到本地目录,打开文件进行编辑,当输入x即删除第一个字母,再输入x时即再删除一个字母,用法与dd相似
-
执行指定次数相同的命令
进入普通模式输入N,N表示重复后面的次数,跟上一条相似的进行命令比如删除。在普通模式下,你还可以使用dw或者daw(delete a word)删除一个单词,所以你可以很容易的联想到dnw(n替换为相应数字)表示删除n个单词 -
游标的快速跳转
当完成依次跳转后,可以使用Ctrl+o快速回到上一次(跳转前)光标所在位置
实验楼练习可将光标移至最末一行 或者ng
-
复制粘贴和剪切
-
普通模式中使用y复制
普通模式中,yy复制游标所在的整行(3yy表示复制3行)
普通模式中,y^ 复制至行首,或y0。不含光标所在处字符。
普通模式中,y$ 复制至行尾。含光所在处字符。
普通模式中,yw 复制一个单词。
普通模式中,y2w 复制两个单词。
普通模式中,yG 复制至文本末。
普通模式中,y1G 复制至文本开头。 -
普通模式中使用p粘贴
普通模式中,p(小写)代表粘贴至光标后(下)
普通模式中,P(大写)代表粘贴至光标前(上)
通过实验楼练习会发现一些小技巧,如dd为删除,而P则为复制,则ddp即为复制粘贴了
3.查找替换
- 字符的替换及撤销
-普通模式下输入15G,跳转到15行
普通模式下输入>> 整行将向右缩进(使用,用于格式化代码超爽)
普通模式下输入<< 整行向左回退
普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 - shiftwidth命令
shiftwidth命令是指上一节>>命令产生的缩进(可以简写成sw) 普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 获取目前的设定值 - 调整文本位置
命令行模式下输入:ce(center)命令使本行内容居中
命令行模式下输入:ri(right)命令使本行文本靠右
命令行模式下输入:le(left)命令使本行内容靠左 - 查找
普通模式下输入/然后键入需要查找的字符串 按回车后就会进行查找。 ?与/功能相同,只不过?是向上而/是向下查找。 进入查找之后,输入n和N可以继续查找 n表示继续查找,N反向查找
普通模式下输入/icmp查找字符串icmp
普通模式下输入n查找下一个icmp
普通模式下输入?tcp向上查找字符串tcp
普通模式下输入N查找上一个出现的tcp
4.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
注意:编译时要加“-g”参数(参数连起来是“ESc”,相应输入的文件的后缀是“iso”) - gcc预处理源文件的时候(第一步),不会进行语法错误的检查,语法检查会在第二步进行。
- gcc hello.c -o hello--- 第二个hello为文件名。
- 大致流程:首先gcc会调用预处理程序cpp,由它负责展开在源程序中定义的宏.hello.i这是一个经过预处理器处理之后的C源文件
实验楼里下载了学习的代码
5.GDB
- gdb programm(启动GDB)
- b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
- run 开始运行程序
- bt 打印函数调用堆栈
- p 查看变量值
- c 从当前断点继续运行到下一个断点
- n 单步运行
- s 单步运行
- quit 退出GDB
教材学习中的问题和解决过程
在第一次的vim敲代码编译过程中,总是出现无法找到该文件,后发现在插入模式中输入代码需推出插入模式进入普通模式,shift+zz进行保存,后才可以进行编译
本周代码托管截图
其他(感悟、思考等,可选)
这周的学习任务跟上周的不一样,上周的主要是一些简单的命令输入,而这周的学习要用到陌生的vim编辑器,说实话快捷键的设定真有些不符常理,不过经常使用应该就习惯了,让我觉得非常便利的一点即是再查找、删除上可以直接进行到某一行,用起来十分方便。在后面的学会用vim编代码使用gdb进行调试比较复杂,过程中经历了百度以及询问同学,这一周的内容十分扎实也让我学到了很多,只是在代码的上传git上又要使用到上学期的知识,有一句老话,温故而知新,在以后的学习中应该经常温习以前的内容,特别是元知识,对后面的学习有着很大的帮助。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 2/2 | 17/17 | |
第二周 | 300/300 | 3/3 | 15/15 |