vim分为三种模式,分别是普通模式、编辑模式和命令模式

一、简述三种模式
(1)普通模式
使用vim打开一个文档文件时,首先进入的就是普通模式。在普通模式中用户可以使用↑↓←→键来移动光标,可以使用“删除字符"或”删除整行“来处理文件内容,还可以复制粘贴用户的文件数据
(2)编辑模式
普通模式中可以进行删除、复制、粘贴等操作,但是却无法向文档中输入字符。此时可以按下i、I、o、O、A、a、r、R其中之一,就进入了编辑模式,这时屏幕左下面出现insert或者replace的字样,这时就可以向文档中输入字符。在整个过程结束后,按下Esc就可以返回到普通模式
(3)命令模式
在普通模式中输入 “:”、"?"、"/",编译器就从普通模式进入了命令模式,此时屏幕左下角将出现":"、"/"、"?"的标志。在命令模式下,用户可以搜索、替换、高亮 显示、行号显示、保存、退出甚至可以执行shell命令等操作

二、vim的基本操作
(1)vim 文件:进入vim编译器普通模式,如果系统内没用这个文件,意味着创建这个文件;如果系统有这个文件这表示编辑该文件。
例1:vim vim_character.txt文件(事先文件中已经有文字)


最后退出的时候先按Esc然后输入:再输入wq最后Enter键就可以退出了
例2:vim vim_two_character.txt(当打开的文件不存在时,创建该文件)
首先document文件夹里,只有一个vim_character.txt文件

然后用vim vim_two_character.txt来编辑

可见用vim 编辑一个不存在的文件时,就会创建一个文件。
三、普通模式的操作
普通模式下,可以完成光标的移动、复制、删除、粘贴、重做、撤销等常用的操作。
(1)光标移动命令

命令说明
↑↓←→方向键,可以控制光标的上下左右移动一个字符的位置
hjkl功能和方向键完全相同,分别控制光标 左移、下移、上移或右移一个字符位置
-把光标移至上一行的第一个起始字符位置(第一个非空白字符位置)
Enter键把光标移至下一行的第一个起始字符位置(第一个非空白字符位置)
退格键光标左移一个字符位置
空格键光标右移一个字符位置
ctrl+f往后滚动一屏,编辑窗口将会显示文件下一页内容
ctrl+b往前滚动一屏,编辑窗口将会显示文件下一页内容
ctrl+u往后滚动半屏
ctrl+d往后滚动半屏
H把光标移至编辑窗口顶端第一行的起始字符位置(第一个非空白字符位置)
M把光标移至编辑窗口中间第一行的起始字符位置(第一个非空白字符位置)
L把光标移至编辑窗口底部第一行的起始字符位置(第一个非空白字符位置)
w光标右移一个字,如果相邻两个字之间有标点符号,光标就移动到标点符号位置
W光标右移一个字,如果相邻两个字之间有标点符号,则忽略
b光标左移一个字,如果相邻两个字之间有标点符号,光标就移动到标点符号位置
B光标右移一个字,如果相邻两个字之间有标点符号,则忽略
e光标移至当前字(或下一个)的最后一个字符位置
E同上,只是把空格字符作为字的分隔符
^把光标移至当前行的起始位置(第一个非空格字符位置)
0把光标移至当前行的起始位置(不忽略空格字符)
$把光标移至当前行的行尾

(2)复制、删除和粘贴
在vim中,复制和粘贴是先用yy复制当前行,再用p或P实现粘贴剪切和粘贴是先dd删除当前行,再用p或P实现粘贴;如果在yy或dd之前再输入适当的数字,还可以实现若干行 的复制和删除操作。

命令说明
x删除光标所在位置的一个字符,并把该字符存在剪切板中
nx删除光标所在位置的后面n个字符,并把这些字符存放在粘贴板中
X删除光标所在位置的前面一个字符,并把这些字符存在粘贴板中
yy复制光标所在行,并把该行内容存在剪切板中
nyy复制光标所在行开始的n行,并把该行内容存在剪切板中
dd==删除光标所在行==,并把该行内容存在剪切板中
ndd删除光标所在行开始的n行,并把该行内容存在剪切板中
P把剪切板中的文本数据复制到光标所在行的下面
p把剪切板中的文本数据复制到光标所在行的上面

(3)撤销和重做

命令说明
u撤销命令,使用u命令撤销上一步的编辑命令
ctrl+r重做命令

四、编辑模式
vim在编辑模式下才能输入字符,要进入编辑模式,必须要在普通模式下输入i、I、o、O、A、a、r、R中得到一个才能进入编辑模式。
例如

这时右下角会出现INSERT或者REPLACE。退出编辑模式按ESC键
(1)进入编辑模式的命令

命令说明
a可在光标当前位置的下一个位置开始输入文字
A可在光标当前行的行尾输入数据
i可在光标当前位置输入数据
I(大写i)可在光标当前行的行首输入数据
o可在光标当前行之后插入一个新行
O可在光标当前行之前插入一个新行
r替换光标当前位置的字符
R替换从光标当前位置开始的字符,直到按下ESC键为止
s删除光标当前位置的一个字符,然后进入编辑模式
S(大s)删除光标当前行,然后进入编辑模式

例1:a和A
打开vim_character.txt文件


可见光标在t下面,这时按下a键

可见光标在当前位置的下一个位置开始输入文字,如果按下A键

可见光标在当前行的行尾输入数据
例2:i和I
和例1的步骤一样,当按下i键时

可见可在光标当前位置输入数据
当按下I键的时候

可见可在光标当前行的行首输入数据其他的命令和例1,例2的操作步骤相似,大家可以试一下
五、命令模式
在普通模式下输入":"、"?"、"/"其中之一就进入了命令模式。在命令模式中,可以完成搜索、替换、高亮显示、行号显示、保存、退出甚至可以执行shell命令等操作
(1)搜索和替换

命令说明
/word向下搜索/word,就是光标当前位置向下搜索。在普通模式下输入"/"进入命令模式,再输入要查询的字符串word,就可以搜索在当前光标之后的为word的字符串(例1)
?word向上搜索,就是在光标当前位置向上搜索。在普通模式下输入"?"进入命令模式,再输入要查询的字符串word,就可以搜索在当前光标之前的为word的字符串(例2)
n重复前一个搜索动作,按下n后就可以重复之前的搜索动作
N和n相反,反向进行前一个搜索动作。例(2)
:s/word1/word2/g在光标当前行中,把字符word1用word2来替换。s和/之间有空格
:s/word1/word2/gc在光标当前行中,把字符word1用word2来替换,并在替换之前提示用户确认是否要替换。s和/之间有空格
:%s/word1/word2/g把文档中所有的字符串word1用word2替换。s和/之间有空格
:%s/word1/word2/gc把文档中所有的字符串word1用word2替换,并在替换之前提示用户确认是否要替换。s和/之间有空格
:n1,n2 s/word1/word2/gn1和n2是数字,在第n1和n2行之间寻找字符串word1,并用word2来替换。s和/之间有空格
:n1,n2 s/word1/word2/gcn1和n2是数字,在第n1和n2行之间寻找字符串word1,并用word2来替换,并在替换之前提示用户确认是否要替换。s和/之间有空格
:set ic搜索时忽略大小写
:set noic搜索时不忽略大小写

例1
在vim_character.txt中有三行文本,现在搜索其中的third字
第一 打开文件

第二 输入“/”命令

第三 在"/"后面输入third就可以搜索在当前光标下面的third单词了


最后可以按ZQ(功能和:q!一样)(不保存直接退出)或者:wq(保存后退出)退出。
例2
第一次在光标下搜索fifth,然后高亮显示


第二次搜寻second,然后高亮显示

可见当前光标是在s处,现在输入/txt

可见光标在第三个line处,然后按下N键

下面就会出现?line向上搜寻的字样。
(2)高亮显示和取消高亮显示
默认情况下,vim编译器自动高亮显示,也可以通过修改/etc/vimrc文件来取消高亮显示。

如上图可以在syntax on前加上注释,这样就取消了高亮显示。
(3)显示和取消行号

命令说明
:set nu在文件中的每一行前面列出行号
:set nonu不在文件中的每一行前面列出行号

(4)保存和退出

命令说明
:w在冒号后面输入"w",就可将文件保存起来
:q在冒号后面输入"q",就可以退出vim。如果修改过使用这个命令就不能退出,需要使用q!表示强制退出,不保存
:wq存盘后退出vim

(4)在vim中运行shell命令

命令说明
:!command在普通模式下输入:!,并在后面输入运行的命令(例1)
:r!command执行命令并把命令运行的结果插入当前行的下一行(例2)
:sh保留vim状态,切换到字符模式,此时可以正常输入各种shell命令,输入结束后可用exit或ctrl+d,回到vim编辑器中,继续编辑刚才的文档(例2)

注意:输入命令前要在普通模式
例1:
首先进入普通

然后后面输入:! ls -lih /etc 得到下图

例2
在普通模式下输入:r!date

得到下图

例3
首先输入:sh


系统保留vim的状态,并且切换到字符模式,在字符模式下输入exit,可回到vim编译器中,继续编译刚才的文档

六、其他常用功能
(1)编译多个文件
vim允许用户同时编译多个文件。
例如,想要编译vim_character.txt和vim_two.character.txt,可以使用下图命令

此时,vim首先显示第一个文件vim_character.txt,编辑结束后输入:w命令,保存vim_character.txt文件。

若要编辑vim_two.character.txt可以输入":n"或者":n vim_two.character.txt",也可以不保存vim_character.txt文件直接进入vim_two.character.txt文件

(2)区块选择和操作
有时需要对文档中的某些区块进行操作,这时就用到了以下的命令

命令说明
v字符选择,将光标经过的地方反白选择
V行选择,将光标经过的行反白选择
ctrl+v区块选择,可反白选择所需要的矩形字符块
y将反白选择的地方复制
d将反白选择的地方删除

例1
如下图,按下ctrl+v键,屏幕左下角显示VISUAL BLOCK的字样,这样光标经过的地方会别选白

如果按下d键,会把选白的地方删除,同理如果按下y会把选白的地方复制。如果按下V键将光标经过的行反白选择,其它的也类似。
(3)多窗口显示
多窗口显示是说可以在同一个屏幕上同时打开多个文件,也可以重复打开一个文件。

命令说明
:sp[文件名]开启一个新窗口,如果加上文件名,表示在新窗口打开名为文件名的文档;如果不加文件名,文档就会在新窗口上再次打开当前文档
ctrl+w+j移动光标到下面的窗口
ctrl+w+k移动光标到上面的窗口
:wq保存退出系统所在的窗口。用ctrl+w+j或ctrl+w+k移动到需要关闭的窗口,然后输入:wq再按ENTER进行保存退出

例1
在vim_character.txt的 普通模式下输入:sp vim_two_character.txt


可见在屏幕上打开一个新的窗口,并且窗口的名字是vim_two_character.txt

本笔记如有问题欢迎交流185404093@qq.om

更多推荐

Linux学习笔记——vim