- 一. vi简介
- 1. 为什么要学习vi?
- 2. vi和vim
- vi
- vi的特点
- vim
- (二). vi的基本使用
- 一. vi的打开方式
- 二. vi的三种工作模式
- 1. 末行模式
- 2. 命令模式
- 1. 移动和选择
- 2. 撤销和恢复撤销
- 3. 编辑模式
- 1. 复制、粘贴
- 2. 替换
- 3. 缩排命令和重复执行
- 4. 查找替换
- 5. 插入命令
- 6. 分屏命令
- vi使用的注意事项
- vi使用的注意事项
- 在工作中,要对服务器上的文件进行简单的修改,可以使用ssh远程登录到服务器上,并且使用vi进行快速的编辑即可。
- 在远程终端中,没有图形界面,要编辑文件,vi是最佳选择!
- 所以,我们要学会使用一些vi常用的命令。
常见需要修改的文件内容包括:
- 源程序
- 配置文件,例如ssh的配置文件~/.ssh/config
- 在很多linux发行版中,直接把vi做成vim的软链接
- vi是linux中最经典的文本编辑器
- vi的核心思想–>让程序员手指始终保持在键盘的核心区域就能完成所有的编辑操作
- 没有图形界面的功能强大的编辑器
- 只能是编辑文本内容,不能对字体、段落进行排版
- 不支持鼠标操作
- 没有菜单,只有命令
- vi编辑器在系统管理、服务器管理编辑文件时,其功能永远不是图形界面的编辑器所能比拟的
- vim是vi发展出来的一个文本编辑器,支持代码补全、编译及错误跳转等方便编程的功能特别丰富
- 在程序员中被广泛使用,被称为编辑器之神
- 打开和新建文件
vi 文件名
- 在终端中输入vi在后面跟上文件名即可
- 如果文件已经存在,会直接打开
- 如果文件不存在,则会新建一个文件
# vi 文件名 vi a.py
2.打开文件并且定位行
- 在开发时,如果知道某行代码有错,就可以快速定位
到文件末尾处:
# vi 文件名 + vi a.py +
到文件第6行:
# vi 文件名 +6 vi a.py +6二. vi的三种工作模式
vi有三种基本工作模式:命令模式、末行模式、编辑模式。
- 命令模式: 打开文件首先进入命令模式,是使用vi的入口,通过命令对文件进行常规的编辑操作:定位、翻页、粘贴、删除等。
- 末行模式: 执行保存、退出等操作。
- 编辑模式: 正常的编辑文字。
-
在命令模式下,按下:键即可进入末行模式下,此时 vi 会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个:作为末行模式的说明符,等待用户输入命令。
-
多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)
1.常用命令
| 命令 | 描述 |
|---|---|
| w | 保存 |
| q | 退出,若没有保存,不允许退出 |
| q! | 强制退出 |
| wq | 保存并退出 |
| x | 保存并退出 |
2.末行命令扩展
- 在vi编辑环境下切换到其他文件的操作
| 命令 | 描述 |
|---|---|
| e . | 打开内置的文件浏览 |
| n 文件名 | 新建文件 |
| w 文件名 | 文件另存为 |
-
切换文件之前必须保证当前这个文件已经被保存
-
w另存为仍然编辑的是当前文件,并不会马上切换文件
-
在实际开发中,w命令可做阶段性的备份代码
- 进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc键即可进入命令模式。
- 在命令模式下,我们可以输入 vi 命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释。若输入的字符是合法的 vi 命令,则 vi 在接受用户命令之后完成相应的动作。
- 行数移动
| 命令 | 描述 |
|---|---|
| gg | 回到文件顶部 |
| G | 去到文件底部 |
# 回到文件顶部 gg # 去到文件底部 G # 去到第五行 5gg # 去到第五行 : 5
2.屏幕移动
| 命令 | 描述 |
|---|---|
| ctrl + b | 向上翻页 |
| ctrl + f | 向下翻页 |
| H | 屏幕顶部 |
| M | 屏幕中间 |
| L | 屏幕底部 |
# 向上翻页 ctrl + b # 向下翻页 ctrl + f # 屏幕顶部 H # 屏幕中间 M # 屏幕底部 L
3.段落移动
| 命令 | 描述 |
|---|---|
| []、{}、() | 从当前段落直接移动到下一段落 |
| % | 在一对 " () "间移动 |
- vi中使用空行来区分段落
- 在程序开发时,通常一段功能相关的代码会写在一起(之间没有空行)
- 代码中,()、[]、{}使用频率很高,而且都是成对出现的
4.标记
| 命令 | 描述 |
|---|---|
| m | 添加一个标记 |
| x | 标记名称: a ~ z |
-
使用m增加一个标记,这样下次就可以快速的挑战回来或者执行其他编辑操作
-
在开发时,某一段代码可能需要稍后再处理,例如我们会而要编辑、查看其他位置的代码,这时可以使用标记
-
标记名称可以是a~z
-
如果在其他行添加了同名的标记,之前添加的标记被替换掉
-
标记完后,使用'x定位到标记x的所在位置
# 在某行标记上a标记 ma # 跳转到标记a的位置 'a
5.选中文本(可视模式)
vi中提供了三种可视模式: 可视模式(v)、可视行模式(V)、可视块模式( Ctrl+v )。
| 命令 | 描述 |
|---|---|
| v | 可视模式: 从光标位置开始按照正常模式选择文本 |
| V | 可视行模式: 选中光标经过的完整行 |
| Ctrl + v | 可视块模式 : 垂直方向选中文本 |
# 可视模式 v # 可视行模式 V # 可视块模式 Ctrl + v
- 可视模式下,可以和移动命令连用,例如: ggVG选中所有内容
| 命令 | 描述 |
|---|---|
| u | 撤销之前一次错误的编辑操作 |
| Ctrl + r | 恢复撤销的命令 |
# 撤销之前一次错误的编辑操作 u # 恢复撤销的命令 Ctrl + r
删除文本
| 命令 | 描述 |
|---|---|
| x | 删除光标所在字符 |
| d | 删除移动命令对应的内容 |
# 删除光标所在字符 x # 或者删除选中文字 5x # 从光标到单词末尾 dw # 从光标到一行的起始位置 d0 # 从光标删除到段落结尾 d} # 从光标到连续后的5行 5dd # 从光标所在行删除到指定代码行之间的所有代码 dG # 从光标所在行删除到标记a之间的所有代码 d'a3. 编辑模式
- 在命令模式下输入相关的命令都可以进入到文本的编辑模式。
vi中提供有一个被复制文本的缓冲区。
- 复制命令会将选中的文字保存在缓冲区
- 删除命令删除的文字会被保存在缓冲区
- 在需要的位置,使用粘贴命令可以将缓冲区的文字插入到光标所在的位置
| 命令 | 描述 |
|---|---|
| y | 复制 |
| p | 粘贴 |
# 复制1行 yy # 复制5行 5yy # 复制一段 y} # 复制到末尾 yG
- 复制完再p
- d和x本质上也是剪切操作,如果是d或者x后,也可以P
| 命令 | 描述 |
|---|---|
| r | 替换当前字符 |
| R | 替换当前行光标后的字符 |
- R命令可以进入到替换模式,按下ESC可以回到命令模式
- 替换命令的作用就是不用进入编辑模式
| 命令 | 描述 |
|---|---|
| << | 向左减少缩进 |
| >> | 向右增加缩进 |
| V< V> | 多行缩进 |
| . | 重复上次命令 |
# 代码向右缩进(4各空格) >> # 重复上次命令 . 多行缩进 V>4. 查找替换 1.查找
/str 回车
/hello 回车
- 找到指定内容后,n查找下一个,N查找上一个
- *向后查找当前光标所在单词
- #向前查找当前光标所在单词
2.查找并替换
: %s///g (vi中的末行模式下执行)
# 格式: :%s///g3.全局替换
- 一次性替换文件中出现的旧内容
:%s/旧内容/新内容/g
:%s/world/python/g4.范围替换
:s/旧/新/g
:s/world/python/g5.确认替换(推荐使用)
全局:
:%s/旧/新/gc
:%s/world/python/gc局部:
:s/旧/新/gc
:s/world/python/gc5. 插入命令6. 分屏命令
命令 描述 i 当前字符前插入 a 当前字符后插入 o 当前行的下一行插入空行 I 行首插入 A 行尾插入 O 当前行的上一行插入空行
- 使用分屏命令,可以同时编辑和查看多个文件
命令 描述 w 切换到另一个窗口 r 互换窗口 c 关闭当前窗口 q 退出当前窗口 o 关闭其他窗口
- 分屏窗口都是基于ctrl + w,每次操作屏幕前都要按一下
1.横向分屏
:sp
2.纵向分屏
:vsp 文件名 或 :vsp .
# 横向 :sp #纵向 :vsp hello.py :vsp .vi使用的注意事项1.在开发时,在进入编辑模式之前,尽量避免按数字
2.利用可视块给多行代码增加注释:
命令行模式: ctrl + v
大写I (编辑模式): 添加 #
ESC回到命令模式
文件
命令 描述 w 切换到另一个窗口 r 互换窗口 c 关闭当前窗口 q 退出当前窗口 o 关闭其他窗口
- 分屏窗口都是基于ctrl + w,每次操作屏幕前都要按一下
1.横向分屏
:sp
2.纵向分屏
:vsp 文件名 或 :vsp .
# 横向 :sp #纵向 :vsp hello.py :vsp .vi使用的注意事项1.在开发时,在进入编辑模式之前,尽量避免按数字
2.利用可视块给多行代码增加注释:
命令行模式: ctrl + v
大写I (编辑模式): 添加 #
ESC回到命令模式



