Vim命令浩如烟云,我们很难精通所有命令,在实际工作中我们常用的命令也就那么几十个。文本整理了工作中常用的vim命令,掌握了以下命令就基本满足我们工作需要。
我们经常使用vim file 命令打开一个文件,同时我们也可以使用vim file1 file2 file3 ...打开多个文件。
如果我们已经打开了某个文件file1,使用 :open file2 在新窗口中打开其他文件。这个时候我们只是看得到file2,使用 :split file1 命令可以分割当前窗口显示file1。
:bn 切换到下一个文件
:bp 切换到上一个文件
:args 查看当前打开的文件列表,正在编辑的会用方括号扩起来。
上面提到使用split用新窗口打开文件,但是窗口都是横向的,使用vsplit可以纵向打开窗口。
使用crtl+ww 移动光标到下一个窗口
使用crtl+wj 移动光标到下方窗口
使用trl+wk 移动光标到上方窗口
使用 :close 关闭窗口,为防止误操作,最后一个窗口不能使用这个命令关闭。
使用 ZZ (注意是大写的)保存并关闭除当前窗口外的所有其他窗口。
在窗口中我们可以使用一些命令来辅助我们进行一些操作
命令格式: :!command
例如:
:!pwd 查看当前文件路径
:!ls -al 查看当前路径下的文件
:!php file.php 执行某个php脚本
:suspend或ctr+Z(注意是大写的)可以挂起vim,使用fg可以返回到vim。
PHP代码使用//注释代码,在vim中可以快速注释某些行。
:20,40 s/^/\/\/ 注释20到40行
:20,40 s/^\/\/ 取消20到40行的注释
:1,$ s/^/\/\/ 注释整个文档
:1,$ s/^\/\/ 取消整个文档的注释
:% s/^/\/\/ 注释整个文档
:% s/^\/\/ 取消整个文档的注释
i 在当前位置前插入
a 在当前位置后插入
I 在当前行首插入
A 在当前行尾插入
o 在当前行的下一行插入新行
O 在当前行的上一行插入新行
/text 查找text字符串,按n键查找下一个,按N查找上一个
?text 反向查找text字符串,按n键查找下一个,按N查找上一个
关于搜索的一些设置:
:set ignorecase 设置忽略大小写
:set noignorecase 设置不忽略大小写
如果某个词太长,不便拼写,可将光标移到这个词上,然后按*或#可以对该词进行搜索,相当于/text搜索
:set hlsearch 高亮搜索结果,所有匹配的字符都高亮
:set nohlsearch 关闭高亮显示
:nohlsearch 关闭当前高亮显示,如果重新搜索或按n或N键则会在此高亮
:set incsearch 逐步所搜模式,对当前输入的字符进行搜索,而不必等字符输完
:set wrapscan 重新搜索,在搜索到文件头和文件尾时自动返回继续搜索,默认开启
u 撤销
U 撤销对正航的的操作
ctr+r 重做。
ra 把当前光标所在字符替换成a。
:s/old/new/ 把当前所在行中第一个匹配的old字符串用new字符串替换
:s/old/new/g 把当前所在行中所有匹配old的字符串替换成new
:%s/old/new/ 用new替换old,替换所有行中第一个匹配的字符串
:%s/old/new/g 用new替换old,替换文本中所有满足的字符串
:10,20 s/^/ /g 在第10行到20行每行行首加四个空格。
ddp 交换光标所在行和其下紧邻的一行。
h 向左移动一个字符
l 向右移动一个字符
j 向下移动一行
k 向上移动一行
个人觉得使用h、l、j、k还不如直接使用四个方向键更直接些。
在vim中很多命令可以结合数字使用,比如20h表示向左移动20个字符,
w 向后移动一个单词
b 向前移动一个单词
e 同w,只不过光标停留在单词尾部
^ 移动到本行行首非空白字符上
0(数字0) 移动到本行行首第一个字符上
$ 移动到本行行尾,3$移动到下面3行行尾
gg 移动到文件头部
G 移动到文件尾部
:50 移动到第50行
ctrl+e 向下滚动一行
ctrl+y 向上滚动一行
ctrl+d 向下滚动半屏
ctrl+u 向上滚动半屏
ctrl+f 向下滚动一屏
ctrl+b 向上滚动一屏
x 删除当前字符,等同dl,3x删除当前位置起的三个字符
X 删除当前字符的前一个字符,等同dh
dd 删除当前行
dj 删除上一行
dk 删除下一行
10d 删除当前行开始的10行
D 删除当前位置至行尾,等同d$
kdgg 删除当前之前的所有行,不包括当前行
jdG 删除当前行后的所有行,不包括当前行
:1,10d 删除1~10行
:11,$ 删除11行及以后的所有行
:1,$ 删除文档中的所有行,等同于dG
J 删除两行之间的空行
yy 复制当前行
3yy 拷贝当前行开始的3行,nyy表示从当前行开始拷贝n行(包括当前行)
p 在当前光标之后粘贴,如果拷贝的行就在当前行的下一行开始粘贴
P 在当前行前一行粘贴
:1,20 co 30 把第一行到20行插入到第30行后
:1,$ co $ 把文件复制一份并追加到末尾
进入视图模式移动光标即可选中文本,按p键复制选中的文本
xp 交换当前字符和其后的一个字符
进入视图模式移动光标即可选中文本,按d键剪切选中的文本
3dd 从当前行开始剪切3行
:1,10d 剪切1到10行
:1,10 m 20 将1到10行移到20行后
:wq 保存并退出
:x 保存并退出
:q! 强制退出并放弃所有修改
:e! 放弃所有修改并重新打开文件
本文参考:http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html