就像Windows 下有文本编辑器可以生成 .txt 文件, Vi就是Linux下的文本编辑器, 只不过我们要用命令进行操作.


需要主意的是vi 或者vim(传统vi的加强版)只能进行文本编辑, 无法进行排版, 

如果想要查看更多的教程, 可参考:

​​​​https://github.com/HanielF/VimTutor​

当然, 最全的教程还是官网啊!!! , 大家也可以去看官网

Vim 的三种模式

1.命令模式(常用命令)

就和和查文档一样, 想象一下, 我们Windows系统下, 点开word 文件, 就可以查看文件内容了, 这个命令模式就是让人们看文件内容的, 也就是(只读)但是, 此时我们无法编辑

# 该模式下的常用命令

# 一个非常好用的命令========================================================
. # 重复上一步的操作
u # 恢复上一步操作

# 复制的许多命令=====================================================
yy # 复制当前光标所在的整行
Y # 和上方的yy功能一模一样
yw # 复制当前光标所在的单词
nyw # 复制光标所在的内个单词
nyy # 复制包括当前行在内的n 行


#选中命令(很好用)
v # 高亮选中当前字母, 结合 k,j,h,l 可以选中很多东西, 在结合上方的复制, 就可以方便的复制啦
V # 和上方的v用法类似,高亮选中当前光标所在行


# 粘贴命令=========================================================
p # 将会在光标所在行的下面那一行进行粘贴
c # 剪切选择的内容到剪贴板并且进入插入模式。

:reg # 展示vim 多重粘贴板的内容 和 版的名称
" # 使用多重粘贴板, 看起来没有啥效果, 但是如果有粘贴内容的话, 就可以
# 在vim的寄存器中看到剪切的内容了
# 例如:我们要拷贝当前行到寄存器b , 按 “byy
# 当前行应该已经存在了寄存器 k 里面直到你又拷贝了一些东西进入寄存器 k。
# 现在可以使用命令 “kp 来粘贴寄存器 k 里面的内容到你想要的位置。


# 光标移动=========================================================
h # 光标左移一个字母 ,如果最后一个字母后面啥也没有,那就啥反应也没有.
l # 光标右移动, 就是向右边移动一个字母, 如果后面啥也没有那就没法移动了
j # 下移, 相当于跳转到下一行
nj # 将光标向下移动n行, 并且出现在开头 例如 3j 将光标向下移动3行的开头.
k # 上移, 相当于跳转到上一行
e # 移到下一个词的行尾
w # 移到下一个词的行首
nG # 表示跳转到第n 行的行首. 注意: 一定是G
ddp # 将光标所在的行往下移动一行, 下面的移动到 光标当前所在的行
# 注意: 如果是 dd 会将光标所在的一整行都删除

xp #将当前光标对应的字符与后一个字符进行交换.
# 注意: 如果是 x 将会把光标对应的字符删除

f字母 # 将光标往接下来找, 移动到这个字母, 例如 fa 将光标移动到下一个a处
# 对于 f字母 , 可以使用 ; 进行重复操作

F字母 # 和 f 功能类似, 但是方向相反

t字母 # 将光标移动到这个字母的左边 例如: ta 表示将光标移动到下一个 a 的左边

gg # 跳转到文件第一行的开头
:$ #跳转到文件的最后一行的开头



# 删除=============================================================
dw # 删除 光标所在的那个词语
dd # 删除光标所在的那一整行
ndd #
D # 从光标所在位置开始, 包括光标对应的字符, 一直删除到本行的行尾
x # 删除当前光标所在的字母



# 检索文件内容==============================================
/要搜索的内容 回车 # 如果有查找内容的话,
# 光标会直接跳转到查找到的第一个内容开头处
# 按 n 跳转到下一个被检索到的
# 按 N 跳转到上一个被检索的
# 注意: 1. 回车完了之后其实就 已经进入输入模式了, 可以直接编辑的.
2. 区分: / 和 ?
用 /要搜索的内容 光标会直接跳转到查找到的第一个,
然后按n 再跳转到第二个, 以此类推

用 ?要搜索的内容 光标会从最后查找到的的最后那个开始,
然后按n , 再跳转到 倒数第二个, 然后,倒数第三个, 以此类推

* # 读取当前光标所在的单词, 跳转到下一个同样的单词的第一个字母处.

m字母 # 打一个标签, 例如: 当前字母处于某个单词的a处, 此时使用 ma 看起来没啥反应
# 但是当我们往后接着看文件的时候, 想要回头看这里的时候,
# 使用 `a 就可以直接跳转到这里了


`字母 # 跳转到之前打过的标签处, 注意用的是 反引号





# 替换 (其实此时需要进入行编辑模式) =================================
:%s /search/replace # % 表示所有
# s 表示查找
# search 就是 要查找的内容
# replace 将search 替换成 replace.

:n,m s/search/replace/gc # 把从第n 行到第m 行的 search 换成 replace
#g 表示替换全部
# c 表示询问, 会有提示 y,n, a, q Y 之类的
y 代表yes 表示确认替换
n 代表 no 表示不替换了
q 代表 退出

:s /search/replace/g #把当前光标所在行的search 全部替换成replace,
# 并把其他行的search高亮显示

2.输入模式(常用命令)

按一下 i , 或者 a  或者 o , 或者s 都可以进入 输入模式, 进入以后, 终端的最后一行, 会有insert提示, 此时我们就可以对文件进行内容编辑了.

键盘的ESC , 就可以退出 输入模式, 进入命令模式了.

注意: 此时文件还未进行保存, 要想进行保存.

# 此模式下的进入命令介绍   (其实记住一个  i 和 就可以了)
a # 光标从当前位置的后面开始添加内容, 就是说光标会完后移动一个字符
A # 光标从所在行的最后面, 从最后开始添加内容
i # 从光标所在位置前面开始添加内容
I # 从光标所在地方的第一个非空白字元前面添加内容.
o # 在光标所在行的下面新增一行,从新增的哪行开始添加内容


3.行编辑模式(常用命令)

命令行模式下, 输入冒号, 进入该模式, 进行一些批量化的操作批量化操作(查找,替换之类的), 最重要的就是 人们在这个模式下对修改后的文件进行保存

# 常用命令 (不要忘记 冒号)

:q # 在文本未被编辑的情况下进行, 使用这个命令可以退出(不推荐)
:q! # 强制退出(但是会自动生成临时文件, 下次编辑的时候会有提示)
:wq # 保存退出
:w # 保存但是不退出
:set number # 在左侧显示行号
:数字 # 跳转到指定的行 例如 输入 :1 表示跳转到第1 行.
:$ # 直接跳转到行首


vim 快捷键

翻页快捷键

ctrl + u            # 看之前已经翻过去的半页
ctrl + b # 看之前已经翻过去的整页
b # 几个字符几个字符的挨个的返回到之前已经看过的内容

ctrl + d # 看接下来的半页
ctrl + f #看接下来的整页
shift+ g # 直接跳转到最后一行(想象地板 ground 不就是在地上吗?)


还有很多命令用到了, 到时候在在这篇博客里面添加(持续更新中)


上方部分命令样例演示

显示行号的例子:

Vi 教程(自我总结复习)_寄存器


跳转到指定的行

Vi 教程(自我总结复习)_vim_02



查找文件内容

Vi 教程(自我总结复习)_常用命令_03


替换的演示

Vi 教程(自我总结复习)_常用命令_04