三种模式
命令模式(默认) command mode:移动光标,剪切/粘贴文本 插入(编辑)模式 edit mode:修改文本 扩展命令模式 extended command mode:保存,退出等
命令格式
vim [OPTION]... FILE...
| OPTION | 解释说明 |
|---|---|
| +# | 打开文件后,直接让光标处于第#行的行首 |
| vim + file | 直接打开file,光标在最后一行 |
| +/PATTERN | 打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首 |
| vim –b file | 二进制方式打开文件 |
| vim –d file1 file2… | 比较多个文件(可用ctrl+w在各个窗口间移动,打开的三个文件都可以修改,保存需逐个进行) |
| vim -m file | 只读打开文件(强制命令!也不好使) |
| ex file 或 vim –e | 直接进入仅ex模式(不可视) |
模式转换
| 命令 | 说明 |
|---|---|
| ESC | 插入/扩展模式 —-> 命令模式 |
| : | 命令模式 —-> 扩展模式 |
| CTRL+s,Ctrl+q | 锁定和解锁 |
命令模式–>插入模式
| 命令 | 说明 |
|---|---|
| i | insert, 在光标所在处输入(shift+s也可以) |
| I | 在当前光标所在行的行首输入 |
| a | append, 在光标所在处后面输入 |
| A | 在当前光标所在行的行尾输入 |
| o | 在当前光标所在行的下方打开一个新行 |
| O | 在当前光标所在行的上方打开一个新行 |
| ZZ | 保存退出 |
| ZQ | 不保存退出 |
## 扩展模式
| 命令 | 说明 |
|---|---|
| q | 退出 |
| q! | 强制退出,丢弃做出的修改 |
| wq | 保存退出 |
| x | 保存退出 |
| w | 写(存)磁盘文件 |
| r filename | 读文件内容到当前文件中 |
| w filename | 将当前文件内容写入另一个文件 |
| !command | 在编辑文件过程中,临时执行某命令而不需退出文件编辑 |
| r!command | 执行某命令,将其结果读入当前编辑文件的光标处后 |
命令模式
光标跳转
| 命令 | 说明 |
|---|---|
| h | 左 |
| l | 右 |
| j | 下 |
| k | 上 |
| #h/l/j/k | 向指定方向跳转#个字符 |
| w | 下一个单词的词首 |
| e | 当前或下一个单词的词尾 |
| b | 当前或前一个单词的词首 |
| #w/e/b | 向指定方向跳转#个单词数 |
| H | 当前页页首 |
| M | 当前页页中间行 |
| L | 当前页页底 |
| ^ | 跳转至行首的第一个非空白字符; |
| 0 | 跳转至行首 |
| $ | 跳转至行尾 |
| #G、扩展模式:# | 跳转至由#指定行 |
| G | 最后一行 |
| 1G, gg | 第一行 |
| ) | 下一句 |
| ( | 上一句 |
| } | 下一段 |
| { | 上一段 |
| Ctrl+f | 向文件尾部翻一屏 |
| Ctrl+b | 向文件首部翻一屏 |
| Ctrl+d | 向文件尾部翻半屏 |
| Ctrl+u | 向文件首部翻半屏 |
字符编辑
| 命令 | 说明 |
|---|---|
| x | 删除光标处的字符(实际上类似于剪切); |
| #x | 删除光标处起始的#个字符 |
| xp | 交换光标所在处的字符及其后面字符的位置 |
| ~ | 转换大小写 |
| r | 替换光标所在处的字符 |
| R | 切换成REPLACE模式 |
| d | 删除命令,可结合光标跳转字符,实现范围删除;(并未真正删除,实际上类似于剪切); |
| d$ | 删除到行尾 |
| d^ | 删除到非空行首 |
| d0 | 删除到行首 |
| dw | 删除光标位至下个单词词首 |
| de | 删除光标位到本词或下个单词词尾 |
| db | 删除光标位到本词或下个单词词首 |
| #COMMAND | 删除#指定的内容(如:15d0,表示向前删除本行15个字符,若不足15个字符也不向上扩展) |
| dd | 删除光标所在的行 |
| #dd | 多行删除 |
| D | 从当前光标位置一直删除到行尾,留空行,等同于d$ |
| y | 复制yank,行为相似于d命令 |
| y$ | 复制到行尾 |
| y0 | 复制到行首 |
| y^ | 复制到非空行首 |
| ye | 复制光标位到本词或下个单词词尾 |
| yw | 复制光标位至下个单词词首 |
| yb | 复制光标位到本词或下个单词词首 |
| #COMMAND | 复制#指定的内容() |
| yy | 复制行 |
| #yy | 复制多行 |
| Y | 复制整行 |
| p | 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面 |
| P | 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面 |
| c | 修改后切换成插入模式 |
| c$ | 删除当前光标到行尾,并切换成插入模式 |
| c^ | 删除当前光标到非空行首,并切换成插入模式 |
| c0 | 删除当前光标到行首,并切换成插入模式 |
| cb | 删除光标位到本词或下个单词词首,并切换成插入模式 |
| ce | 删除光标位到本词或下个单词词尾,并切换成插入模式 |
| cw | 删除光标位至下个单词词首,并切换成插入模式 |
| #COMMAND | 删除#指定的内容,并切换成插入模式(如:3c0,表示向前删除本行3个字符,若不足15个字符也不向上扩展) |
| cc | 删除当前行并切换至插入模式,输入新内容 |
| #cc | 删除多行并切换至插入模式,以输入新内容 |
| C | 删除当前光标到行尾,并切换成插入模式 |
| gU | 变大写 |
| gu | 变小写 |
| <start position><command><end position> | 对于y/d/gU/gu,可以使用该组合,如0y$,^gU$等; |
| 100iwang[ESC] | 粘贴 wang 100次 |
| u | 撤销最近的更改 |
| #u | 撤销之前多次更改 |
| U | 撤消光标落在这行后所有此行的更改 |
| Ctrl+r | 重做最后的“撤消”更改 |
| . | 重复前一个操作 |
| n. | 重复前一个操作n次 |
扩展模式
地址定界
地址定界 编辑命令(d/y/w/r) w file: 将范围内的行另存至指定文件中 r file:在指定位置插入指定文件中的所有内容
| 命令 | 说明 |
|---|---|
| start_pos,end_pos | |
| # | 具体第#行,例如2表示第2行; |
| #,# | 从左侧#表示行起始,到右侧#表示行结尾 |
| #,+# | 从左侧#表示的行起始,加上右侧#表示的行数 |
| 2,+3 | 表示2到5行 |
| . | 当前行 |
| $ | 最后一行 |
| .,$-1 | 当前行到倒数第二行 |
| % | 全文, 相当于1,$ |
| /pat1/,/pat2/ | 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 |
| #,/pat/ | 从指定行开始,到第一次匹配pat的行结束 |
| /pat/,$ | 从第一次匹配pat的行开始,到最后一行结束 |
查找
| 命令 | 说明 |
|---|---|
| /PATTERN | 从当前光标所在处向文件尾部查找 |
| ?PATTERN | 从当前光标所在处向文件首部查找 |
| n | 与命令同方向 |
| N | 与命令反方向 |
| s/要查找的内容/替换为的内容/修饰符 | 在扩展模式下完成查找替换操作() |
查找替换
s/要查找的内容/替换为的内容/修饰符 (分隔符/可用其他字符替换) 要查找的内容:可使用模式 替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容 修饰符: i : 忽略大小写 g : 全局替换;默认情况下,每一行只替换第一次出现 gc: 全局替换,每次替换前询问
寄存器
命名/无命名寄存器(a~z表示26个命名寄存器、1个命名寄存器)
26个命名寄存器(a~z表示)和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享。未指定,将使用无命名寄存器。 格式: [数字]["寄存器][命令]如: 3"tyy 表示复制3行到t寄存器中 "tp 表示将t寄存器内容粘贴
数字寄存器(0~9表示)
有10个数字寄存器,用0,1,…,9表示,0存放最近复制内容,1存放最近删除内容。 当新的文本变更和删除时,1转存到2,2转存到3,以此类推。 数字寄存器不能在不同会话间共享。
编辑二进制文件
vim –b binaryfile 以二进制方式打开文件 %!xxd :扩展命令模式下,利用xxd命令转换为可读的十六进制 %!xxd –r:扩展命令模式下,利用xxd命令转换回二进制
可视化模式
该模式允许选择的文本块: v 面向字符 V 面向行 ctrl+v 面向块 可视化键可用于与移动键(如:w,e,b,),},箭头等)结合使用。 突出显示的文字可以被删除d,复制y,变更c,过滤,搜索/替换s等
多文件模式
vim FILE1 FILE2 FILE3 ... :next 下一个 :prev 前一个 :first 第一个 :last 最后一个 :wall 保存所有 :qall 退出所有 :wqall
多“窗口”模式
-
多文件分割
vim -o|-O FILE1 FILE2 ... -o: 水平分割 -O: 垂直分割 在窗口间切换:Ctrl+w, Arrow
-
单文件窗口分割:
Ctrl+w,s : split, 水平分割 Ctrl+w,v : vertical, 垂直分割 ctrl+w,q :取消相邻窗口 ctrl+w,o : 取消全部窗口
定制vim的工作特性
-
配置文件:永久有效
全局:/etc/vimrc 个人:~/.vimrc
-
扩展模式:当前vim进程有效
-
配置项
(1) 行号 显示:set number, 简写为set nu 禁用:set nonumber, 简写为set nonu (2) 括号成对匹配 匹配:set showmatch, 简写为set sm 禁用:set nosm (3) 自动缩进 启用:set ai 禁用:set noai (4) 高亮搜索 启用:set hlsearch 禁用:set nohlsearch (5) 语法高亮 启用:syntax on 禁用:syntax off(6) 忽略字符的大小写 启用:set ic 禁用:set noic (7) 文件格式 启用:fileformat=unix 禁用:fileformat=dos (8) 设置文本宽度 :set textwidth=65 (vim only) :set wrapmargin=15(9) 查看设定 :set 查看当前设定 :set all 查看所有选项
帮助
-
vi/vim内置帮助
:help option-list 进入help的不同主题 :helpgrep word 按关键字查找 :help 查看帮助 :q 退出帮助
-
Vimtutor 练习使用
原创文章,作者:taobaibai,如若转载,请注明出处:http://www.178linux.com/37291

