打开文件
[root@stardust ~]# vim passwd +n # 打开在第n行
[root@stardust ~]# vim passwd + # 打开在最后一行
[root@stardust ~]# vim passwd +/ssh # 打开在第一个被PATTERN匹配到的行编辑模式
进入插入模式
i光标前编辑a光标后编辑o光标下方新行编辑O光标上方新行编辑I光标所在行的行首输入A光标所在行的行尾输入
光标跳转
h光标左移j光标下移k光标上移l光标右移w光标跳转至下一个单词词首e光标跳转至下一个单词词尾b光标跳转至前一个单词词首$光标移动至行尾^光标移动至行首第一个非空字符0光标移动至行首gg光标跳转至文件首G光标跳转至文件尾
字符编辑
x删除光标所在处的字符r替换光标所在处的字符pP粘贴剪切的内容d删除字符 配合光标跳转字符使用 实现范围删除D删除至行尾 相当于d$dd删除整行y复制字符 配合光标跳转字符使用 实现范围复制yy复制整行c删除字符并可以直接编辑 配合光标跳转字符使用C删除字符并可以直接编辑 相当于c$cc删除整行 并可以直接编辑u撤销刚才的操作Ctrl + r恢复刚才的撤销操作.重复上一次的编辑操作
翻屏操作
Ctrl + f向文件尾部翻一屏Ctrl + b向文件首部翻一屏
可视化模式
配合编辑模式中的操作方式使用
v按照字符选定V按照行选定Ctrl + v按照块选定
末行模式
内建的命令行接口
地址定界
M第M行M, N从M行开始到N行结束M, +N从M行 往后N行,即M行到M+N行.当前行$最后一行%全文 相当于1,$/pat1/,/pat2/从第一个匹配的pat1到第一次匹配的pat2中间的行
编辑命令
配合地址定界使用
d删除y复制w /PATH/TO/SOMEWHERE将范围内的行另存至指定文件中r /PATH/FROM/SOMEFILE在指定位置 插入指定文件中的内容s/要查找的内容/替换为的内容/修饰符- 第一项 要查找的内容支持使用正则
- 第二项 替换为的内容不能使用正则,但可以使用
1 2后向引用,还可以使用&引用前面查找到的内容 - 修饰符
i不区分大小写g全局替换
进阶操作
多文件模式
next后一个文件prev前一个文件first第一个文件last最后一个文件qall退出所有文件wall保存所有文件 不退出wqall保存退出所有文件qall!不保存退出所有文件
窗口分隔模式
[root@stardust ~]# vim -o file1 file2 file3 # -o 打开多个文件 水平展示
[root@stardust ~]# vim -O file1 file2 file3 # -O 打开多个文件 垂直展示
# 使用`Ctrl + w` + 方向键 控制窗口切换单文件窗口分割
Ctrl + w,ssplit 水平分割Ctrl + w,vvertical 垂直分割Ctrl + w,方向键窗口切换
定制vim的工作特性
配置文件 /etc/vimrc,~/.vimrc
set nu,set nonu显示行号 默认关闭set ai,set noai自动缩进 默认关闭set sm,set nosm括号匹配 默认开启set hlsearch,set nohlsearch搜索高亮 默认开启syntax on,syntax off语法高亮 默认开启set ic,set noic忽略字符大小写 默认关闭set ts=4设置tab为4个空格set expandtab,set noexpandtab设置tab是否转换为空格
Linux系统内置
vimtutor命令,帮助大家学习vim的操作