Linux 基础开发工具----Vim编辑器的常见命令
一、引言
1、什么是软件包?
答:在Linux下安装软件,一个通常的方法是下载到程序的源代码,并进行编译,得到可执行程序。但是这样比较麻烦,于是有一些人把一些常用的软件提前编译好,做成软件包(也可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。

软件包和软件包管理器的关系类似于:软件 和 应用商店 的关系。在centos上是yum(yellow dog Updater),在ubuntu上是apt(Advanced Package Tool)。
2、Linux软件生态
linux下载软件的过程(ubuntu 、centos、other)。

问题来了:为什么会有人免费特定社区提供软件,还发布?还提供云服务器让你下载?

有人愿意免费开发软件,源代码发布到各个平台,每个平台内部有自己的软件包服务器,包服务器会有地址信息,地址信息会被记录在云服务器的特定路径中。
我们今天主要从四个方面谈一谈:
1、理念驱动:想让技术不被垄断:很多开发者/社区觉得:“技术该共享”,就像分享科学知识一样,免费开放软件能让更多人用,一起改进,避免少数公司把技术攥在手里垄断赚钱。
2、众人拾柴:免费能凑齐“大神队友”:软件免费开放源码,全球开发者都能帮忙找bug、加功能,比一个公司闭门造车效率高多了。
3、隐形回报:免费不代表没收益:开发者靠开源赚名气,找工作,接项目更吃香;社区/公司则靠免费吸引用户,再通过企业技术支持,定制服务赚钱
4、云服务器免费:互相成全,提供了免费云服务器,一是帮用户降低使用门槛,二是云服务器商能推广自家产品(用户用惯了免费饭,后续可能付费升级),还能让软件有更多实际的使用场景,反过来优化产品。
(吸引用户,汇聚力量的手段,背后有明确的价值回报)
软件包的依赖问题
也就是说,就是你想装的软件需要“别人帮忙”才能跑,但是‘帮忙的东西’要么没装,要么版本不对。(例如下图:如果需要的库没装,软件就跑不起来,这就是典型的依赖问题)

二、镜像问题
国外镜像源:把国外的软件包服务器“镜像”到国内,本质是为了“让国内用户用的更爽”---解决“下载慢、连不上”的问题,同时也能减轻国外服务器的压力。

Linux下开发工具是独立的:
1、写代码—编辑器Vim(只能用来写代码)
2、编译代码—gcc(c编译器,只能用来编译c语言)/g++(是一个兼容c++和c语言编译器)。
3、调试—gdb、cgdb
4、构建工具—makefile、make、cmake、git
1、首先我们来讲解一下Vim的使用,Vim与其他编辑器最大的不同在于它拥有多种模式,你需要在不同的模式下完成不同的任务

Vim默认是在命令模式下的,接下来,我们进行实操:
Vim有好多模式,先掌握五种,分别是命令模式,底行模式,替换模式,插入模式和视图模式。
Vim的五种模式
1、命令模式
Vim默认模式下是处于命令模式的。
(1)shift + g == G:进入文本末端。
一开始进入(输入Vim +文件名)文本是光标处于这种情况

按shift+g == G 后

(2)gg:文本回到最开始(我们这里按顺序操作,在上一步完成之后,在此基础上,我们继续操作)

(3)n(任意数字)+ shift + g 定位到任意n行。(这里我们输入的是3 + shift + g)

(4)shift + 4 == $:定位到当前行结尾(上一行只有一个括号,我们换到下一行)

(5)shift + 6 == ^ : 定位到当前行的开始

(6)在Vim 中 :
h (向左)、j(向下)、k(向上)、L(向右)
(7)n + w: 按“单词”为单位,向右移动(按1 w 后,初始光标在本行开始)

n + b : 按“单词”为单位,向左移动(按1 b后,光标又复原)

(8)n + yy :复制光标当前所在的n行(如下图)输入2 + yy (复制俩行)
n + p:粘贴到当前行的下一行。(n为行号) 输入p直接在复制行的下一行开始复制

u:撤销操作
ctrl + r : 对 u撤销 进行 撤销
一旦 退出 V im就 无法 撤销了
n+ dd : 删除当前n行(从 光标所在行开始 的 共后 n行)
原来:

输入3 + dd 后:

(9)shift + · == ~
大小写 快速转换 ( 执行 一次 的 结果 )

(10 )n+ r
替换 光标 所在位置 的 n 个 字符 ( 输 入 3 + r )

2、替 换 模 式(批 量 化 的 内 容 替 换 shift + r == R 进 入 )
(1 )x:删除光标所在字符,连续x,向右删除(按一个x后)

(2)shift+x == X :向左删除
3、批量化注释(视图模式)
第一步 ctrl+v 进入(视图模式Visual Block)
第二步 h、j、 k、l 选择区域
第三步 shift i == I (大写i)
第四步 输入 //
第五步 Esc

批量化去注释:
1、ctrl+v(进入视图模式)
2、hjkl选择区域
3、d

4、底行模式
1、w!:保存
q!:退出
wq!:(强制)保存并退出
2、如果Vim打开文件,突然退出终端,vim形成临时文件,默认当前路径下的一个,swp临时文件
ls-al
3、 :/ key +n:匹配搜索(在vim的普通模式下,输入:/ +关键字(你想找的)就能找到,之后按n就可以跳转到下一个匹配 你想找的关键字,按N就可以跳转到上一个匹配的地方 )

4、:!cmd(不退出Vim就直接编译而运行)
5、:%s/dst/src/g (用src替换掉dst);
例如:
输入 :%s/printf/print/g(用print替换掉printf)

6、vs分屏操作
先输 入 :vs
ctrl+ww (用于光标在切好的屏幕之间进行来回切换)
vim在退出,光标还在原来的位置。shift+ zz ==ZZ(退出Vim)== wq

5、插入模式(编辑模式)
| 快捷键 | 作用 |
| i | 在当前光标位置前开始插入 |
| I(大写i) | 在当前行的开头开始插入(忽略首行空格) |
| a | 在当前光标位置后开始插入 |
| A | 在当前行的末尾开始插入 |
| o | 在当前行的下方新建一行并插入 |
| O | 在当前行的上放新建一行并插入 |
| s | 删除当前光标所在字符后插入 |
| S | 删除当前整行后插入 |
