vi #vim #思维导图 #速记速查

零、速记速查思维导图

在这里插入图片描述
→高清大图点这里←

  • vi是终端中的编辑器
  • ssh登录时,没有图形界面。在这种环境下,vi是最佳的选择

一、vi和vim

  • 在很多Linux发行版中,直接将vi做成vim的软连接

1)vi是什么

  • vi 的全称是 Visual interface,意思是 可视界面
  • vi是Linux中最经典 的文本编辑器
  • vi的核心设计思想:让程序员的手指始终保持在键盘的核心区域,就能完成所有的编辑操作
  • vi的特点:
  • 不支持鼠标操作
  • 没有菜单
  • 只有命令
  • vi编辑器在系统管理、服务器管理 编辑文件时,其功能永远不是图形界面编辑器能比拟的

2)vim是什么

  • vim 的英文是 vi improved,意思是vi增强
  • vim与vi是两个不同的软件,但其从vi发展来,支持代码补全、编译错误跳转 等方便编程的功能。誉为编辑器之神

二、vi基础

1)打开和新建

1>打开和新建

vi 文件名

  • 文件存在则打开,不存在则创建

在这里插入图片描述
在这里插入图片描述

2>打开并且定位行

  • 明确知道要CRUD哪一行代码时,可以快速定位到该行
  • 比如在开发中,通常会明确知道是哪一行代码出错

vi 文件名 +行数

  • 如果只有+,不跟行数就定位到文件尾
  • 如果直接打开,指针会在文件开头

在这里插入图片描述

3>交换文件

  • 当vi被强行终止时,再次打开已编辑的文件,会报错:交换文件已存在
  • vi在编辑一个文件时,会生成一个隐藏的交换文件 .文件名.swp,这个文件是为了保障对目前这个文件的编辑速度(类似于硬盘内容读入内存)
  • 一般,选择删除这个交换文件即可:再次打开文件==>报错==>输入英文的d

2)三种工作模式

1>命令模式

  • 打开文件首先进入命令模式,是使用vi的入口
  • 通过命令 对文件进行常规的编辑操作,如定位、翻页、复制、黏贴、删除…
  • 在其他图形界面编辑器下,通过快捷键 或者鼠标 实现的操作,都在命令模式 下实现

2>末行模式

  • 要退出vi返回控制台,需要在末行模式下输入命令
  • vi的出口
  • w保存,q退出,wq保存退出
命令 英文 功能
w write 保存
q quit 退出,若未保存,不允许退出
q! quit 不保存强行退出
wq w & q 保存并退出
x 保存并退出

在这里插入图片描述

3>编辑模式

  • 正常地编辑文字

4>模式转换

在这里插入图片描述

  • Touch Bar的Mac电脑上,Esc可以用Ctrl [

三、vi常用命令

  • vi命令一定要在英文输入法下
  • 忘记命令只会影响编辑速度而已,只要知道如何在三个模式之间切换,就可以进行操作了

1)学习命令路线图

  1. 重复次数
  • 在命令模式下,先输入一个数字,在跟上一个命令 ,可以让该命令重复执行指定次数
  1. 移动和选择(多多练习
  • vi的快就源自于能够快速定位到要编辑的代码行
  • 移动命令 能够和编辑操作 命令组合使用
  1. 编辑操作
  • 删除、复制、黏贴、替换、缩进
  1. 撤销和重复
  2. 查找替换
  3. 编辑

2)移动

1>上下左右

命令 功能 手指
h 向左 食指
j 向下 食指
k 向上 中指
l 向右 无名指

2>行内移动

命令 英文 功能
w word 向后移动一个单词
b back 向前移动一个单词
0 数字0 行首
^ 行首,第一个不是空白字符的位置(对付缩进)
$ 行尾

3>行数移动

命令 英文 功能
gg go 文件顶部
G go 文件末尾
数字gg go 移动到数字对应行数
数字G go 移动到数字对应行数
:数字 移动到数字对应行数
  • 程序员更喜欢go这个命令,只要是跳转,用go就好了

4>屏幕移动:

阅读代码时经常使用

命令 英文 功能
Ctrl b back 向上翻页
Ctrl f forward 向下翻页
H Head 屏幕顶部
M middle 屏幕中间
L Low 屏幕底部

3)移动(程序)

  • vi中使用空行来区分段落
  • 在程序开发时,一段功能相关的代码会写在一起 (之间没有空行)

1>段落移动

命令 功能
{ 上一段
} 下一段

2>括号切换

  • 在程序中,括号的使用频率很高,并且都是成对出现的
命令 功能
% 成对的括号间快速切换
  • 指针所在行的括号间切换
  • 若指针在括号外,会跳到右括号(括号结束)
  • 若指针在括号内,会跳到左括号(括号开头)
  • 成对的括号会高亮显示

3>标记

  • 非常常用的功能
  • 在开发时,某一块代码可能需要稍后处理,就可以先添加一个标记。这样就可以快速地跳转回来 或者执行其他编辑操作
  • 标记名称 可以是a-z或者A-Z之间任意的一个 字母
  • 添加标记的行被删除,标记也随之删除
  • 如果添加了相同名称的标记之前的标记会被替换掉
命令 英文 功能
m一个字母 mark 添加标记
'标记字母 直接定位到 标记字母 所在位置

4>选中文本(可视模式)

  • 在vi中要选择文本,需要先使用Visual命令切换回可视模式
  • vi中提供了三种 可视模式,可以方便程序员选择选中文本的方式
  • Esc可以放弃选中,返回到命令模式
命令 模式 功能
v 可视模式 从光标位置开始按照正常模式选择文本
V 可视行模式 选中光标经过的完整行
Ctrl v 可视块模式 垂直方向选中文本
  • 可视模式下,可以和移动命令连用。例如:ggVG能够选中所有内容

4)撤销重复

1>撤销和恢复

命令 因为 功能
u undo 撤销上次命令
Ctrl r redo 恢复撤销的命令
  • u可以一直可以撤销到打开文件的初始状态

2>删除文本

命令 英文 功能
x cut 删除指针所在字符,或删除选中文字
d移动命令 delete 删除移动命令对应的内容
dd delete 删除指针所在行,可以ndd复制多行
D delete 删除至行尾
  • x、dd的前面可以使用数字,指定删除个数/行数

3>复制、黏贴

  • vi中提供有一个复制文本的缓冲区 (类似剪贴板,但更强大)
  • 复制 命令会将选中的文字保存在缓冲区
  • 删除 命令删除的文字也被保存在缓冲区(类似于剪切操作)
命令 英文 功能
y移动命令 copy 复制
yy copy 复制一行,可以 数字yy复制多行
p paste 黏贴
  • 和系统的剪切板不是同一个,其它软件中复制的内容,不能用p命令黏贴
  • 但可以在编辑模式 下使用鼠标右键黏贴

5)查找替换

1>替换

命令 英文 功能 工作模式
r replace 替换当前字符 命令模式
R replace 进入替换模式,对光标后的进行修改 替换模式
  • R命令可以进入替换模式,替换完成后,按下Esc回到命令模式
  • 替换命令 的作用就是不用进入编辑模式, 对文件进行轻量级的修改

2>缩进和重复执行

命令 功能
>> 向右缩进
<< 向左缩进
. 重复上次命令
  • 可视模式 下,缩排命令只需要一个<或者>

在程序中缩进 通常用来表示代码的归属关系

  • 每次增加完缩进后,会从可视模式回到命令模式。如果想添加多个缩进,重复执行旧非常必要了

3>查找

常规查找

命令 功能
/str 查找str
  • 查找到指定内容之后,使用Next查找下一个出现的位置:
  • n 查找下一个
  • N 查找上一个
  • 取消高亮显示:可以输入文件中不存在的内容

单词快速匹配

命令 功能
* 光标所在位置,向后寻找所在光标单词
# 光标所在位置,向前寻找所在光标单词
  • 在开发中,通过单词快速匹配,可以快速看到这个单词在其他说明位置使用过

4>查找替换

  • 在vi中查找和替换命令,需要在末行模式下执行
  • 命令格式(固定格式):

%s///g

1.全局替换

  • 一次性 替换文件中的所有旧文本
  • 命令格式:

%s/旧文本/新文本/g

  • 末行模式下移动光标可以用↑↓←→方向键

2.可视区域替换

  • 先选中 要替换文字的范围
  • 命令格式:

s/旧文本/新文本/g

3.确认替换

  • 推荐使用,会有确认提示
  • 记住前四个就好

%s/旧文本/新文本/gc

按键 英文 功能
y yes 确认替换
n no 取消替换
a all 替换所有
q quit 退出替换
l last 最后一个,并把光标移动到行首
^E 向下滚屏
^Y 向上滚屏

6)编辑

1>插入命令

命令 英文 功能 ?常用
i insert 在当前字符前插入文本 常用
I insert 在行首插入文本 较常用
a append 在当前字符后添加文本
A append 在行末添加文本 较常用
o 在当前行后面插入一空行 常用
O 在当前行前面插入一空行 常用

在这里插入图片描述

2>编辑命令与数字连用

  • 连续输入N个同样的字符:
  1. 命令模式下:
  2. 输入次数,如50
  3. 输入i进入编辑模式
  4. 输入重复的文字
  5. 按下Esc返回命令模式,vi就会将编辑模式里的操作重复50次

日常开发时,不要在进入编辑模式前最好不要按数字

  • 回想一下之前讲过的,数字在命令模式的作用

3>给代码增加注释

  • 利用可视块 给代码增加注释
  1. 打开命令模式
  2. 移动到要添加注释的第一行代码,按^来到行首
  3. Ctrl V进入可视块模式
  4. 输入I进入编辑模式,并在行首插入(在可视模式下,只有按I才能进入编辑模式)
  5. 添加完#返回命令模式 就好了

四、分屏命令

  • 属于vi的高级命令,可以同时编辑和查看多个文件

1)末行命令扩展

  • 末行命令 主要是针对文件进行操作的:保存、退出、搜索&替换、另存、新建、浏览文件
命令 英文 功能
e . edit 会打开vi内置的文件浏览器,浏览当前目录下的文件
n 文件名 new 新建文件
w 文件名 write 另存为,但仍然编辑该文件,并不会切换文件(相当于复制文件)
  • .指代的是当前目录,也可以替换为其它路径。进入vi文件浏览器,可以使用hjkl来移动,使用回车确定要编辑的文件。
  • e也可以加空格后直接跟文件名。(可以使用Tab智能补全文件名)

切换文件之前,必须保证这个文件已经被保存!

  • w 文件名用于阶段性备份

2)分屏命令

  • 使用分屏命令,可以同时编辑和查看多个文件
命令 因为 功能
:sp 文件名 split 横向增加分屏
:vsp 文件名 vertical split 纵向增加分屏
  • 记不住文件名,同样可以传入一个.来打开内置文件浏览器

1>切换分屏窗口

  • 分屏窗口都是基于Ctrl w这个快捷键的,w对应的英文单词是window
命令 英文 功能
w window 切换到下一个窗口
r reverse 互换窗口,只是换窗口位置,不会换内容
c close 关闭当前窗口(仅剩一个窗口时,不可关闭)
q quit 退出当前窗口(如果仅剩一个窗口,则关闭vi)
o other 关闭其它窗口
发布了48 篇原创文章 · 获赞 30 · 访问量 4657

猜你喜欢

转载自blog.csdn.net/weixin_44925501/article/details/103432669