vim的模式分类很多。我习惯分为四种:命令模式、末行模式、插入模式、视图模式。
命令模式:按下ESC后,就是命令模式,也有人称为普通模式。在这种模式下可进行如下操作:
(1)光标移动
向右移动一个单词:w 向左移动一个单词:b
向右移动一个字母:l 向左移动一个字母:h
向右移动number个字母:number+→ 向左移动number个字母:number+←
向上移动一行:j 向下移动一行:k
向上移动number行:number+↑ 向下移动number行:number+↓
跳转到首行:gg 跳转到末行:G
跳转到行首:$或者0或者HOME 跳转到行末:^或者end
跳转到固定的行:number+G
(2)复制、剪切、粘贴
复制:
复制一行 yy
复制当前行开始number行 number+yy
剪切:
剪切光标所覆盖字符 x
<!--光标默认覆盖单个字符,在视图模式下可选择多个字符-->
粘贴:
粘贴在当前行之上 shift+p
粘贴在当前行之下 p
(3)删除、撤销
删除:
删除当前一行 dd
删除当前行开始number行 number+dd
删除当前位置开始至空格处(可视为删除单词) d+w
删除当前位置至行首 d+0/d+home/d+^
删除当前位置至行末 d+end/d+$
同理有 d+g+g和d+G
撤销:
撤销上一步 u
(4)查找
/words 全局查找所有words
这个命令使用后会一直显示高亮,取消高亮:
末行模式下,输入no high light search的缩写 :nohlsearch
命令模式可跳转到末行模式、插入模式、可视模式。
末行模式:
命令模式按下冒号“:”,进入莫行模式。末行模式有以下功能:
显示行号: set number/set nu
取消显示行号: set nonu
保存 w
另存为 w filename
退出 q
强制退出(不保存) q!
保存并退出 w+q
定位到第number行 number
<!--非正常退出,linux会存盘一个.swap的隐藏临时文件。需要删除后才能正常编辑。ls -al 可查看。rm可删除-->
替换:
全局替换 %s/old/new/g
替换单行中的第一个单词 s/old/new
替换单行中的所有单词 s/old/new/g
替换指定范围内的单词(如3至8行) 3,8s/old/new/g
插入模式:
命令模式进入插入模式可按字母a、i、o
a:在当前字符之后插入
i:在当前字符之前插入
o:插入一空行并进入编辑状态
o 当前行之后插入
O 当前行之前插入
单词补全:
Ctrl+n或者Ctrl+p 只能补全文档内存在的单词
视图模式:
命令模式按键 v
在视图模式中,可按键←↑→↓使光标覆盖内容。再按复制yy或者剪切x可进行后续粘贴