目录
- 简介
- 普通模式(normal mode)
- 插入模式(insert mode)
- 命令行模式(command mode)
- vim Ex命令介绍
- Ex 命令操作范围
- 命令模式下操作和普通模式操作文件对比
- 可视化模式介绍(visual mode)
- 三种可视化模式
- 选择区域范围
- 可视化模式操作范例
- vim字符选择
- 同时注释多行
- 删除多行注释
- 参考
简介
与大部分常用的编辑器(notepad、word、kate等)不同,Vim是一种区分操作模式的编辑器。很多常用的编辑操作(如复制、粘贴、删除等)只有在特定的模式下才能进行,相同的按键在不同的Vim模式下所完成的操作是不一致的。
Vim这种区分模式的设计既是其操作高效、灵活的关键,也是其学习曲线十分陡峭的重要原因。
普通模式(normal mode)
普通模式(normal mode,也被翻译为正常模式) 是打开 Vim 后进入的默认模式;不论当前处于哪种模式,按下 Esc 键 (有时需按两下) 都会进入普通模式。
- Vim普通模式下提供了非常高效的命令用于光标移动, 位置跳转;
- 此外,在Vim普通模式下还可以重新调整已有文件内容的位置(如复制 y、粘贴 p、删除 d),实现对文件的修改。
Vim普通模式的强大,很大程度上源于普通模式命令可以把操作符与动作命令结合在一起。
插入模式(insert mode)
Vim普通模式下按下 i、I、a、A、o、 O 等键会进入插入模式(insert mode)。
Vim插入模式只专注于做一件事,那就是输入文字,对文件内容进行编辑。除此之外,还可以使用键盘上的 ↑、↓、←、→ 按键移动光标。
替换模式(r、R命令触发)可以看作是插入模式的一种特例,它会从普通模式快速进入插入模式并替换文档中已有的字符,然后再返回到普通模式;
命令行模式(command mode)
Vim普通模式下按下 : 键会进入命令行模式(command mode)。
Vim命令行模式和 shell 下的命令行有些类似,可以输入一条命令后按回车键执行它。
当然,在任意时刻都可以按 Esc 键从命令行模式切换回普通模式。
命令行模式会提示用户输入一条 Ex 命令、一个查找模式或一个表达式。出于历史原因,在命令行模式中执行的命令又被称做 Ex 命令。
在我们按 / 调出查找提示符或用 = 访问表达式寄存器时,命令行模式也会被激活。
vim Ex命令介绍
出于历史原因,在 Vim 命令行模式中执行的命令又被称做 Ex 命令。Ex 命令都需要先输入 : 后按回车才能执行,按 / 调出查找提示符或用 = 访问表达式寄存器时,命令行模式也会被激活,但这两个并不是 Ex 命令。
可以用 Ex 命令:
读写文件 (:edit 和 :write)、
创建新标签页 (:tabnew)、
分割窗口 (:split)、
操作参数列表 (:prev 和 :next)
缓冲区列表 (:bprev 和 :bnext)。
事实上,Vim 为几乎所有功能都提供了相应的 Ex 命令;
通过命令 :h ex-cmd-index 可获得完整的Vim Ex命令列表。
Vim 普通模式命令一般只操作当前字符或当前行,而很多 Ex 命令可以用行号、位置标记或查找模式指定要操作的范围,这意味着无需移动光标就可以使用 Ex 命令在任意位置、对多个行同时执行某种操作。
因此,相比于普通模式下的 Vim 命令,Ex 命令作用范围更广,操作距离更远。
Ex 命令操作范围
Ex 命令的优点之一是可以在某一范围内的所有行上执行,可以通过以下几种方式指定操作范围。
指定特定行
输入一条只包含数字的 Ex 命令,Vim 会把这个数字解析成一个地址,并把光标移动到该数字所指定的行上。
例如,Vim命令 :3p 会把光标移到第 3 行,然后显示该行的内容。
用行号区间指定范围
可以用行号来指定一个范围 ({start},{end});
如 :2,5p 会打印从第 2 行到第 5 行之间的每一行的内容,且运行完这条命令后光标将停留在第 5 行。
先可视化模式下用高亮选区指定范围
使用Vim可视化模式选择待操作目标范围后按下 : 键,命令行上会预先填充一个范围 :’<,’>,用于代表高亮选区的范围,
例如,:’<,’>p 用于打印高亮选择的文档内容。
用模式匹配指定范围
用偏移对地址进行修正
地址偏移的一般形式为 :{address}+n,如果 n 被省略,缺省偏移量为 1。{address} 可以是一个行号、一个位置标记、或是一个查找模式。
命令模式下操作和普通模式操作文件对比
Vim命令行模式下也提供用于对文件内容进行删除、复制与粘贴操作的 Ex 命令。
例如,执行 :delete c 可以把当前行剪切到寄存器 c,再执行 :put c 命令可将其粘贴至当前光标所在行之下。
相比Vim普通模式下的 y、d、p 等命令来说,这些操作看似繁琐,但如果将它们与其他 Ex 命令结合起来使用,或者用于 Vim 脚本编程,将会更方便。
可视化模式介绍(visual mode)
Vi/Vim可视化模式(Visual Mode)下可以选择一块编辑区域,然后对选中的文件内容执行插入、删除、替换、改变大小写等操作,是Vim使用过程中使用非常频繁的一种模式。
Vim普通模式按下 v、V、 v 可以进入可视化模式 (visual node)。
三种可视化模式
- 可视化字符
选中光标经过的所有字符,普通模式下按 v 进入- 可视化行
选中光标经过的所有行,普通模式下按 V 进入- 可视化块
选中一整个矩形框表示的所有文本,普通模式下按 + v 进入
选择区域范围
如下图所示,进入Vim可视模式后,鼠标选中的文本区域由两个端点来标识(即左上角和右下角)。
默认情况下,在Vim可视化模式下移动鼠标是控制右下角端点的位置;
当需要调整左上角端点的位置时,可以使用o键在左上角和右下角之间进行切换
可视化模式操作范例
vim字符选择
按键 v 进入Vim字符选择可视化模式,通过Vim鼠标移动命令 H 把鼠标往右移动,选择多个字符。
当然,选择好文本后,可以用 y 进行复制,用 p 命令粘贴等。
同时注释多行
使用Vim可视化模式可以很方便地操作多行文本内容,比如一次性注释多行文本,可以如下操作:
(1) Ctrl + v进入块选择模式
(2) 向上或向下移动光标选择多行
(3) 移动光标到行的起始位置
(4) 然后按大写的 I 进入行首插入模式
(5) 插入注释符
(6) 按Esc回到命令模式
需要注意的是:Vim同时编辑多行时,只有在当前的插入动作结束后(按Esc退为命令模式),之前选中的其它行才会出现同样插入的文本。
删除多行注释
如果想一次性删除多行注释,则可以这样做:
(1) Ctrl + v 进入块选择模式
(2) 向上或向下移动光标,选择要删除的注释符号
(3) 按d键删除
参考