笔者只记录最常用的vim命令,相信也很少有人能够将其全部记住,毕竟这只是一个编辑工具。也不值得我们投入大量的精力。只求以最小的精力,尽可能满足我们的需要。
目录
一. vim常用模式
正常模式:按:即可进入,此模式下可输入命令进行操作
插入模式:按 i ,可对内容进行编辑,在光标处进行插入,退格以及回车操作
可视模式:按v以字符精度进行选中,按V以行精度进行选中,ctrl+v以块精度进行选中。
可视模式下可进行d删除,y复制,p黏贴
二.vim打开方式
vim file 正常打开
vim + file 从文件的末尾开始
vim num file 从某一行开始
三.vim文档操作
:w 保存修改
:wq 保存并退出
:q 退出
:q! 强制退出
:e file 关闭当前文件,并打开其他文件
:e! file 放弃对当前文件的修改,编辑新的文件。
:e#或ctrl+^ 回到上一个编辑的文件
:Sex 水平分割,并浏览文件系统。在文件系统回车直接进入vim模式
:Vex 垂直分割
四.光标移动
(1)基本移动
0 移动到行首
shift + 4 移动到行尾
gg 文件头部
G 文件尾部
ctrl+f: 下翻一屏。
ctrl+b: 上翻一屏
ctrl+e: 向下滚动一行。
ctrl+y: 向上滚动一行
(2)标记
m{a-z}: 标记光标所在位置,局部标记,只用于当前文件。
m{A-Z}: 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效。
`{a-z}: 移动到标记位置。
:marks 显示所有标记
:delmarks a
:delmarks! 删除所有标记
五.vim文本插入
指定数量插入字符 eg:按8,再按i,进入插入模式,输入=, 按esc进入命令模式,就会出现8个=。 这在插入分割线时非常有用,如30i+<esc>就插入了36个+组成的分割线。
o: 在下面新建一行插入;
O: 在上面新建一行插入;
:r filename在当前位置插入另一个文件的内容。
:r !date 在光标处插入当前日期与时间。同理,:r !command可以将其它shell命令的输出插入当前文档。
六.查找替换
:/something: 在后面的文本中查找something
:?something: 在前面的文本中查找something。
n: 向后查找下一个。
N: 向前查找下一个
:s/old/new - 用new替换当前行第一个old。
:s/old/new/g - 用new替换当前行所有的old。
7.多文件编辑
分屏编辑
vi -o filenames 在水平分割的多个窗口中编辑多个文件。
vi -O filenames 在垂直分割的多个窗口中编辑多个文件。
ctrl+w 窗口切换
qall – 关闭所有窗口,退出vim。
:wall – 保存所有修改过的窗口。
:only – 只保留当前窗口,关闭其它窗口。
ctrl+w + –当前窗口增高一行。也可以用n增高n行。
ctrl+w - –当前窗口减小一行。也可以用n减小n行。
ctrl+w < –当前窗口减少一列。也可以用n减少n列。
ctrl+w > –当前窗口增宽一列。也可以用n增宽n列。
多标签编辑
vim -p files: 打开多个文件,每个文件占用一个标签页。
tabn – 切换到下一个标签。Control + PageDown,也可以。
:tabp – 切换到上一个标签。Control + PageUp,也可以。
七.撤销与重做
[n] u: 取消一(n)个改动。
:undo 3– 撤销3个改变。
:undolist – 你的撤销历史。
ctrl + r: 重做最后的改动。
U: 取消当前行中所有的改动。
:earlier 3m – 回到3分钟前
:later 5s – 前进5秒
八.文件加密
vim -x file: 开始编辑一个加密的文件。
:X – 为当前文件设置密码。
:set key= – 去除文件的密码
九.文件编码
:e ++enc=utf8 filename, 让vim用utf-8的编码打开这个文件。
:w ++enc=gbk,不管当前文件什么编码,把它转存成gbk编码。
:set fenc或:set fileencoding,查看当前文件的编码。
在vimrc中添加set fileencoding=ucs-bom,utf-8,cp936,vim会根据要打开的文件选择合适的编码。 注意:编码之间不要留空格。 cp936对应于gbk编码。 ucs-bom对应于windows下的文件格式。
。