《Vim中文用户手册》百度云:
链接:https://pan.baidu.com/s/1ahbb7IEkT9p0biqAVxfEOw
提取码:love
1 Vim 简要介绍
通过前面的学习,我们知道,Linux系统中一切皆是文件,因此,当我们在命令行下更改文件内容时,不可避免地要用到文本编辑器。
作为一名Linux初学者,必须熟练掌握Linux中至少一款文本编辑器的用法。对文本编辑器的功能(查找、剪切、粘贴等)了解越多,对自身越有帮助。
Vim文本编辑器,是由Vi发展演变过来的文本编辑器,因其具有使用简单、功能强大、是Linux众多发行版的默认文本编辑器等特点,成功圈住了很多人成为其死忠粉。
【Vim安装】
众多Linux发行版系统,通常已经默认安装好了Vi或Vim文本编辑器,Centos也不例外。
如果在命令行模式下输入
vim
,输出结果为Command not found
,则表示此系统中未安装Vim。
在 Centos系统中,使用yum install vim
命令,即可安装Vim;需要注意的是,此命令运行时,有时需要手动确认[y/N]
,遇到这种情况,选择y
即可。
如果在命令行模式下输入
vim
,输出结果为下图,则表示此系统中安装了Vim。
想要退出Vim时,先按一下“esc”键,然后输入
:
,这时候就会在最下面显示出一行,Vim进入底线命令模式,输入q
,回车退出。
2 Vim 工作模式
在Linux系统中,所有的内容都会以文件的形式进行存储,在当命令行下更改文件内容时,常会用到文本编辑器。
Vim编辑器具有3种工作模式:
- 命令模式 command mode
- 输入模式(编辑模式) insert mode
- 底线命令模式 last line mode
这3种模式可以随意切换,如下图所示:
1) 命令模式
用户刚刚启动 vi/vim时,便进入了命令模式。
该状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下 i 键,并不会输入字符i
,而是当做一个命令。
以下是常用的几个按键命令:
- i 键 切换到输入模式,以输入字符。输入模式也叫编辑模式,可编辑文档(最常用)。
- x 键 删除当前光标所在处的字符。
- :键:切换到底线命令模式,以在最后一行输入命令。
- 方向键:k、j、h、l,以移动光标。
2) 输入模式(编辑模式)
在命令模式下按 i 键 就进入了 输入模式;
按ESC可退出输入模式;
3)底线命令模式
在命令模式下按 Esc 键就进入了底线命令模式;
按ESC可退出底线命令模式;
以下是常用的几个命令:
:q
退出程序:w
保存文件
对于新手来说,经常不知道自己处于了什么模式。不论是自己忘了,还是不小心切换了模式,都可以按一次Esc键返回命令模式。如果多按几次Esc键后听到“滴— —”的声音,则代表你已经处于命令模式。
3 Vim 基本操作
3.1 Vim打开文件
使用Vim打开文件很简单,例如在命令行模式下打开一个自己编写的文件/home/chen/my/test.txt
。打开方法如下:
[chen@localhost ~]$ vim /home/chen/my/test.txt
刚打开文件时,Vim处于命令模式,此时文件的下方会显示文件的一些信息,包括文件的总行数和总字符数,以及当前光标所在的位置等,此时可以使用插入命令进入输入模式对文件进行编辑。由于这是一个新建的文件,所以你会得到一个空的窗口,屏幕看起来会像下面一样:
以波浪线(~)开头的行表示该行在文件中不存在。最底下所显示的文件信息是临时的,新的信息可以覆盖掉它。
除此之外,我们还可以利用下表中打开文件的命令格式,针对特定情形使用适当的打开方式,可以极大提高效率。
Vim命令使用的选项 | 说明 |
---|---|
vim filename | 打开或新建一个文件,光标置于第一行的行首 |
vim -r filename | 恢复上次vim打开时崩溃的文件 |
vim -R filename | 把指定的文件以只读方式放入Vim编辑器中 |
vim -n filename | 打开文件,并将光标置于第n行的行首 |
[O]pen Read-Only:打开此档案成为只读档, 可以用在你只是想要查阅该档案内容并不想要进行编辑行为时。
[E] dit anyway:还是用正常的方式打开你要编辑的那个档案, 并不会载入暂存盘的内容。不过很容易出现两个使用者互相改变对方的档案等问题!
[R] ecover:就是加载暂存盘的内容,用在你要救回之前未储存的工作。 不过当你救回来并且储存离开 vim 后,还是要手动自行删除那个暂存档喔!
[D] eletc it:你确定那个暂存档是无用的!那么开启档案前会先将这个暂存盘删除! 这个动作其实是比较常做的!因为你可能不确定这个暂存档是怎么来的,所以就删除掉他吧!
[Q] uit:按下 q 就离开 vim ,不会进行任何动作回到命令提示字符。
[A] bort:忽略这个编辑行为,感觉上与 quit 非常类似! 也会送你回到命令提示字符就是啰!
3.2 Vim 编辑文件
3.2.1 Vim 插入文本
从命令模式进入输入模式进行编辑,可以按下 I、i、O、o、A、a等键来完成,可以使用不同的键,光标所处的位置不同,如下表所示:决定光标的位置以及原有文本的移动方向。
快捷键 | 功能 |
---|---|
i 键 | 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 |
I键 | 在光标搜在行的行首插入随后输入的文本,行首的该行的第一个非空白字符,相当于光标移动到行首执行i命令 |
o键 | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
O键 | 在光标所在行的上面插入新的一行。光标停在空行首,等待输入文本 |
a键 | 在当前光标所在位置之后插入随后输入的文本 |
A键 | 在光标所在行的行尾插入随后输入的文本 |
3.2.2 Vim 查找文本
快捷键 | 功能 |
---|---|
/ 键 abc | 从光标位置向下查找字符串abc |
? 键 abc | 从光标位置向上查找字符串abc |
n键 | 显示下一个所匹配的字符串abc |
N键 | 显示上一个所匹配的字符串abc |
在命令模式下,按键 / 或 ?后,会在底线出现输入命令提示,此时输入待查找字符串,按下Enter键后即可以实现相应查找功能。
【用 / 键和用**?**键的区别】
- / 键后跟查找的字符串。vim会显示文本中第一个出现的字符串(光标所处位置)
- ? 键后跟查找的字符串。vim会显示文本中最后一个出现的字符串(光标所处位置)
3.2.3 Vim 替换文本
Vim替换命令基本格式:
:[range]s/from/to/[flags]
1)range
:作用范围
.
:指定光标所在行n
:指定第n
行$
:指定最后一行n,m
:指定第n
行到第m
行%
:指定所有行
上面的所有
range
都可以组合起来使用;表示方法都可以通过+
、-
操作来设置相对偏移量;且都可以套入n,m
格式来设置范围,如:
.+1
:当前行所在的下一行
.+1,$-1
:表示当前行所在的下一行 到 倒数第二行
2)flags
:替换标记
c
:confirm,每次替换前询问g
:不询问,整个替换i
:大小写不敏感查找I
:大小写敏感查找(默认)
上面的所有
flags
都可以组合起来使用,如:
gc
:匹配范围内全部替换,且询问
gi
:匹配范围内全部替换,且不区分大小写
3.2.4 Vim 选择文本
文本的选择对编辑器来说是很基本的东西。
按键 | 功能 |
---|---|
v 键 | 从光标当前字符开始,光标所经过的地方会被选中。再按一下 v 键结束 |
V 键 | 从光标当前行开始,光标经过的行都会被选中。再按一下 V键结束 |
ctrl v键 | 从光标当前位置开始,选中光标起点和终点的矩形区域。再按一下 ctrl v 键结束 |
选中后就可以用编辑命令对其进行编辑,如
d 键 删除; y 键 复制 ; p键 粘贴。
3.2.5 Vim 删除文本
快捷键 | 功能 |
---|---|
d 键 | 删除所选部分 |
x 键 | 删除光标所在字符 |
d d 键 | 删除光标所在行 |
注意,被删除的内容并没有真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 “p” 键,就可以将刚才删除的内容又粘贴到此处。
3.2.6 Vim 复制粘贴文本
快捷键 | 功能 |
---|---|
y键 | 复制内容到剪切板 |
p键 | 粘贴内容到光标后 |
P键 | 粘贴内容到光标前 |
一般,大写键表示向上,小写键表示向下。如 f
x
和 Fx
,p和P。
行首 ^;行尾 $
文首gg;文尾G
3.2.7 Vim保存退出文本
VIm的保存和退出上在底线命令模式进行的
命令 | 功能 |
---|---|
:wq | 保存并退出Vim编辑器 |
:wq! | 保存并强制退出Vim编辑器 |
:q | 不保存就退出Vim编辑器 |
:q! | 保存出且强制退出Vim编辑器 |
:w | 保存但不退出Vim编辑器 |
:w! | 强制保存文本 |
:w filename | 另存到filename文件 |
:x! | 保存文本并退出Vim编辑器 |
:ZZ | 直接退出Vim编辑器 |
4 Vim 移动光标
Vim文本编辑器中,最简单的移动光标的方式是使用方向键,但这种方法的效率太低,更高效的方式是使用快捷键。
Vim移动光标最常用的快捷键及功能如下表所示,需要注意的是,表中所有的快捷键都是在命令模式下直接使用。
4.1 Vim快捷方向键
快捷键 | 功能 |
---|---|
h 键 | 光标向左移动一位 |
l 键 | 光标向右移动一位 |
j 键 | 光标向下移动一位 |
k 键 | 光标向上移动一位 |
最初使用,大家可能觉得比较别扭,但熟能生巧,使用此方式移动光标同样能够提高编辑速度。
4.2 光标以“词”为单位移动
某些情况下,可能需要光标迅速移动至一行中的某个位置,将光标以词为单位移动就会很方便。
快捷键 | 功能 |
---|---|
w 键或 W 键 | 光标向右移动一词(词首) |
b 键或 B 键 | 光标向左移动一词(词首) |
nw 键或 nW 键 | 光标向右移动n词(词首) |
nb 键或 nB 键 | 光标向左移动n词(词首) |
e 键或 E 键 | 光标向右移动一词(词尾) |
4.3 光标移动到行首或行尾
快捷键 | 功能 |
---|---|
数字 0 键 或 ^ 键 | 光标移动到当前行的行首 |
$ 键 | 光标移动到当前行的行尾 |
n$ 键 | 光标移动到当前行只有n行的行尾 |
4.4 光标移动至指定字符(当前行)
快捷键 | 功能 |
---|---|
fx | 光标移动至当前行中的下一个字符x 处 |
Fx | 光标移动至当前行中的上一个字符x 处 |
4.5 光标移动到指定行
快捷键 | 功能 |
---|---|
gg 键 | 光标移动到第一行行首 |
G 键 | 光标移动到最后一行行首 |
n G 键 | 光标移动到第n 行行首 |
:n | 底线命令模式,移动到第n 行的行首 |
4.6 光标移动到匹配的括号处
程序员在编辑程序时,经常会为将光标移动到与一个(
所匹配的)
处(对于{}、[]
一样)处而感到头疼。Vim提供了一个非常方便地查找匹配括号的快捷键,这就是 % 键。
首先将光标定位到{
处,按下快捷键 %,就可以将光标移动到}
处。
5 Vim 撤销和恢复撤销
使用Vim编辑文件内容时,经常会有如下2种需求:
- 对文件内容作出了修改之后,却发现整个修改过程是错误的或没有必要的,想将文件恢复到修改前的样子。
- 将文件内容恢复之后,经过仔细考虑,又感觉还是刚才修改过的内容更好,想撤销之前做的恢复操作。
快捷键 | 功能 |
---|---|
u 键 | 撤销最近一次对文本的操作 |
ctrl R 键 | 恢复最近一次对文本的操作 |
U 键 | 第一次会撤销对一行文本的全部操作,第二次会恢复对一行文本的全部操作 |
6 Vim 可视化模式
相信大家都使用过带图形界面的操作系统的文字编辑器,用户可以直接使用鼠标来选择要操作的文本,非常方便。在Vim编辑器中也有类似的功能,但不是通过鼠标,而是通过键盘来选择要操作的文本。
快捷键 | 功能 |
---|---|
v 键 | 字符可视化模式,此模式下目标文本的选择是以字符为单位的 |
V 键 | 行可视化模式,此模式下对文本的选择是以行为单位的 |
ctrl v 键 | 块可视化模式 |
值得一提的是,之前所学的在Vim命令模式下的很多命令,在可视化模式下仍然可用。
快捷键 | 功能 |
---|---|
d 键 | 删除选中的部分文本 |
D 键 | 删除选中部分所在的行 |
y 键 | 将选中部分复制到剪切板中 |
p 键 | 将剪切板中的内容粘贴到光标之后 |
P 键 | 将剪切板中的内容粘贴到光标之前 |
u 键 | 将选中部分文本 大写字符全部改为小写字符 |
U 键 | 将选中部分文本 小写字符全部改为大写字符 |
> 键 | 将选中部分文本右缩进table |
< 键 | 将选中部分文本左缩进table |
7 Vim 多窗口编辑模式
7.1 在开始编辑时创建多个窗口
Vim的多窗口是动态的,可以开始编辑时就打开多个窗口,也可以工作时随时增加和删除新窗口。
【Vim 上下层次窗口分布】
打开 /home/chen/my/test1.txt
文件和/home/chen/my/test.txt
文件。
[chen@loaclhost~]$ vim -o ./my/test1.txt ./my/test.txt
【Vim左右层次窗口分布】
打开 /home/chen/my/test1.txt
文件和/home/chen/my/test.txt
文件。
[chen@loaclhost~]$ vim -O ./my/test1.txt ./my/test.txt
7.2 在窗口间游走
快捷键 | 功能 |
---|---|
ctrl w h 键 | 向左游走 |
ctrl w j 键 | 向下游走 |
ctrl w k 键 | 向上游走 |
ctrl w l 键 | 向右 游走 |
8 Vim 批量注释
8.1 块注释法
【注释】
Ctrl + v 键进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 键进入行首插入模式输入注释符号如 //
或 #
,输入完毕之后,按两下 ESC键,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。
【取消注释】
Ctrl + v 键进入块选择模式,选中你要删除的行首的注释符号,注意 //
要选中两个,选好之后按 x键(或d键) 即可删除注释,ESC 键保存退出。
8.2 替换注释法
【注释】
:[range]s/^/注释符/[flags]
【取消注释】
:[range]s/^注释符/ /[flags]
9 Vim行号显示
行号显示底线命令:set nu
行号不显示底线命令::set nonu
附:Vim配置文件vimrc的介绍链接
https://blog.youkuaiyun.com/rudy_yuan/article/details/81055649
10 在Vim中执行Linux命令
:!cmd
不退出vim 执行命令 cmd:r !cmd
不退出vim执行命令cmd,并将cmd的输出内容插入当前文本中。:shell
切换到shell里(此时并没有退出vim,可以理解成vim转入后台),你可以在shell中做任何操作,退出shell(比如用exit)后,会切换回原来的vim中