简单使用Vim
简单使用Vim
小码同学介绍
vim有三个模式:输入模式、命令模式、底线命令模式。
输入模式
:只有在输入模式下才可以进行文字编辑,在输入模式中也分为insert和replace,即插入模式和替换模式。命令模式
:可通过从键盘上输入相关命令,控制屏幕光标的移动,删除字符、字或行的内容,撤销文本的修改,移动复制某区段等功能,以及进入到插入模式或底线模式中。底线命令模式
:底线模式主要进行一些文字编辑的辅助功能,比如字符串搜索、替换、保存文件等操作,一般以:
、/
等开头的命令。
使用vim
新建test.txt文件
1 | 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退出文件
需要在命令模式中执行命令
:wq
:退出并保存:q!
:退出不保存(强制退出vim):e!
:放弃当前修改,从上次保存文件重新开始编辑:w
:保存(不退出vim):q
:退出(不保存)ZZ
:保存并退出
一般前三个就够用了
vim复制粘贴内容格式错乱
在使用Xshell远程Linux系统时在复制内容到vim编辑器时,有时候复制内容会错乱,如下图:
解决方法
在粘贴内容前设置取消自动缩进就好,切换到命令模式,执行该命令:set paste
就可以解决格式错乱问题了。
Vim移动光标至行首、行尾
需要在命令模式中执行命令
Vim光标移至行首
0
Home键
^
Shift+6
Vim光标移至行尾
- End
- Shift + 4
- 2$(数字表示移下多少行尾)
插入命令
字符 | 备注 |
---|---|
I |
光标定位到行首 插入 |
A |
光标定位到行尾 插入 |
i |
在当前 位置前 插入 |
a |
在当前 位置后 插入 |
O (大写) |
在当前行之前插入一行 |
o (小写) |
在当前行之后插入一行 |
vim查找
需要在命令模式中执行命令
向下查找
/内容
:回车之后,n
查找下一个,N
查找前一个
向上查找
?内容
:回车之后,n
查找下一个,N
查找前一个
屏幕滚动
切换到命令模式中执行命令
Ctrl + d
: 向下滚动半屏Ctrl + u
:向上滚动半屏Ctrl + f
:向下滚动一屏Ctrl + b
:向上滚动一屏
撤销和重做
需要在命令模式中执行命令
u
(小写):撤销(Undo)
U
(小写):撤销对整行的操作
Ctrl + r
: 重做(Redo),即撤销的撤销。
删除
x
:删除当前字符3x
:删除当前光标开始向后三个字符X
:删除当前字符的前一个字符。X=dh
dl
:删除当前字符,dl=x
dh
:删除前一个字符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
:注释整个文档,此法更快。