三种常见模式:
- 命令或普通(Normal)模式:可以实现移动光标,剪切/粘贴文本,主要用于查看文件
- 插入(Insert)或编辑模式:主要用于修改文件
- 扩展命令(extended command)或命令(末)行模式:保存,退出等
插入颜色字符
1 切换至插入模式2 按 ctrl + v + [ 三个键 , 显示 ^[3 后续输入颜色信息 , 如 :^[[32mhello^[[0m4 切换至扩展命令模式 , 保存退出5 cat 文件可以看到下面显示
扩展命令模式基本命令
w 写(存)磁盘文件wq 写入并退出x(小写) 写入并退出X (大写) 加密q 退出q ! 不存盘退出,即使更改都将丢失r filename 读文件内容到当前文件中w filename 将当前文件内容写入另一个文件!command 执行命令r!command 读入命令的输出
地址定界
格式:
:start_pos,end_pos CMD
地址定界格式
# # 具体第#行,例如2表示第2行#,# # 从左侧#表示起始行,到右侧#表示结尾行#,+# # 从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行. # 当前行$ # 最后一行.,$-1 # 当前行到倒数第二行% # 全文, 相当于1,$
地址定界后跟一个编辑命令
d #删除y #复制w file #将范围内的行另存至指定文件中r file #在指定位置插入指定文件中的所有内容
查找并替换
格式
s/要查找的内容/替换为的内容/修饰符
修饰符:
i #忽略大小写g #全局替换(贪婪模式),默认情况(懒惰模式)下,每一行只替换第一次出现gc #全局替换,每次替换前询问
注意:贪婪模式、懒惰模式
定制vim的工作特性
配置文件:
/etc/vimrc #全局~/.vimrc #个人
行号
显示:set number,简写 set nu取消显示:set nonumber, 简写 set nonu
忽略字符的大小写
启用:set ignorecase,简写 set ic不忽略:set noic
自动缩进
启用:set autoindent,简写 set ai禁用:set noai
复制保留格式
启用:set paste禁用:set nopaste
显示Tab ^I和换行符 和$显示
启用:set list禁用:set nolist
高亮搜索
启用:set hlsearch禁用:set nohlsearch 简写:nohl
语法高亮
启用:syntax on禁用:syntax off
文件格式
启用windows格式:set fileformat=dos启用unix格式:set fileformat=unix简写 set ff=dos|unix
Tab 用空格代替
启用:set expandtab 默认为8个空格代替Tab禁用:set noexpandtab简写:set et
Tab用指定空格的个数代替
启用:set tabstop=# 指定#个空格代替Tab简写:set ts=4
设置缩进宽度
#向右缩进 命令模式>>#向左缩进 命令模式<<#设置缩进为4个字符set shiftwidth=4
设置光标所在行的标识线
启用:set cursorline,简写 set cul禁用:set nocursorline
加密
启用: set key=password禁用: set key=
了解更多
set 帮助:help option-list:set or :set all
命令模式下的操作
退出vim
ZZ 保存退出
ZQ 不保存退出
光标跳转
h:左
l:右
j:下
k:上
w:下一个单词的词首e:当前或下一单词的词尾b:当前或前一个单词的词首
H:页首M:页中间行L:页底zt:屏幕顶端zz:屏幕中央zb:屏幕低底端
^ :行首的第一个非空白字符0 :行首$ :行尾
#G: 或者扩展命令模式下:#: 跳转至由第#行G: 最后一行1G, gg: 第一行
) :下一句( :上一句} :下一段{ :上一段
Ctrl+f :向文件尾部翻一屏,相当于PagedownCtrl+b:向文件首部翻一屏,相当于PageupCtrl+d:向文件尾部翻半屏Ctrl+u:向文件首部翻半屏
字符编辑
x 剪切光标处的字符#x 剪切光标处起始的#个字符xp 交换光标所在处的字符及其后面字符的位置~ 转换大小写J 删除当前行后的换行符
替换命令
r 只替换光标所在处的一个字符R 切换成REPLACE模式(在末行出现-- REPLACE -- 提示),按ESC回到命令模式
删除命令
d 删除命令,可结合光标跳转字符,实现范围删除d$ 删除到行尾d^ 删除到非空行首d0 删除到行首dwdedb#COMMANDdd: 剪切光标所在的行#dd 多行删除D: 从当前光标位置一直删除到行尾,等同于d$
复制命令
y 复制,行为相似于d命令y$y0y^yeywyb#COMMANDyy:复制行#yy 复制多行Y:复制整行
粘贴命令
p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
改变命令(命令 c 删除后切换成插入模式)
c$c^c0cbcecw#COMMANDcc #删除当前行并输入新内容,相当于S#ccC #删除当前光标到行尾,并切换成插入模式,相当于c$
查找
/PATTERN: 从当前光标所在处向文件尾部查找?PATTERN:从当前光标所在处向文件首部查找n: 与命令同方向N: 与命令反方向
撤销更改
u 撤销最近的更改,相当于windows中ctrl+z#u 撤销之前多次更改U 撤消光标落在这行后所有此行的更改Ctrl-r 重做最后的“撤消”更改,相当于windows中crtl+y. 重复前一个操作#. 重复前一个操作#次
可视化模式
允许选择的文本块
- v 面向字符,-- VISUAL --
- V 面向整行,-- VISUAL LINE --
- ctrl-v 面向块,-- VISUAL BLOCK --
在文件指定行的行首插入
#
1 、先将光标移动到指定的第一行的行首2 、输入 ctrl+v 进入可视化模式3 、向下移动光标,选中希望操作的每一行的第一个字符4 、输入大写字母 I 切换至插入模式5 、输入 #6 、按 ESC 键
在指定的块位置插入相同的内容
1 、光标定位到要操作的地方2 、 CTRL+v 进入 “ 可视 块 ” 模式,选取这一列操作多少行3 、 SHIFT+i(I)4 、输入要插入的内容5 、按 ESC 键
多文件模式
vim FILE1 FILE2 FILE3 ...:next 下一个:prev 前一个:first 第一个:last 最后一个:wall 保存所有:qall 不保存退出所有:wqall保存退出所有
多文件分割
vim -o|-O FILE1 FILE2 ...-o: 水平或上下分割-O: 垂直或左右分割(vim only)在窗口间切换:Ctrl+w, Arrow
单文件窗口分割
Ctrl+w,s:split, 水平分割,上下分屏Ctrl+w,v:vertical, 垂直分割,左右分屏ctrl+w,q:取消相邻窗口ctrl+w,o:取消全部窗口:wqall :退出
vim帮助
:help:help topicUse :q to exit helpvimtutor