vim的一般操作(分屏操作) 和 Makefile 和 gdb

目录

[一. vim的基本概念](#一. vim的基本概念)

[二. vim基础操作](#二. vim基础操作)

[2.1 插入模式 aio](#2.1 插入模式 aio)

[2.2 [插入模式]切换至[正常模式] Esc](#2.2 [插入模式]切换至[正常模式] Esc)

[2.3[正常模式]切换至[末行模式] shift + ;](#2.3[正常模式]切换至[末行模式] shift + ;)

[2.4 替换模式 Shift + R](#2.4 替换模式 Shift + R)

[2.5 视图(可视)模式 (可以快速 删除//注释 或者 增加//注释) ctrl + v](#2.5 视图(可视)模式 (可以快速 删除//注释 或者 增加//注释) ctrl + v)

三:一些基础指令操作:

[3.1 移动光标](#3.1 移动光标)

3.2删除文字

[3.3 复制](#3.3 复制)

[3.4 替换](#3.4 替换)

[3.5 更改](#3.5 更改)

[3.6 vim末行模式常用命令](#3.6 vim末行模式常用命令)

[3.7 双屏幕 test.c 和 test.h 同时写入小技巧](#3.7 双屏幕 test.c 和 test.h 同时写入小技巧)

[3.7.1 方法一 使用垂直或水平分割](#3.7.1 方法一 使用垂直或水平分割)

3.7.2方法2:使用标签页

[3.7.3 方法3:使用窗口切换快捷键](#3.7.3 方法3:使用窗口切换快捷键)

[四. gcc 和 g++](#四. gcc 和 g++)

[五. Makefile](#五. Makefile)

[六. gdb的一般操作](#六. gdb的一般操作)

6.1开始调试(是对可执行文件的调试)


一. vim的基本概念

vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)插入模式(Insert mode)底行模式(last line mode) ,各模式的功能区分如下:

1.1 命令模式 ( 正常 / 普通 模式):控制屏幕光标的移动,字符、字或行的删除

1.2 插入模式 只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

1.3 末行模式 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下," shift + : "即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes


二. vim基础操作

2.1 插入模式 aio

输入a :光标会移动到当前字符的后面,并进入[插入模式]。
输入i :光标会停留在当前字符的前面,并进入[插入模式]。
输入o :会在当前行的下方插入一个新行,并进入[插入模式]。


2.2 [插入模式]切换至[正常模式] Esc

目前处于[插入模式],可以按一下「ESC」键转到 [正常模式] 。


**2.3[正常模式]切换至[末行模式]**shift + ;

「shift+;」,其实就是输入「:」,就可以进入末行模式。

w(保存当前文件)
wq(输入「wq」,存盘并退出vim)
q!(输入q!,不存盘强制退出vim)


2.4 替换模式**Shift + R**

按下Shift + R(即 R) 进入替换模式,在此模式下,你输入的每个字符都会替换光标处的字符,按 Esc 退出替换模式。


2.5 视图(可视)模式 **(可以快速 删除//注释 或者 增加//注释)**ctrl + v

删除操作:(例子是删除// 注释):

1.按下Ctrl +v 进入块选择模式。
2.用 j(向下) 或 k (向上) 或 h(左)或 L(右)移动光标,选中所有行的/部分(甚至包括后面的注释内容)。

3.按下 dx 直接删除选中的块区域。

插入操作(例子是加入// 注释):

1. 进入块选择模式:按下 Ctrl + v

2. 选择行范围:按 j(向下)或 k(向上)选择要注释的多行。

3. 如果注释需要对齐,可以按 l(向右)选中多列(例如选中行首的空白区域)。

4. 插入注释符号:按 Shift + i(大写 I)进入插入模式。

5 .输入 //(或 // 带空格)。

6. 按 Esc 退出插入模式,所有选中行的行首会自动添加 //


三:一些基础指令操作:

3.1 移动光标

vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、

「k」、「L」,分别控制光标左、下、上、右移一格

按「G」:移动到文章的最后

按「」:移动到光标所在行的"行尾"

按「^」:移动到光标所在行的"行首"

按「w」:光标跳到下个字的开头

按「e」:光标跳到下个字的字尾

按「b」:光标回到上个字的开头

按「#」:光标移到该行的第#个位置,如:5l,56l

按[gg]:进入到文本开始

按[shift+g]:进入文本末端

按「ctrl」+「b」:屏幕往"后"移动一页

按「ctr」+「f」:屏幕往"前"移动一页

按「ctr」+「u」:屏幕往"后"移动半页

按「ctrl」+「d」:屏幕往"前"移动半页


3.2删除文字

「x」:每按一次,删除光标所在位置的一个字符

「#x」:例如,「6x」表示删除光标所在位置的"后面(包含自己在内)"6个字符

「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符

「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符

「dd」:删除光标所在行

「#dd」:从光标所在行开始删除#行


3.3 复制

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

「#yw」:复制#个字到缓冲区

「yy」:复制光标所在行到缓冲区。

「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。

「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"有关的复制命令都必须

与"p"配合才能完成复制与粘贴功能。


3.4 替换

「r」:替换光标所在处的字符。

「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
撤销上一次操作:

「u」:如果您误执行一个命令,可以马上按下」,回到上一个操作。按多次"u"可以执行

多次回复。

「ctrl+ r」:撤销的恢复


3.5 更改

「cw」:更改光标所在处的字到字尾处

「c#w」:例如,「c3w」表示更改3个字
跳至指定的行:

「ctrl」+「g」列出光标所在行的行号。

「#G」:例如,「15G」,表示移动光标至文章的第15行行首。


3.6 vim末行模式常用命令

「shift + :」冒号即可进入末行模式。

列出行号:「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

跳到文件中的某一行:「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字#15,就会跳到的第15行。


3.7 双屏幕 test.c 和 test.h 同时写入小技巧

3.7.1 方法一 使用垂直或水平分割


3.7.2方法2:使用标签页


3.7.3 方法3:使用窗口切换快捷键


四. gcc 和 g++

gcc编译选项

格式:gcс [选项] 要编译的文件 [选项] [目标文件]

比如:

预处理:

编译:

汇编:

连接:

ESc 后缀 对应文件 iso 后缀


五. Makefile

首先我们需要touch 一个Makefile

下面是Makefile 的例子:


make 就可以运行程序,比如:

像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行(也就是make),不过,我们可以显示要make执行。即命令---"make clean",以此来清除所有的目标文件,以便重编译。

**.PHONY 解释:**一般我们这种clean的目标文件,我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是,总是能被执行的。


六. gdb的一般操作

首先我们最好安装cgdb

• 推荐安装cgdb:

• Ubuntu: sudo apt-get install -y cgdb

• Centos: sudo yum install -y cgdb

程序的发布方式有两种,debug模式和release模式,Linux gcc/g++ 出来的二进制程序,默认是release模式。

要使用gdb调试,必须在源代码生成二进制程序的时候,加上一g选项,如果没有添加,程序无法被编译


比如下面的debug的文件:

6.1开始调试(是对可执行文件的调试)

比如:

命令列表重要的用红色圈起来(可以自己去尝试,我就不试了):

|---------------------------|-----------------------|----------------------|
| 命令 | 作用 | 样例 |
| list/l | 显示源代码,从上次位置开始,每次列出10行 | list/l 10 |
| list/l 函数名 | 列出指定函数的源代码 | l main |
| list/l 文件名:行号 | 列出指定文件的源代码 | list/l test.c:1 |
| r/run | 从程序开始连续执行 | r |
| n/next | 单步执行,不进入函数内部 | n |
| s/step | 单步执行,进入函数内部 | step |
| break/b 行号(类似list的用法) | 在指定行号设置断点 | b 10 break test.c:10 |
| b 函数名 | 在函数开头设置断点 | b main |
| info b/break | 查看当前所有断点的信息 | info b |
| finish | 执行到当前函数返回,然后停止 | finish |
| set var | 修改变量的值 | set var i=10 |
| continue/c | 从当前位置开始连续执行程序 | continue |
| delete breakpoints | 删除所有断点 | delete breakpoints |
| d n | 删除序号为n的断点 | d 1 |
| disable breakpoints | 禁用所有断点 | disable breakpoints |
| enable breakpoints | 启用所有断点 | enable breakpoints |
| display 变量 | 跟踪显示指定变量的值(每次停止时) | display x |
| undisplay 变量 | 取消对指定编号的变量的跟踪显示 | undisplay x |
| backtrace/bt | 查看当前执行栈的各级函数调用及参数 | bt |
| info/i locals | 查看当前栈帧的局部变量值 | info/i locals |
| until 行号 | 执行到指定行号 | until 20 |
| quit/q | 退出GDB调试器 | q |

提示:假如我们不小心按到 Esc到 末行模式 ,按 i 可以继续输入指令。

相关推荐
多看书少吃饭8 分钟前
OnlyOffice 编辑器的实现及使用
前端·vue.js·编辑器
石头5309 分钟前
Service 详解
linux
小鸡脚来咯10 分钟前
Linux 服务器问题排查指南(面试标准回答)
linux·服务器·面试
末日汐13 分钟前
磁盘与文件系统
linux·运维·数据库
水天需01020 分钟前
Linux PS4 环境变量详解
linux
小新ya30 分钟前
vscode增删改查文件,一直等待中...
linux·vscode
济6171 小时前
linux(第十四期)--官方 SDK 移植实验-- Ubuntu20.04
linux·运维·服务器
云qq1 小时前
x86操作系统23——进程相关系统调用
linux·c语言·汇编·ubuntu
小猪佩奇TONY1 小时前
Linux 内核学习(16) --- linux x86-64 虚拟地址空间和区域
linux·运维·学习
L1624761 小时前
Docker 安装部署全流程使用指南(Linux 通用版)
linux·docker·容器