20145328 《信息安全系统设计基础》第2周学习总结
20145328 《信息安全系统设计基础》第2周学习总结
教材学习内容总结
常用操作
- vim可以仅仅通过键盘在任意模式之中进行切换,这就使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作,对文字录入员或者程序员可以大大增强速度和效率。vim有6种基本模式(常用的是普通模式、插入模式和命令行模式):
- 普通模式(Normal mode):在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。在普通模式中,进入插入模式比较普通的方式是按a(append/追加)键或者i(insert/插入)键。
- 插入模式(Insert mode):在插入模式中,可以按ESC键回到普通模式。
- 可视模式(Visual mode):命令多与字母v有关,移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。
- 选择模式(Select mode):这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
- 命令行模式(Command line mode):在命令行模式中,执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
- Ex模式(Ex mode):这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。
- 三种常用模式的切换:
- vim启动进入普通模式;
- 处于插入模式或命令行模式时只需要按Esc或者Ctrl+[即可进入普通模式;
- 普通模式中按i(插入)或a(附加)键都可以进入插入模式;
- 普通模式中按:进入命令行模式;
- 命令行模式中输入wq回车后保存并退出vim。
- 进入vim:
- 在终端中输入 vim 文件名;
- 在终端中输入vim,进入vim界面中,进入命令行模式输入:e 文件路径(文件名)
- vim编写代码:
- 游标移动(在普通模式下,按Esc进入普通模式):
按键 | 说明 |
---|---|
h | 左 |
l | 右 |
j | 下 |
k | 上 |
w | 移动到下一个单词 |
b | 移动到上一个单词 |
- 进入插入模式(在普通模式下进入):
命令 | 说明 |
---|---|
i | 在当前光标处进行编辑 |
I | 在行首插入 |
A | 在行末插入 |
a | 在光标后插入编辑 |
o | 在当前行后插入一个新行 |
O | 在当前行前插入一个新行 |
cw | 替换从光标所在位置后到一个单词结尾的字符 |
- 命令行模式下保存文档:从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下。
- 退出vim(常用):
- 命令行模式下退出vim:从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑。
- 普通模式下退出vim:普通模式下输入Shift+zz即可保存退出vim
- 普通模式下删除文本:
命令 | 说明 |
---|---|
x | 删除游标所在的字符 |
X | 删除游标所在前一个字符 |
Delete | 同x |
dd | 删除整行 |
dw | 删除一个单词(不适用中文) |
d$或D | 删除至行尾 |
d^ | 删除至行首 |
dG | 删除到文档结尾处 |
d1G | 删至文档首部 |
ndd | 删除n行 |
- 替换和撤销(Undo)命令(只针对普通模式):
命令 | 说明 |
---|---|
r+ | 将游标所在字母替换为指定字母 |
R | 连续替换,直到按下Esc |
cc | 替换整行,即删除游标所在行,并进入插入模式 |
cw | 替换一个单词,即删除一个单词,并进入插入模式 |
C | 替换游标以后至行末 |
~ | 反转游标所在字母大小写 |
u{n} | 撤销一次或n次操作 |
U | 撤销当前行的所有修改 |
Ctrl+r | redo,即撤销undo的操作 |
- 快速缩进(缩进操作均在普通模式下有效):
- 使用命令进行快速调整缩进操作:通模式下输入15G,跳转到15行;普通模式下输入>>整行将向右缩进(使用,用于格式化代码超爽);普通模式下输入<<整行向左回退;普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数。
- shiftwidth命令:shiftwidth命令是指>>命令产生的缩进(可以简写成sw) 普通模式下输入:进入命令行模式;对shiftwidth值进行设置可以控制缩进和回退的字符数。 获取目前的设定值:set shiftwidth?;设置缩进为10个字符:set shiftwidth=10。
- 调整文本位置:
- 命令行模式下输入:ce(center)命令使本行内容居中
- 命令行模式下输入:ri(right)命令使本行文本靠右
- 命令行模式下输入:le(left)命令使本行内容靠左
- 查找:
- 普通模式下输入/向下查找,输入?向上查找,n表示继续查找,N反向查找。
- 普通模式下输入*寻找游标所在处的单词
- 普通模式下输入#同上,但*是向前(上)找,#则是向后(下)找
- 普通模式下输入g*同*,但部分符合该单词即可
- 普通模式下输入g#同#,但部分符合该单词即可
- 高级功能(部分)
- 使用vim编辑多个文件:
- 编辑多个文件有两种形式:一种是在进入vim前使用的参数就是多个文件;另一种就是进入vim后再编辑其他的文件。同时创建两个新文件并编辑$ vim 1.txt 2.txt。
- 默认进入1.txt文件的编辑界面:命令行模式下输入:n编辑2.txt文件,可以加!即:n!强制切换,之前一个文件的输入没有保存,仅仅切换到另一个文件;命令行模式下输入:N编辑1.txt文件,可以加!即:N!强制切换,之前文件内的输入没有保存,仅仅是切换到另一个文件。
- 进入vim后打开新文件:
- 命令行模式下输入:e 3.txt打开新文件3.txt
- 命令行模式下输入:e#回到前一个文件
- 命令行模式下输入:ls可以列出以前编辑过的文档
- 命令行模式下输入:b 2.txt(或者编号)可以直接进入文件2.txt编辑
- 命令行模式下输入:bd 2.txt(或者编号)可以删除以前编辑过的列表中的文件项目
- 命令行模式下输入:e! 4.txt,新打开文件4.txt,放弃正在编辑的文件
- 命令行模式下输入:f显示正在编辑的文件名
- 命令行模式下输入:f new.txt,改变正在编辑的文件名字为new.txt
恢复文件:vim -r进入文档后,输入:ewcover 1.txt来恢复。
创建加密文档:$ vim -x file1
- 利用vimtutor学习vim
GCC 使用
- gcc 编译程序的流程(参数是ESc,文件的后缀是iso):
- 预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp,产生预处理过的C原始程序
- 编译: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,产生可执行文件
- 运行:./hello
- gcc编译常用选项:-E(只预编译)、-S(只编译不汇编)、-o(将file文件指定为输出文件)、-c(只编译不链接)、-I dir(在头文件的搜索路径列表中添加dir目录)、-g(在可执行程序中包含标准调试信息)
- 库选项:-static(进行静态编译,即链接静态库、禁止使用动态库)、-shared(生成动态库文件、进行动态编译,在没有动态库时才会链接同名静态库)、-L dir(在库文件的搜索路径列表中添加dir目录)、-lname、-fPIC(生成使用相对地址的位置无关的目标代码,然后使用gcc的-static选项从该PIC目标文件生成动态库文件)
- 静态库是一系列的目标文件(.o文件)的归档文件((lib+name).a文件);链接阶段,选择静态库,后缀名为“.a”,选择动态库,后缀名为“.so”。
- 静态链接库的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o;
- 静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx //链接到静态库;
- 注意:-L:在库文件的搜索路径列表中添加dir目录,-l: 在头文件的搜索路径列表中添加dir目录。
- 共享库的生成:gcc -fPIC -c xxx.c gcc -shared -o libxxx.so xxx.o;共享库的使用:gcc -o main main.c -L. -lxxx
- 注册共享库的方法:
- 修改/etc/ld.so.conf文件
- 修改LD_LIBRARY_PATH环境变量
- 将库文件直接复制到/lib或者/usr/lib目录下:cp (lib+name).so /lib
-gcc警告和出错选项列表:
+ -w:关闭所有告警
+ -Wall:允许发出gcc提供的所有有用的报警信息
+ -werror:把所有的告警信息转化为错误信息,并在告警发生时终止编译过程
GDB 使用
- 程序的运行状态有“运行”、“暂停”、“停止“三种。
- 主要操作:
- 查看文件:l
- 设置断点:在b后加入相对应的行号。例b 6
- 查看断点情况:设置完断点后键入info b,在gdb中可以设置多个断点。bt查询调用函数的情况
- 运行代码:默认从首行开始运行代码,键入r;r+行号:从该行号开始运行
- 查看变量值:p变量。例:p n
- 单步运行:n或s,s会进入函数,n不会进入函数
- 恢复程序运行:c
- 帮助信息:h
- 断点的设置:
- 函数:b 文件名.c:函数名
- 行:b 行数
- 条件:b 行数 if 表达式(例如:b 9 if == 12)
- 临时:tb [文件名:]行号或函数名
- GDB测试示例:
Makefile 使用
- 一个工程中的源文件不计其数,按其类型、功能、模块分别放在若干个目录中。makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作。其带来的好处就是——“自动化编译”,一但写好,只需要一个make命令,整个工程完全编译,极大的提高了软件的开发效率。
- makefile文件编写规则:
- 目标文件:由make创建,通常是目标文件或可执行文件
- 依赖文件:创建目标体所依赖的文件
- 运行命令:创建每个目标体时需要的运行命令,必须以tab键开头
- 格式为:目标文件:依赖文件列表 [tab键]各目标体运行命令(注意不是空格)
- 使用make的格式:make 目标文件
- makefile变量的定义:
- 递归展开方式:在引用该变量时进行替换(不能用于引用自己的情况),缺点:不能在变量后追加内容
- 格式定义:VAR = var
- 展开方式:在定义处展开,并只展开一次。优点:消除变量的嵌套引用
- 格式定义:VAR := var
- make中变量的使用格式: $(变量名)
- 变量名的命名:不包括“:”、“#”、“=”以及结尾空格的任何字符串;变量名大小写不敏感
代码托管情况
代码托管地址→代码托管地址
学习中遇到的问题
在git的过程中遇见了Everything Up-to-Data
的提示,一开始还以为是git有版本需要更新,然后才发现是忘了进行git add
以及git commit
,忘了截图。
心得体会
vim的使用也有一段时间了,可能是因为自己没有配置好以及掌握不熟练的原因,有很多时候感觉还是没有ide那么顺手,多加练习应该会慢慢适应,然而实际上感觉学习vim的目的并不是在于掌握vim的用法,而是一种掌握全键盘操作,不依靠图形界面来进行工作学习的方法,全键盘对于学习效率的提高还是很有帮助的,而通过gcc进行编译,gdb进行调试也是一种新的体验,在学习的过程中还是遇见了一些问题只不过马上就得到了解决,所以都忘了截图。。。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/2 | 20/40 | |
第二周 | 63/63 | 1/3 | 20/60 |
参考资料
- 《深入理解计算机系统V2》学习指导
- 实验二 Linux下C语言编程基础
- 2016-2017-1 《信息安全系统设计基础》教学进程 第二周指导
- Vim编辑器
- GDB 简明教程
- Linux系统编程
- VIM_百度百科
转载于:https://www.cnblogs.com/rebrust/p/5907638.html
20145328 《信息安全系统设计基础》第2周学习总结相关推荐
- # 2017-2018-1 20155224 《信息安全系统设计基础》第九周学习总结
2017-2018-1 20155224 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 存储器 随机访问存储器(RAM): 静态RAM:用来作为高速缓存存储器,每个位存储在一个 ...
- 2018-2019-1 20165206 《信息安全系统设计基础》第九周学习总结
- 2018-2019-1 20165206 <信息安全系统设计基础>第九周学习总结 - 教材学习内容总结 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组.每个字节都有一 ...
- 20135203齐岳 信息安全系统设计基础第十三周学习总结
20135203齐岳 信息安全系统设计基础第十三周学习总结 学习计时:8/9共小时(计划/实际) 读书:4/5 代码:1/1 作业:1/1 博客:2/2 第十二章 并发编程 一.学习目标 掌握三种并发 ...
- # 20155337 2017-2018-1 《信息安全系统设计基础》第一周学习总结
20155337 2017-2018-1 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 1.1信息就是位+上下文 hello.c程序是以字节序列的方式储存在文件中的.每个字节都 ...
- 20135219洪韶武——信息安全系统设计基础第五周学习总结
信息安全系统设计基础第五周学习总结 学习任务:教材第四章[处理器体系结构] 学习时间:10小时 一.教材知识点梳理[4.1-4.3] 1.ISA[指令集体系结构] 一个处理器支持的指令和指令的字节级 ...
- 20145227《信息安全系统设计基础》第一周学习总结
20145227<信息安全系统设计基础>第一周学习总结 学习内容总结 Linux是一个操作系统.如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命 ...
- 2018-2019 20165203 《信息安全系统设计基础》第一周学习总结
2018-2019-1 20165203 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 编译:gcc [选项] [文件名] 选项参数表 参数 对应功能 -E 仅执行编译预处理 ...
- 2018-2019-1 20165221 《信息安全系统设计基础》第一周学习总结
2018-2019-1 20165221 <信息安全系统设计基础>第一周学习总结 教材学习总结 有关vim 打开方式:vim [文件名] 按i会进入insert模式,可以对代码进行编辑 按 ...
- 2017-2018-1 20155209 《信息安全系统设计基础》第一周学习总结
2017-2018-1 20155209 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 计算机系统就是由可以看到的硬件和系统内的软件组成的,然后用来运行应用程序. 我们平时使用 ...
- 20145307《信息安全系统设计基础》第二周学习总结
20145307<信息安全系统设计基础>第二周学习总结 教材学习内容总结 vim编辑器 Vim的6种基本模式:Vim具有6种基本模式和5种派生模式普通模式(Normal mode) Vim ...
最新文章
- TypeError: Caught TypeError in DataLoader worker process 0.
- 想做网络推广浅析网站优化中标题该如何设置?
- [Scala]集合中List元素转Tuple元素的函数迭代写法
- 类文件结构-field
- P1429-平面最近点对(加强版)【分治】
- vue框架可以配合php做企业站,基于Vue和PHP打造前后端分离的通用管理系统(一)...
- char* 赋值 const char* 释放_嵌入式Linux开发《C语言专题(十:彻底搞懂“关键字”const)》...
- 新书榜TOP 20占了17位!榜单里有哪些值得入手的技术新书?
- Android开发环境
- 文电通PDF编辑转换器[DocuCom PDF Gold] 9.1R2下载和破解补丁
- oppo r11s鸿蒙固件,OPPO R11s官方出厂rom系统刷机包下载_卡刷升级包降级回退包
- 利用python构建马科维茨_利用马科维茨投资组合理论构建自己的投资组合
- Spring Boot 项目参数校验的常见使用场景
- 视频中的视频怎样制作,教你轻松实现画中画效果
- 基于C语言设计的俄罗斯方块小游戏(VS2017运行)
- 晶振与晶体的参数详解
- transE论文阅读 19年记录的
- 【有奖征集】 | 解锁程序YUAN的1024面
- c语言程序设计 李俊,深入浅出C语言程序设计(第2版)习题集和编程指导
- mallet java_Mallet:自然语言处理工具包
热门文章
- python找第二大的数索引_python – 在numpy数组中查找多个值的行索引
- 利用高级筛选功能巧妙删除Excel的重复记录
- java设置界面边框,技术员教你解决Java 添加Word页面边框
- c语言枪图形,6个变态的C语言Hello World程序[转载]
- 扩展KMP模板(学习)
- 利用划分树求解整数区间内第K大的值
- IDEA中提示JAVA字符串常量过长
- linux 高性能日志,linux日志系统
- stopped状态的进程 top 命令_Linux 进程管理之四大名捕
- 液晶屏和计算机组成,液晶显示屏结构是什么 液晶显示屏结构介绍【图文】