Vi编辑器必备操作
温馨提示:请结合右边框的目录结构快速查看和判断是否内容为自己需要!
vi 编辑器
内容组成
-
vi
说明 - 打开和新建文件
- 三种工作模式
- 常用命令
- 分屏命令
- 常用命令行图解
1. vi
简介
1.1 vi
学习的必要性
-
要对远程服务器进行相关的配置文件的编辑,在无法使用图形界面的情况下操作导致学会使用vi/vim的必要性,这一点被视为必须学会使用vi/vim的最重要原因。
-
我想大多数情况下最好还是将文件下载下来修改完成,确定无误之后再提交可能是最好的方式,不然一条忘记判空 的
rm -rf(xxx==false)
可能导致令人帅歪歪的结果。 -
考虑到windows与linux即使在回车换行上都存在着差异,所以更加准确的最好使用服务器端的环境进行文件的编辑可以避免运行的异常。
-
在没有图形界面的环境下,要编辑文件,
vi
是最佳选择,理由是系统自带,无需安装其他的插件/是软件!
1.2 vi
-
vi
是Visual interface
的简称,是Linux
中系统自带的一块的文本编辑器。 -
键盘有效键位区域-红色标记部分。
-
vi
的特点:- 没有图形编辑器界面下的文件,新建等选项,所以这是一款完全无指导意识的文件编辑器,要么
会
/要么不会
。 - 不能对字体、段落进行排版,比如设置字体大小,段落换行,像自带的python,缩进决定程序逻辑的层次结构。
- 值得恭喜的是概况文件编辑器,不能通过点击鼠标定位到具体位置。
- 没有图形编辑器界面下的文件,新建等选项,所以这是一款完全无指导意识的文件编辑器,要么
vim
-
可以视为vim是对vi友好型的改进,vim = vi improved。
-
vim
是从vi
发展出来的一个文本编辑器,支持 代码补全、编译 及 错误跳转 等方便编程的功能特别丰富,在程序员中被广泛使用,被称为 编辑器之神 -
但是我最想表达的是:
懵逼,一直懵逼,全程懵逼(我在哪儿,我在干什么,这特么是什么鬼玩意,我要怎么退出…
。 -
导致的结果是,这款牛逼的编辑器,需要极多的快捷键-包括但不限于组合键,快捷命令需要记忆!
查询命令位置
- 在很多
Linux
发行版中直接把vi
做成vim
的软连接,比如执行vi test
, 可能调用的是vim,vim初次进入编辑有简单的快捷键提示。
# 查找 vi 的运行文件.
which vi
ls -l /usr/bin/vi
ls -l /etc/alternatives/vi
ls -l /usr/bin/vim.basic
# 查找 vim 的运行文件.
which vim
ls -l /usr/bin/vim
ls -l /etc/alternatives/vim
ls -l /usr/bin/vim.basic
2. vi/vim文件操作
2.1文件打开/创建
- 在终端中输入
vi
在后面跟上文件名 即可。
# for example.
# 当前目录下创建Test.py文件,若该文件存在则打开该文件。
vi Test.py
2.1 打开文件并且定位行
- 格式:
vi Test.py + number
。
# 打开Test.py,并且光标移动到10行。
vi Test.py + 10
提示:如果只带上
+
而不指定行号,会直接定位到文件末尾。
2.2 异常关闭文件
- 如果
vi
异常退出,在磁盘上会保存Test.py.swap。 - vi Test.py打开后会有文件提示,按下字母
d
可以将其删除。
提示:按下键盘时,注意关闭输入法。
3. 三种工作模式
-
vi
有三种基本工作模式:-
命令模式
-
打开文件首先进入命令模式,是使用
vi
的 入口,可以理解为预览模式。
-
打开文件首先进入命令模式,是使用
-
末行模式 —— 执行 保存、退出 等操作
- 要退出
vi
返回到控制台,需要在末行模式下输入命令 -
末行模式 是
vi
的 出口
- 要退出
- 编辑模式 —— 正常的编辑文字。
- 切换方式:编辑模式->按键esc可以切换到命令模式->命令模式输入:切换到末行模式->esc到命令行模式->按键i/I/a/A->编辑器模式。
-
记忆方式:任何模式下按
esc
到命令行
模式。以此为中转,i
编辑;或者是:
末行模式。
-
命令模式
提示:在
Touch Bar
的 Mac 电脑上 ,按ESC
不方便,可以使用CTRL + [
替代。
末行模式命令
# 按esc进入命令行模式,:切换到末行模式,x保存并且退出。
:x
4. 常用命令
命令学习
- 重复次数
- 在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令 重复执行指定次数
- 移动和选择(多练)
-
vi
之所以快,关键在于 能够快速定位到要编辑的代码行 - 移动命令 能够 和 编辑操作 命令 组合使用
-
- 编辑操作
- 删除、复制、粘贴、替换、缩排
- 撤销和重复
- 查找替换
- 编辑
温馨提示
-
vi
的命令较多,记忆很多的命令行只会是忘记的更多而已,先掌握基础的即可,熟练使用之后可以看手册,效果更好。 - linux操作系统**意输入法的切换问题。
4.1 光标移动
前提条件,在命令行模式之下,或者叫做预览模式之下进行的光标移动!
4.1.1 光标上、下、左、右移动
4.1.2 光标行内移动
- 0是数字
0
,不是字母O
!
4.1.3 行数移动
# 比如我要移动要16行,命令行模式之下。
16gg
# 第二种方式.
16G
# 第三种方式,`:` 切换到末行模式!
:16
4.1.4 屏幕移动
- 翻页之后默认定位到页的首行行首。
4.2 移动
4.2.1 段落移动
-
vi
中使用空行
来区分段落. - 在程序开发时,同一代码块是没有空行的,所以文件的缩进,空行都是有要求的,不要瞎几把换行。
4.2.2 括号切换
- 在coding中,
()
、[]
、{}
都是成对出现的。 - 在命令行模式下可以通过
%
跳转到该行的括号位置。
4.2.3 标记
- 若要对跳转到其他部分,但是又希望待会儿快速跳转回来而不是一行一行的判断到之前的行位置,可以通过添加标记的方式快速回到某行的具体位置。
- 如:在命令行模式之下输入
ma
,跳转到其他位置后在命令行模式之下可以通过 ``a` 快速跳转回来。
4.3 选中文本
- 复制文本需要对说复制的文本内容进行选中,再进行复制粘贴等操作。
- 在
vi
中要选择文本,需要先使用Visual
命令切换到 可视模式。 - 如下三种方式:
-
按
ESC
可以放弃选中,返回到 命令模式。 -
可视模式下,可以和光标移动连用,例如:
ggVG
能够选中所有内容。gg是行首行首,G是末行行末!
4.4 撤销和恢复撤销
- 后悔对操作的执行,回退操作叫做撤销,只能单方向,可以一直回撤到最初状态;若又想取消做的撤销操作叫做恢复撤销。
4.5 删除文本
提示:如果使用 可视模式 已经选中了一段文本,那么无论使用
d
还是x
,都可以删除选中文本。注意删除/剪切针对的是在vi下,自己独有的缓冲区保存,不是将剪切/删除的内容保存在剪贴板。
- 删除命令可以和光标移动命令连用,以下是常见的组合命令:
* dw # 从光标位置删除到单词末尾.
* d0 # 从光标位置删除到一行的起始位置.
* d} # 从光标位置删除到段落结尾.
* ndd # 从光标位置向下连续删除 n 行.
* d代码行G # 从光标所在行 删除到 指定代码行 之间的所有代码.
* d'a # 从光标所在行 删除到 标记a 之间的所有代码.
4.6 复制、粘贴
- 命令行一览
提示:
- 命令
d
、x
类似于图形界面的 剪切操作 ——CTRL + X
- 命令
y
类似于图形界面的 复制操作 ——CTRL + C
- 命令
p
类似于图形界面的 粘贴操作 ——CTRL + V
-
vi
中的缓冲区类似于剪贴板可以替换。
再次温馨提示:
-
vi
中的 文本缓冲区 和系统的 剪贴板 不是同一个! - 所以在其他软件中使用
CTRL + C
复制的内容,不能在vi
中通过P
命令粘贴 - 可以在 编辑模式 下使用 鼠标右键粘贴!
4.7 替换
-
R
命令可以进入 替换模式,替换完成后,按下ESC
可以回到 命令模式! - 替换命令 的作用就是不用进入 编辑模式,对文件进行 轻量级的修改!
- 建议使用r的替换操作,比如修改Test的T为t,可以将光标移动到T,按r再按T。
4.8 缩排和重复执行
- 重复命令的使用包括但是不限于复制粘贴等,而是可以重复所有的命令的。
4.9 查找
常规查找
- 查找到指定内容之后,使用
Next
查找下一个出现的位置:-
n
: 查找下一个。 -
N
: 查找上一个。
-
- 如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可!
单词快速匹配
- 通过单词快速匹配,可以快速看到这个单词在其他什么位置使用过。比如函数名称的查找…
4.10 查找并替换
- 在
vi
中查找和替换命令需要切换到末行模式下执行。 - 基本命令格式:
:%s///g
4.10.1 全局替换
- 一次性替换文件中的 所有出现的旧文本
- 命令格式如下:
:%s/旧文本/新文本/g
4.10.2 可视区域替换
- 先选中 要替换文字的 范围
- 命令格式如下:
:s/旧文本/新文本/g
4.10.3 确认替换
- 如果把末尾的
g
改成gc
在替换的时候,会有提示!推荐使用!
:%s/旧文本/新文本/gc
-
y
-yes
替换 -
n
-no
不替换 -
a
-all
替换所有 -
q
-quit
退出替换 -
l
-last
最后一个,并把光标移动到行首 -
^E
向下滚屏 -
^Y
向上滚屏
4.11 插入命令
- 在
vi
中进入编辑模式方式有以下几种:
代码重复与代码注释
- 移动到要添加注释的 第 1 行代码,按 ^ 来到行首
- 按 CTRL + v 进入
可视块
模式,V进入的是行模式! - 使用 j 向下连续选中要添加的代码行
- 输入 I 进入 编辑模式,并在 行首插入,注意:一定要使用 I,行首。
- 输入 # 也就是注释符号
- 按下 ESC 返回到 命令模式,返回之后 vi 会在之前选中的每一行代码 前 插入 #
简而言之就是:
选中行->行首插入#(可视化行模式可能比可视化块模式此时更有益处)->esc返回。
5. 分屏命令
- 属于
vi
的高级命令 —— 可以 同时编辑和查看多个文件
5.1 末行命令扩展
5.2 分屏命令
- 使用 分屏命令,可以 同时编辑和查看多个文件!
5.2.1 切换分屏窗口
分屏窗口都是基于
CTRL + W
这个快捷键的,w
对应的英文单词是window
,切换之后才能继续使用下面的命令行。
5.2.2 调整窗口大小
分屏窗口都是基于
CTRL + W
这个快捷键的,w
对应的英文单词是window
。
调整窗口宽高的命令可以和数字连用,例如:
5 CTRL + W +
连续 5 次增加高度
6. 命令行图解
vimrc
-
vimrc
是vim
的配置文件,可以设置 vim 的配置,包括:热键、配色、语法高亮、插件 等 -
Linux
中vimrc
有两个位置,用户主目录下的配置文件优先级更高。
/etc/vim/vimrc
~/.vimrc
- 常用的插件有:
- 代码补全
- 代码折叠
- 搜索
- Git 集成
- ……
- 网上有很多高手已经配置好的针对
python
开发的vimrc
文件,可以下载过来直接使用,或者等大家多Linux
比较熟悉后,再行学习!