用处
vim是由vi发展演变过来的编辑器,在linux环境下进行编辑处理会非常的方便快捷.
工作模式
vim具有多种工作模式,目前最常用的模式有:普通模式 插入模式 命令模式 三种。
- 普通模式主要用于光标的移动,文字迅速定位等光标相关大量的快捷键操作
- 插入模式顾名思义,可以实现文本的基本编辑功能
- 命令模式用于文件的处理,比如文件保存,退出,显示行号等等
用法
vim的使用方式非常简单,当机器安装了vim之后,只需要vim file_name 即可以使用,如果file_name这个文件存在,则打开,否则就新建一个并进入。
普通模式常用操作
当vim进入文件后,默认是普通模式,即光标移动,文件编辑等操作,一般常用的光标操作有以下这些:
快捷键 | 功能描述 |
---|---|
h | 光标向左移动一位 |
l | 光标向右移动一位 |
j | 光标向下移动一行 |
k | 光标向上移动一行 |
gg | 光标移动至文件首 |
G | 光标移动至文件末尾 |
n G | 光标移动至第n 行,如100G,则移动至100行 |
^ | 光标移动至本行行首 |
$ | 光标移动至本行行尾 |
fx | 光标移动至本行的下一个x 字符处 |
Fx | 光标移动至本行的上一个x 字符处 |
w | 光标向右移动一个单词 |
n w | 光标向右移动n 个单词 |
b | 光标向左移动一个单词 |
n b | 光标向左移动n 个单词 |
x | 删除光标当前字符 |
dd | 删除光标当前行 |
n dd | 删除第n 行 |
d$ | 删除当前行光标至行尾的内容 |
d^ | 删除当前行光标至行首的内容 |
J | 删除换行符,可以将两行变为一行 |
u | 撤销上一步操作,可多次使用 |
rx | 将当前光标指向的字符换成x |
yy | 复制当前行 |
p | 粘贴至当前行之后 |
P | 粘贴至当前行之前 |
/x | 自上向下快速定位内容,如/name ,则向下查找name这个字符串,如果有多个,n查找下一个,N查找上一个 |
?x | 与/x 类似,只是由光标当前指向向上查找 |
清除全部内容:先gg至行首,然后dG清空全部
当查找到结果时会进行高亮展示,此时如果想取消高亮,则可用:noh 或者随便搜索一个不存在的字符串即可
插入模式及编辑
vim进入插入模式的方式很多,可以有以下几种:
快捷键 | 功能描述 |
---|---|
a | 后续输入的内容将插至当前光标之后 |
A | 后续输入的内容将插至当前段落的段尾 |
i | 后续输入电脑内容将插至当前光标之前 |
I | 后续插入的内容将插至当前段落的段首 |
o | 进入插入模式并在当前行的后面创建新的空白行 |
O | 进入插入模式并在当前行的前面创建新的空白行 |
命令模式及常用快捷键
从普通模式下,输入:
就进入了命令模式,命令模式用于对于文件本身的一些操作.
快捷键 | 功能描述 |
---|---|
:s/root /admin / | 将当前光标所在行中出现的第一个root 换成admin |
:s/root /admin /g | 将当前光标所在行中所有的root 换成admin |
:3 ,5 s/root /admin /g | 将3-5行中的所有root 换成admin |
:%s/root /admin /g | 将所有行中的root 换成admin |
:q! | 不保存,强行退出 |
:wq | 保存并退出 |
:x | 保存并退出 |
:w | 保存 |
:w x.txt | 另存文件为x.txt |
:set nu/number | p当前文档中临时显示行号,当文件关闭时配置失效 |
:set ignorecase | 当前文档中临时忽略大小写,当文件关闭时配置失效 |
set:enc/encoding | 设置文件展示编码格式 |
set:fenc/fileencoding | 设置文件编码格式 |
set:fenc/fileencodings | 在打开文件的时候进行解码的猜测列表 |
:noh | 取消高亮 |
注:文件编码没有百分百正确的判断方法,所以vim只能猜测文件编码,比如我在vimrc中设置的编码相关内容如下:set fileencodings=utf-8,gb2312,gbk,gb18030,则首先会使用utf-8进行解码,如果出错则从头开始,再用gb2312进行解码,如果再错就以此使用gbk/gb18030进行解码,如果都错,那就选用最后一种进行错误渲染
vim常见问题
- vim出现乱码
在自己的vimrc中,如~/.vimrc文件中指定如下编码,具体内容上文已经讲解:
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set fileformats=unix
set encoding=prc