Vim模式
正常模式(按Esc)
编辑模式(正常模式下 按i或a)
可视模式(正常模式下 按v进入)
打开、关闭、保存
:e filename # 打开文件
:w # 保存文件
:q # 退出 Vim
:q! # 强制退出(不保存)
:sav filename # 另存为
. # 重复在正常模式下进行的最后更改
:split file # 在新窗口中打开文件
:bn # 切换到下一个文件
:bp # 切换到上一个文件
:args # 查看当前打开的文件列表,当前正在编辑的文件会用[]括起来
:e ftp://192.168.10.76/abc.txt # 打开远程文件,比如ftp
:open file # 在vim窗口中打开一个新文件
:split file # 在新窗口中打开文件
移动命令
h # 左移 (20h就是左移20个,10x就是删除10个字符)
l # 右移
k # 上移
j # 下移 (20j就是下移20行)
w # 向前移动一个单词(光标停在单词首部),如果已到行尾,则转至下一行行首。
b # 移动到当前行第一个,如果在第一个位子,则上移
e # 跟 b 刚好相反
0 # 移动到当前行第一个或者Home
L/G/[[ # 移到最后行第一个
gg/]] # 移到首行第一个
$ # 移动到行尾
# 跳到指定行,冒号+行号,回车,比如跳到240行就是 :240回车。另一个方法是行号+G,比如230G跳到230行
Ctrl + e # 向下滚动一行
Ctrl + y # 向上滚动一行
Ctrl + d # 向下滚动半屏
Ctrl + u # 向上滚动半屏
Ctrl + f # 向下滚动一屏
Ctrl + b # 向上滚动一屏
% #
编辑
i # 在当前位置生前插入
I # 在当前行首插入
a # 在当前位置后插入
A # 在当前行尾插入
o # 在当前行之后插入一行
O # 在当前行之前插入一行
复制、粘贴、剪切
yy # 拷贝当前行
nyy # 拷贝当前后开始的n行,比如2yy拷贝当前行及其下一行。
p # 在当前光标后粘贴,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。
shift+p # 在当前行前粘贴
:1,10 co 20 # 将1-10行插入到第20行之后。
:1,$ co $ # 将整个文件复制一份并添加到文件尾部。
ddp # 交换当前行和其下一行
xp # 交换当前字符和其后一个字符
替换
ra # 将当前字符替换为a,当期字符即光标所在字符。
s/old/new/ # 用old替换new,替换当前行的第一个匹配
s/old/new/g # 用old替换new,替换当前行的所有匹配
%s/old/new/ # 用old替换new,替换所有行的第一个匹配
%s/old/new/g # 用old替换new,替换整个文件的所有匹配
:10,20 s/^/ /g #在第10行知第20行每行前面加四个空格,用于缩进。
ddp # 交换光标所在行和其下紧邻的一行。
搜索
f # fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符
F # 与 f 相反
/text # 查找text,按n健查找下一个,按N健查找前一个。
?text # 查找text,反向查找,按n健查找下一个,按N健查找前一个。
###vim中有一些特殊字符在查找时需要转义 .*[]^%/?~$
:set ignorecase # 忽略大小写的查找
:set noignorecase # 不忽略大小写的查找
######如果一个词很长,可以将光标移动到该词上,按*或#键即可以该单词进行搜索,相当于/搜索。而#命令相当于?搜索。
:set hlsearch # 高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配。
:set nohlsearch # 关闭高亮搜索显示
:nohlsearch # 关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。
:set incsearch # 逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。
:set wrapscan # 重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。
撤销、反撤销
u # 撤销(Undo)
U # 撤销对整行的操作
Ctrl + r # 反撤销,即撤销的撤销