- 初步使用
- 模式切换
- 命令或普通模式:默认模式,可以实现移动光标,剪切/粘贴文本
- 插入或编辑模式:修改文本文件内容
- 扩展命令或命令行模式:保存,退出
- 命令模式—》插入模式
- i insert 光标所在位置输入
- I insert 光标所在行首位置
- a 光标所在位置后输入
- A 光标所在位置行尾输入
- o 光标所在下方输入
- O 光标所在上方输入
- 插入模式—- ESC——》命令模式
- 命令模式—- :———》扩展命令模式
- 扩展模式—-ESC,enter——》命令模式
- 模式切换
- 扩展命令模式
- 按:进入扩展命令模式
- 基本命令
- w 写磁盘文件
- wq 写入并退出
- x 写入并退出
- X 加密
- q 退出
- q! 不存盘退出,即使更改都将丢失
- r filename 读文件内容到当前文件中
- w filename 将当前文件内容写入另一个文件中
- !command 执行命令
- r!command 读入命令的输出
- 地址定界
- 格式:start_pos end_pos CMD
- 地址定界格式
- # 具体第几行
- #,# 从左侧开始行,到右侧结尾行
- #,+# 从左侧开始行,加上N行
- . 当前行
- $ 最后一行
- .,$-1 当前行到倒数第二行
- % 全文
- /pattern/ 从当前行向下查找,匹配第一行
- /part1/,/part2/ 从第一次匹配1到第一次匹配2的行
- #,/part/ 从指定行开始,一直找到第一个匹配的行结束
- /pat/ , $ 找到第一个匹配的行到结尾
- 地址界定后接命令
- d 删除
- y 复制
- w file 写入文件
- r file 读入文件
- 查找并替换
- 找到需要进行替换的行
- 输入:s/a1/b2/g
- g现在是行内替换
- s / 内容/替换内容/修饰符
- i 忽略大小写
- g 全局替换
- gc 全局替换 ,每次询问
- 定制VIM工作特性
- 行号
- set nu
- set nonu
- 忽略字符大小写
- set ic
- set noic
- 自动缩进
- set ai
- set noai
- 复制保留格式
- set paste
- set nopaste
- 显示换行符
- set list
- set nolist
- 高亮搜索
- set hlsearch
- set nohlsearch
- 语法高亮
- syntax on
- syntax off
- tab代替空格
- set expandtab
- set expandtab
- tab用指定空格的个数代替
- set tabstop=#
- 简写 ts=4
- 设置缩进宽度
- set shiftwidth=4
- 设置文本宽度
- set textwidth=65 #从做向右计数
- set wrapmargin=15 #从右到左计数
- 设置光标所在行的标识线
- set cursorline
- set nocursorline
- 加密
- set key=password
- set key=
- 行号
- 基本命令
- 按:进入扩展命令模式
- 命令模式
- 退出VIM
- ZZ 保存退出
- ZQ 不保存退出
- 光标跳转
- 字符跳转
- h l j k 左右下上
- 单词跳转
- w 下个单词词首
- e 当前或下一单词的词尾
- b 当前或者前一个单词的词首
- 当前页跳转
- H 首页
- M 页中间行
- L 页底
- zt 光标移至屏幕顶端
- zz 光标移至屏幕中间
- zb 光标移至屏幕顶端
- 行首行尾跳转
- ^ 跳转至行首的第一个非空白字符
- O 跳转至行首
- $ 跳转至行尾
- 行间移动
- G 最后一行
- 1G, gg 第一行
- 句间移动
- ) 下一句
- ( 上一句
- 段落间移动
- } 下一段
- { 上一段
- 字符编辑
- x 剪切光标处的字符
- #x 剪切光标处起始的#个字符
- xp 交换光标所在与后面的字符的位置
- ~ 转换大小写
- J 删除当前行后的换行符
- r 替换光标所在的字符
- 删除命令
- d 删除字符
- d$ 删除到行尾
- d^ 删除到非空首行
- dO 删除到行首
- #dd 删除多行
- D: 从光标处一直删除到行尾,等同于d$
- 复制命令
- yy 复制行
- #yy 复制多行
- Y 复制整行
- 粘贴命令
- P 整行粘贴下方,否则粘贴后面
- p 整行粘贴上方,否则粘贴前面
- 改变命令
- cc 删除当前行并输入新内容
- C 删除当前光标至行尾,并切换插入模式
- 查找
- /aaa 从光标位置向尾部查找
- ?aaa 从光标位置向首部查找
- n 与命令同方向
- N 与命令反方向
- 撤销更改
- u 撤销最近的更改
- #u 撤销之前多次更改
- U 撤销光标落在这行后所有的修改
- . 重复同一个操作
- #. 重复前一个操作#次
- 字符跳转
- 退出VIM
- 可视化模式
- 光标定位操作地方
- 输入CTRL + V 进入可视化模块
- 选择需要操作的行
- 然后输入I
- 然后输入字符
- 最后按ESC键完成看效果
- 多文件模式
- vim file1 file2 file3
- :next 下一个
- :prev 前一个
- :frist 第一个
- :last 最后一个
- :wall 保存所有
- qall 不保存退出所有
- wqall 保存退出所有
- 多窗口模式
- 多分割文件
- 打开多个文件,-o或者-O分割
- -o 水平分割为上下
- -O 垂直分割为左右
- 窗口内切换使用ctrl + w + 上或者下
- 打开多个文件,-o或者-O分割
- 单个文件分割
- ctrl + w + s 水平分割
- ctrl + w +v 垂直分割
- ctrl + w + q 取消相邻窗口
- ctrl + w + o 取消全部窗口
- 多分割文件
- vim寄存器
- 类似于剪切内容存放,分为10个无名寄存器。26个命名寄存器
- 命名寄存器a-z
- 例如:3”tyy 就是当前光标下的三行进行复制,放置t寄存器
- 输入”tp 就是将t寄存器内的数据进行粘贴
- 无名寄存器 0-9
- 0 表示最近复制的内容
- 1存放最近删除的内容,当文本发生变化,1会转2,2转3,以此类推
- 命名寄存器a-z
- 类似于剪切内容存放,分为10个无名寄存器。26个命名寄存器
- 标记和宏
- 标记
- 输入m表示开启标记,然后输入一个小写字母,作为标记方式
- 采用’小写字母,例如’a 的方式进行跳转到刚才标记的地方
- 宏
- 输入q表示开始录制宏,然后输入小写字母作为宏的名称
- 然后使用i,开始输入内容,输入完成按ESC,然后按q表示停止录制
- 执行宏 @a 就是@ + 设置宏的名称
- 重新执行上次的宏@@
- 标记
- 编辑二进制文件
- 以二进制方式打开文件
- vim -b a.txt
- 二进制与十六进制切换
- :%!xxd 二进制转十六进制
- :%!xxd -r 十六进制转二进制
- 以二进制方式打开文件