介绍
vim有三个模式:输入模式、命令模式、底线命令模式。
输入模式:只有在输入模式下才可以进行文字编辑,在输入模式中也分为insert和replace,即插入模式和替换模式。命令模式:可通过从键盘上输入相关命令,控制屏幕光标的移动,删除字符、字或行的内容,撤销文本的修改,移动复制某区段等功能,以及进入到插入模式或底线模式中。底线命令模式:底线模式主要进行一些文字编辑的辅助功能,比如字符串搜索、替换、保存文件等操作,一般以:、/等开头的命令。

使用vim
新建test.txt文件
vim test.txt
这条指令执行了两个操作:
- 检查当前目录下test.txt文件是否存在
- 若存在,则直接打开test.txt文件
- 若不存在,则新建一个test.txt文件并且打开该文件
我当前目录下是不存在test.txt文件的,所以打开是空白的,如图:

在test.txt文件添加内容
要求:在test.txt文件添加内容"hello,vim"。
在前面介绍说到,我们在添加内容前,应该要切换到插入模式,才能输入内容,我们可以在英文输入法下,按i或者Ins按键(有些键盘没有这个按键),当控制台左下角出现--INSERT--时,表示已经切换到输入模式了,这时候可以输入内容了。(tips:~表示该行内容为空)

退出vim编辑器
输入完内容后,我们可以按Esc这个按键切换到命令模式,此时左下角是不显示任何字符的,命令模式下,在英文输入法下,我们可以输入以:wq,表示退出并保存(此时的的光标在左下角)。

查看文件

ls:表示查看当前文件夹的非隐藏文件cat test.txt:表示将test.txt文件内容输出到终端上
总结
经过一个简单的例子,你大概也了解vim编辑器的使用方法了,无非就是四个步骤:
- vim 文件名
- 切换到insert模式
- 输入内容
- :wq退出vim编辑器
当然,平时我们使用的时候,也有时候会使用到replace模式,也就是替换模式。
vim退出文件
{% note info simple %}
需要在命令模式中执行命令
{% endnote %}
:wq:退出并保存:q!:退出不保存(强制退出vim):e!:放弃当前修改,从上次保存文件重新开始编辑:w:保存(不退出vim):q:退出(不保存)ZZ:保存并退出
一般前三个就够用了
vim复制粘贴内容格式错乱
{% note danger simple %}
在使用Xshell远程Linux系统时在复制内容到vim编辑器时,有时候复制内容会错乱,如下图:
{% endnote %}

解决方法
在粘贴内容前设置取消自动缩进就好,切换到命令模式,执行该命令:set paste就可以解决格式错乱问题了。
Vim移动光标至行首、行尾
{% note info simple %}
需要在命令模式中执行命令
{% endnote %}
Vim光标移至行首
0Home键^Shift+6
Vim光标移至行尾
- End
- Shift + 4
- 2$(数字表示移下多少行尾)
插入命令
| 字符 | 备注 |
|---|---|
I |
光标定位到行首插入 |
A |
光标定位到行尾插入 |
i |
在当前位置前插入 |
a |
在当前位置后插入 |
O(大写) |
在当前行之前插入一行 |
o(小写) |
在当前行之后插入一行 |
vim查找
{% note info simple %}
需要在命令模式中执行命令
{% endnote %}
向下查找
/内容:回车之后,n查找下一个,N查找前一个
向上查找
?内容:回车之后,n查找下一个,N查找前一个
屏幕滚动
{% note info simple %}
切换到命令模式中执行命令
{% endnote %}
Ctrl + d: 向下滚动半屏Ctrl + u:向上滚动半屏Ctrl + f:向下滚动一屏Ctrl + b:向上滚动一屏
撤销和重做
{% note info simple %}
需要在命令模式中执行命令
{% endnote %}
u (小写):撤销(Undo)
U (小写):撤销对整行的操作
Ctrl + r: 重做(Redo),即撤销的撤销。
删除
x:删除当前字符3x:删除当前光标开始向后三个字符X:删除当前字符的前一个字符。X=dhdl:删除当前字符,dl=xdh:删除前一个字符dd:删除当前行dj:删除上一行dk:删除下一行10d:删除当前行开始的10行。D:删除当前字符至行尾。D=d删除当前字符之后的所有字符(本行)kdgg:删除当前行之前所有行(不包括当前行)jdG(jd shift + g): 删除当前行之后所有行(不包括当前行):1,10d:删除1-10行:11,d:删除所有行J(shift + j):删除两行之间的空行,实际上是合并两行。
粘贴、复制、剪切
复制
yy:拷贝当前行ny:拷贝当前后开始的n行,比如2yy拷贝当前行及其下一行。:1,: 将整个文件复制一份并添加到文件尾部。
粘贴
p:在当前光标后粘贴,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。shift+p:在当前行前粘贴:1,10 co 20:将1-10行插入到第20行之后。
剪切
正常模式下按v(逐字)或V(逐行)进入可视模式,然后用jklh命令移动即可选择某些行或字符,再按d即可剪切
ndd:剪切当前行之后的n行。利用p命令可以对剪切的内容进行粘贴:1,10d:将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。:1, 10 m 20:将第1-10行移动到第20行之后。
注释
perl程序中#开始的行为注释,只需要在首行加入#即可注释
3,5 s/^/#/g:注释第3-5行3,5 s/^#//g:解除3-5行的注释1,$ s/^/#/g:注释整个文档。:%s/^/#/g:注释整个文档,此法更快。

