vim是vi的增强版,它比vi更强大,vi号称神一样的编辑器,它是一款跨平台的软件,也就是说,不论你是在windows/linux/mac os下都能使用它,它是一款纯命令行界面的编辑工具,非常适合在无图形化界面的linux服务器上编辑一些配置文件等。可扩展性非常强,当然也有图像化界面的如GVIM,一般传说中开发界的武林高手通过定制,可以将它打造成最强的开发神器,例如加上代码高亮、自动缩进、代码自动补全等等等等,如图所示:

VIM编辑器_第1张图片


在所有linux或者类unix操作系统上,都内置了vi编辑器,但可能没有内置vim:如有你需要安装的话可以使用如下命令去安装:

Debian/Ubuntu

sudo apt-get install vim

Redhat/Centos

yum -y install vim

一、如何使用vim编辑文件

我们打开终端,输入vim就启动了vim程序了,或者你输入vim 后面跟上某个文件的文件名同样也可以打开vim

VIM编辑器_第2张图片

二、如何编辑文件

在了解编辑文件之前,我们必须知道vim的工作模式,他有三种工作模式,分别为:

  • 普通模式

  • 插入模式

  • 命令模式


    VIM编辑器_第3张图片

首先,我们来看下普通模式,它可以实现最基本的光标移动与大量的快捷操作,插入模式可以实现文件的基本编辑操作,命令模式可以实现特定的功能,如查找,保存退出等。


普通模式的一些说明:

按键 说明
a 进入插入模式后,后续输入的内容将插入到当前光标后面
A 进入插入模式后,后续输入的内容将插入当前段落的段尾
i 进入插入模式后,后续输入的内容将插入到当前光标的前面
I 进入插入模式后,后续输入的内容将插入到当前段落的段首
o 进入插入模式后并在当前行的后面创建一个新的空白行
O 进入插入模式后并在当前行的前面插入一个新的空白行


光标操作,在vim中,上下左右移动,跳到行首行尾段首段尾文首文尾等操作都是在普通模式下操作的

快捷键
说明
h 光标向左移动一位
j 光标向下移动一位
k 光标向上移动一位
l 光标向右移动一位
gg 移动光标至文件首行
G 移动光标至文件末行
nG n为数字,例如移动到第10行,则是10G
^ 光标移动当前行的首字符
$ 光标移动到当前行的尾字符
fx 光标移动至当前行的下一个x字符处
Fx 光标移动至当前行的上一个x字符处
w 光标向右移动一个单词
nw 光标向右移动n个单词
b 光标向左移动一个单词
nb 光标向左移动n个单词
:line number 跳转到指定行

编辑文档可以配合普通模式的光标操作跳转到某一行或者某一个单词后进行相应的操作

按键 说明
x 删除当前光标所在位置的字符
dd 删除当前光标所在行
ndd 删除当前光标所在行后的n行,n为数字
d$ 删除当前光标所在位置至行尾的内容
J 删除换行符,可以将两行合并为一行
u 撤销
rx 将当前光标字符替换为x
yy 复制当前行
nyy
才复制当前行开始的n行
P 粘贴至当前行之前
p 粘贴至当前行之后


VIM的查找和替换



指令 说明
/char 查找指定单词的文件或指定行
:s/root/admin/ 将当前行出现的第一个root替换成admin
:s/root/admin/g 将当前行中所有root替换成admin
:3,5s/sbin/bin/g 将3,5行直接的sbin替换成bin
:%s/nologin/fault/g 将所有的nologin都替换为fault


保存和退出



指令 功能
:wq!/:x 强制保存:wq保存,如果没有权限操作文件强制保存无效,:wq nginx.conf 保存文件尾nginx.conf
:q! 不保存并退出


句间移动和段间移动


移动到上一句空白处
移动到下一句空白处
{ 移动到上一段空白处
} 移动到下一段空白处



一些小技巧

打开文件就自带跳转到某一行

vim +num file ,例如

vim +5 nginx.conf


在vim中使用shell执行命令

:!ls

wKioL1Xmhq-hSIr7AACkpVwyRlo279.jpg


多文件模式


vim FILE1 FILE2 ...

:next 跳转到下一个文件
:first 跳转到第一个文件
:prev 跳转到上一个文件
:last 跳转到最后一个文件
:wqall 全部保存并退出
:q!all 全部退出

多文件分屏操作

vim -o|-O FILE1 FILE2 ...

-o 横向分屏

-O 竖向分屏

在多个窗口直接切换

VIM编辑器_第4张图片


定制vim的某些工作特性:

(1) 行号

显示:set nu

禁用:set nonu

(2) 括号匹配

显示:set sm

禁用:set nosm

(3) 自动缩进:

set ai

set noai

(4) 高亮搜索

set hlsearch

set nohlsearch

(5) 语法着色

syntax on

syntax off

(6) 忽略字符大小写

set ic

set noic

:help 获取帮助

:help SUBJECT


特性设定的永久生效方式:

全局配置文件:/etc/vimrc

用户个人的配置文件:~/.vimrc