打开文件
[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
替换光标所在处的字符p
P
粘贴剪切的内容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,s
split 水平分割Ctrl + w,v
vertical 垂直分割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的操作