三种模式
- 一般命令模式
- 使用
vim [filename]
打开一个文件就会进入一般命令模式, 在这个模式下你可以使用上下左右键移动光标进行删除字符和删除整行还可以进行复制和粘贴来处理内容
- 编辑模式
- 由一般命令模式输入
i o a r
任何一个字符进入, 可以对文件内容进行编辑, 就如同我们Windows上的记事本一样
- 命令行模式
- 由一般命令模式输入
: / ?
任何一个字符进入, 此时光标在屏幕的最后一行, 保存文件和退出vim都在这里进行
常用命令
- 屏幕向下移动一页
ctrl + f
- 屏幕想上移动一页
ctrl + b
- 移动到这一行最前面
0
- 移动到这一行最后面
$
- 移动到这个文件的第一行
gg
- 向下移动n行
n [enter]
- 向光标下面寻找一样的字符串 比如查找hello 就可以
/hello
- 删除后一个字符
x
删除前一个字符X
- 删除光标所在的一整行
dd
- 删除光标所在下面的n行数据
ndd
- 复制光标所在这一行
yy
- 复制光标所在下面的n行
nyy
- 在光标的下一行粘贴内容
p
在光标上一行粘贴内容P
- 恢复前一个操作
u
- 重做上一个操作
ctrl + r
- 重复前一个操作
.
- 进入编辑模式
i、I、o、O、a、A
都可以只是有细小差距我感觉不用多在意, 还有一个是r、R
替换进入编辑模式 - 退出编辑模式
[ESC]
- 由一般命令模式进入命令行模式
: / ?
注意编辑模式是不能进入命令行模式的
- 在命令行模式下的常见命令
- 保存文件
:w
- 强制保存
:w!
- 退出vim
:q
- 强制退出
:q!
- 保存后退出
:wq
最稳妥的做法
vim的缓存、恢复与打开时的警告
- 当我们在使用vim编辑一个文件的时候, 会在被编辑的目录下新建一个.filename.swp的文件, 这个文件就是一个缓存文件
root@listen-virtual-machine:/home/listen/test# vim one.txt
[1]+ 已停止 vim one.txt
root@listen-virtual-machine:/home/listen/test# ll
总用量 16
drwxrwxr-x 2 listen listen 4096 9月 11 17:37 ./
drwxr-xr-x 17 listen listen 4096 9月 10 17:14 ../
-rw-r--r-- 1 root root 22 9月 11 17:36 one.txt
-rw-r--r-- 1 root root 4096 9月 11 17:37 .one.txt.swp
root@listen-virtual-machine:/home/listen/test#
- 你对filename文件的所有操作都会记录在这里, 当你因为某些原因掉线之后或者等等原因, 导致你的文件还没有保存, 此时这个swp文件就会有恢复功能
- 例如你在vim一般命令模式输入ctrl + z让其都后台运行或者你没有保存这个文件的时候,如果你再次使用vim打开这个文件的时候, 就会再新建一个swp文件, 可是此时就会检测到你已经有个swp文件, 就会爆出一个警告
这种情况你可以输入o表示只读
e就是不管那么swp文件直接编辑
r就是恢复那个swp文件中的操作
q和a差不多都是退出这个操作回到命令行
多文件编辑
- 顾名思义就是使用vim同时打开多个文件, 相关按键有
:n
编辑下一个文件:N
编辑上一个文件:files
列出目前这个vim开启的所有文件
root@listen-virtual-machine:/home/listen/test# vim one.txt two.txt
多窗口功能
- 上面说的只是可以同时编辑多个文件, 这里我们说的是可以同时打开多个文件
- 我们只需要在一个文件的命令行模式下输入
:sp filename
即可 这个文件可以是没有的会帮你新建一个
- 常用命令
ctrl + w + ↓
光标移动到下一个窗口ctrl + w + ↑
光标移动到上一个窗口ctrl + w + q
结束这个窗口
关键字补全
ctrl + x -> ctrl + n
通过当前这个文件内容进行查找补全
ctrl + x -> ctrl + f
通过当前文件所在的目录中的文件名为关键字查找补全
ctrl + x -> ctrl + o
通过语法补全, 这个语法是vim内置的关键词