vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说,vi是老式的字处理器,vim是vi的高级版本,是程序开发者的一项很好用的工具。
基本上vim共分为三种基本模式,普通模式(Normal Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。
三种基本模式名称可能有所不同,其功能、使用方法多有介绍,本文不再赘述,仅关注其他几种模式,如可视模式、选择模式和Ex模式。
一、模式查看
模式是应用vim的一种方式,不同场合应用不同模式。在了解有多种模式的同时,要掌握模式之间的切换(进入模式与退出模式)。vim共有多少模式呢?
先执行vim
在命令行模式中录入如下命令,执行
:help vim-modes
在vim介绍的第5小节——Modes中,主要介绍了6种基本模式和6种其他模式。
6种基本模式:
Normal mode Visual mode Select mode Insert mode Command-line mode(Cmdline mode) Ex mode
6种其他模式:
Operator-pending mode Replace mode Virtual Replace mode Insert Normal mode Insert Visual mode Insert Select mode
二、可视模式
1.帮助信息
:help visual-mode
2.分类
vim的可视模式又分为三类:在普通模式(Normal-mode或Command Mode)按不同键,进入不同模式:
v启动visual区域选择,按单个字符为选择单元,一次选择一个字符(一般称为按字符选择)
shift+v (即V)启用visual line区域选择,按整行为选择单元,一次选择一行(一般称为按行选择)
Ctrl+v 启用visual block区域选择,按一个矩形区域为选择单元,一次选择一个矩形区域(一般称为按块选择)
退出相应模式时,与进入时按同样的键。如按V进入行可视模式,再按V,将退出行可视模式。
PS:可视模式只能从普通模式进入,退出后也是退到普通模式。
3.常见操作
a.大小写转换
U:将选中区域全部转换成大写
u:将选中区域全部转换成小写
~:将选中区域中的小写字符转换成大写,将大写转换成小写中大小写转换
b.移动光标
o:光标从选中区域的第一行第一列字符上(末尾)移动到最后一行最后一列(开始)字符上;O:行首字符上移动到行尾字符
'>'将选中的区域所在行整体向右移动一次;'<'将选中的区域所在行整体向左移动一次
c.删除操作
d(或者x):只删除选中的区域
D:在Ctrl+v模式下,是删除选中区域到行尾的所有字符
d.修改操作
c(或者s):删除选中区域并进入插入模式,光标停留在选中区域第一行第一列,输入字符后,尽管输入的字符只是在第一行第一列显示,但是,按下Esc键,所有区域变成刚才输入的字符
e.插入操作
在普通模式下I代表在光标所在行首插入字符,A代表在光标所在的行尾插入字符;在vim可视模式下,I代表选择区域的前面插入字符,A代表选择区域的后面插入字符
f.复制粘贴操作
y:复制选中区域
p:在光标后面粘贴
P:在光标前面粘贴
r:修改选中区域的文本
J:合并选中区域所在行为一行
4.案例
a.批量添加注释
- 用vim打开文件
- 光标移动到准备添加注释的第一行
- 按Ctrl +v 下方显示VIS..BLOCK
- 移动向下方向键,选择要添加注释的多行
- 按shift+i
- 录入//(c语言所用注释,shell所用注释是#)
- 按Esc 退出,停顿后,完成,可进行下一步操作
b.批量增加/减少缩进
- 用vim打开文件
- 光标移动到准备增加/减少缩进的第一行
- 按Ctrl +v 下方显示VIS... BLOCK
- 按shift+> 增加缩进
- 按shift+< 减少缩进
PS:多行缩进缩出
正常模式下,按两下>;光标所在行会缩进。
如果先按了n,再按两下>;,光标以下的n行会缩进。
对应的,按两下<;,光标所在行会缩出。
三、选择模式
1.帮助信息
:help select-mode
2.主要功能
选择模式,可以理解为另一种可视模式。在选择模式下,可以对选中的文本进行快速操作。比如先高亮选中文本,然后用Backspace来删除这段文本;或者先高亮选中文本,然后用输入的内容来替换这些文本。执行操作之后,Vim将自动进入插入模式。
选择模式与可视模式的区别在于:在可视模式下,可以选中文本,然后执行命令操作,即要用命令结束可视模式。而在选择模式下,命令仅限于Backspace(用于删除操作)和可打印的字符(用于替换操作)。因为不需要输入命令,所以操作变得更为简单。
3.进入
在常规模式下,可以使用命令gh、gH或gCtrl+H进入选择模式,在屏幕底部显示相应的选择模式名称。
在可视模式下,可以使用Ctrl+g进入选择模式。vim将根据当前所处的可视模式的类型,自动进入与之一致的选择模式。
4.操作
在选择模式下移动光标比在正常模式下要困难一些。因为输入任何可打印字符和回车符,vim就会删掉已选中的文本并进插入状态。所以要选择文本就只能使用方向键、Ctrl以及功能键。
5.退出
点击Ctrl+G键,将返回到可视模式
可以使用Ctrl+O(大写字母)命令从选择模式切换到可视模式
使用Esc或Ctrl+[键,可以退出选择模式
四、Ex模式
1.帮助信息
:help Ex-mode
2.功能
主要作用是用于与屏幕显示交互地编辑行。
ex是vim对行编辑器ed的支持。ed是一个面向行的编辑器.在远古时代,还是黑白终端的时代,有一个流行的面向行的编辑器ed,也即把文件一行一行的读入,一次只显示一行,然后编辑。所以vim中的ex命令都是ed编辑器所支持的命令,现代所用的流编辑器sed中的命令是ed命令的扩展。所以掌握了vim中的ex编辑命令,稍加变通就会掌握sed。
vim是全屏编辑器,因此不会像ed那样只显示一行,对于vim,ed命令编辑的一般都是当前行,这就相当于ed中所显示的那行,实际上也是文件的当前行。
3.进入
vim的普通模式下,按Q
在命令行中,可以直接ex 文件名 执行后如下图
4.操作
由于是面向行的编辑命令,所以基本单位是行,比如拷贝和剪切都是以行为单位(也即最少为一行)。
命令格式
:[range] cmd args
案例
在用ex编辑文件时,显示:提示符。在此处录入需要的命令,直接执行
在:后直接录入文件倒序命令,将立即执行,仅显示执行结果的第1行,再查看,可全部显示
由于ex命令与vim和sed命令相似,此处不再赘述。
5.退出
:后录入vi(或visual) 进入vim的普通模式
:后录入q! 退出ex编辑器
五、替换模式
vim在普通模式下,按i,默认进入插入模式。
退出插入模式,按Esc
从普通模式,按R,即shift+r,进入替换模式
学习过word文字录入的都知道,按insert键,word下方的状态显示为替换(打开word文档默认是“插入”,再按一次insert键,就变为“改写”了)。此处的vim替换功能与word替换功能相同。
退出替换模式,也是按Esc
在替换模式(Replace mode),r只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下Esc为止(常用)。
帮助信息
:help replace-mode
六、粘贴模式
1.帮助信息
:h paste
2.功能
在此模式下,粘贴内容不会自动缩进,仍保持原格式,而只是纯拷贝粘贴。
3.进入
在vim命令行模式下,输入如下命令,可以使vim进入paste模式
:set paste
4.操作
进入paste模式执行set paste,它做了以下这些事情:
textwidth设置为0
set noai set nosi softtabstop设置为0
revins重置
showmatch重置,等等
5.退出
在vim命令行模式下,可以输入如下命令,退出paste模式:
:set nopaste
(复制粘贴有缩进的代码)具体操作步骤:
a.先让vim处于命令行模式下
b.执行如下命令,先进入粘贴模式 :set paste
c.然后进入插入模式
d.按下Ctrl+V粘贴代码进来,这个时候的格式能保留原样
e.按Esc回到命令行模式
f.退出粘贴模式 :set nopaste