Vim是从vi发展出来的一个文本编辑器。功能丰富,在程序员中被广泛使用。相比其他文本编辑器,选用 Vim/vi 有着以下原因:
- 所有的 Unix Like 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在
- 很多软件的编辑接口会主动呼叫 vi
- Vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计
- 程序简单,编辑速度快
概述
Vim 编辑器有三种模式:命令模式,编辑模式,底行模式。
安装
Vim 编辑器需要安装三个包:
1 | vim-minimal-7.4.160-5.el7.x86_64 |
- 查看本机已经存在的包,如果 vim 已经正确安装,则会显示上面三个包的名称
1 | $ rpm -qa|grep vim |
- 如果缺少了其中某个包,比如缺少
vim-common
和vim-enhanced
,使用 yum 下载安装:
1 | $ yum -y install vim-common vim-enhanced |
配置Vim
如果安装了 Vim,可以配置别名让 vim
命令替代掉 vi
命令。别名的配置在/root/.bashrc
,如果只对单次登录临时启用别名,可以直接输入别名配置命令alias vi='vim'
。
添加别名
1 | alias vi='vim' |
Vim 的全局配置一般在/etc/vimrc
,对所有用户生效,用户个人配置在~/.vimrc
。如果只对单次编辑临时启用某个配置项,可以在 Vim 的命令模式下输入对应的命令。
添加样式
1 | set number "显示行号" |
可选样式:
syntax on
:语法高亮,自动识别代码set cursorline
:光标所在行高亮set showmatch
:高亮匹配括号set number
:显示行号set nonumber
:不显示行号set autoindent
:自动缩进,按下回车后下一行的缩进会与上一行的缩进保持一致set encoding=utf-8
:使用 utf-8 编码set t_Co=256
:启用 256 色set tabstop=2
:按下 Tab 键时,Vim 显示的空格数set softtabstop=2
:Tab 转为多少个空格
粘贴模式
进入粘贴模式后,再按 i
进入插入模式,此时进行粘贴就可以避免粘贴时的缩进问题:
1 | :set paste |
命令模式
命令模式也叫一般模式,使用 Vim 打开文件进入的便是命令模式。在这个模式中,可以移动光标,可以对文字进行剪切、复制、粘贴。
移动光标
←
,↓
,↑
,→
:光标向指定方向移动一个字符h
,j
,k
,l
:光标向指定方向移动一个字符H
,M
,L
:光标移动到屏幕的上方、中间、下方那一行的第一个字符G
:移动到文件的最后一行nG
:移动到文件的第 n 行gg
:移动到文件的第一行,相当于1G
剪切、复制与粘贴
x
:向后删除一个字符,相当于Delete
X
:向前删除一个字符,相当于Backspace
dd
:剪切当前行ndd
:剪切光标及下面共n行yy
:复制光标所在行nyy
:复制光标及下面共n行p
:粘贴数据在光标下一行P
:粘贴数据在光标上一行u
:撤销Ctrl+R
:重做.
:重复上一个动作
选择
v
:字符选择,将光标经过的地方反白选择V
:行选择,将光标经过的行反白选择Ctrl+V
:区块选择,用纵向区块反白选择,按下Shift
+i
,输入要插入的内容,再按Esc
,就会看到插入的效果y
:复制反白的地方d
:删除反白的地方
编辑模式
命令模式按下:i
、I
、o
、O
、a
、A
、r
、R
进入编辑模式,可以编辑文本。
i
:从光标所在处插入I
:在光标所在行的第一个非空格符处开始插入a
:从光标所在的下一个字符处开始插入A
:从光标所在行的最后一个字符处开始插入o
:在光标所在行的下一行处插入新的一行O
:在光标所在行的上一行处插入新的一行r
:替换光标所在处的字符一次R
:一直替换光标所在处的文字ESC
:退出编辑模式,回到命令模式
底行模式
命令模式下,按:
、/
或?
进入底行模式。
退出与保存
:w
:将编辑的数据写入硬盘:w!
:文件属性为只读时,强制写入:q
:退出Vim编辑器:q!
:退出且不保存改动:wq
:保存改动后退出:x
:保存改动后退出
搜索
/word
:向光标之下寻找一个名称为 word 的字符串?word
:向光标之上寻找一个名称为 word 的字符串n
:重复前一个搜寻的动作N
:反向重复前一个搜寻动作:num
:跳转到第 num 行
替换
用法::[作用范围]s/{旧字符串}/{新字符串}[/替换标志]
:s/old/new
:用字符串 new 替换字符串 old,替换当前行的第一个匹配:s/old/new/g
:用字符串 new 替换字符串 old,替换当前行的所有匹配:%s/old/new
:用字符串 new 替换字符串 old,替换所有行的第一个匹配:%s/old/new/g
:用字符串 new 替换字符串 old,替换所有行的所有匹配:n1,n2s/old/new/g
:在第 n1 与 n2 行之间,用字符串 new 替换字符串 old:.,+ns/old/new/g
:在当前行与接下来 n 行中(共 n+1 行),用字符串 new 替换字符串 old:%s/old/new/gi
:用字符串 new 替换字符串 old,大小不敏感:%s/old/new/gI
:用字符串 new 替换字符串 old,大小敏感(默认):%s/old/new/gc
:用字符串 new 替换字符串 old,替换前需要确认(y/n/a/q/l/^E/^Y)y
表示替换n
表示不替换a
表示全部替换q
表示退出l
表示替换当前并退出^E
表示逐行下滚^Y
表示逐行上滚
多文件编辑
Vim 支持同时开启多个文件,可以将一个文件中的内容复制到另一个文件中。
多标签页
vim -p[N] 文件1 文件2...
,打开 N 个标签页,默认每个文件一个使用
vim 文件1 文件2
可以打开多个文件,只是不显示标签页使用
:files
命令可以查看打开的文件列表使用
:n
命令可以来到下一个文件使用
:N
命令可以来到上一个文件
多窗口
vim -o[N] 文件1 文件2...
,打开 N 个水平分割的窗口,默认每个文件一个vim -O[N] 文件1 文件2...
,打开 N 个垂直分割的窗口,默认每个文件一个在 Vim 中,可以使用
:sp 文件2
在新的水平窗口中打开另一个文件在 Vim 中,可以使用
:vsp 文件2
在新的垂直窗口中打开另一个文件可以使用
Ctrl+W
+↑/↓/←/→
快捷键进入对应位置的窗口可以使用
Ctrl+W+W
快捷键轮换窗口