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 可以继续输入指令。

相关推荐
余辉zmh13 分钟前
【Linux系统篇】:Linux线程控制基础---线程的创建,等待与终止
linux·运维·服务器
大白的编程日记.1 小时前
【Linux学习笔记】基础IO之理解文件
linux·笔记·学习
东南门吹雪2 小时前
Debian系统上PostgreSQL15版本安装调试插件及DBeaver相应配置
linux·运维·postgresql·debian
Lzc7742 小时前
Linux的基础开发工具
linux·linux的基础开发工具
jarreyer4 小时前
Vim 编辑器常用快捷键速查表
linux·编辑器·vim
冰激凌zz4 小时前
ubuntu nobel + qt5.15.2 设置qss语法识别正确
linux·qt·ubuntu
编码雪人5 小时前
CentOS算法部署
linux·运维·centos
广药门徒5 小时前
关于多版本CUDA共存的研究,是否能一台机子装两个CUDA 版本并正常切换使用
linux·运维·人工智能
又逢乱世5 小时前
Ubuntu 安装 Docker
linux·ubuntu·docker
小猪佩奇TONY5 小时前
Linux 内核学习(6) --- Linux 内核基础知识
linux·学习