基本跳转:
hjkl:左下上右
HML:当前屏幕顶、中、底部
web:下一单词词首、下一单词词尾、前一单词词首
gg:文件首 G:文件末尾 ngg/nG:第n行
ta:移动到所在行之后第一个字符a前一字符
fa:移动到所在行之后第一个字符a处
Ta:移动到所在行之前最后一个字符a的后一个字符
Fa:移动到所在行之前最后一个字符a处
ctrl+F:下一页
ctrl+B:上一页
ctrl+D:下半页
ctrl+U:上半页
ctrl+E:下一行
ctrl+Y:上一行
^$0:行首、行尾、第一个字符
dt定位符:一直删除到该行的定位符处
ctrl+i:跳转到前面第x词光标所在位置
gg=G:重新缩进
shift+v行选模式:
i { :选中光标所在中括号之间所有内容,不包括中括号
a { :选中光标所在中括号之间所有内容,包括中括号
ib / i(:选中光标所在小括号之间所有内容,不包括小括号
ab / a(:选中光标所在小括号之间所有内容,包括小括号
v模式:
i {、(、<、[
i w:选中一个单词
i s:选中一个句子
i p:选中一个段落
文件跳转:
如果vim打开了多个文件,可以通过
:n 跳转到后一个文件
:n filename 跳转到filename
:prev 跳转到后一个文件
:first 跳转到第一个文件
:last 跳转到最后一个文件
:e anotherFile 新增一个编辑文件 :e#返回之前的文件
:bN 跳转到打开的第N个文件
多窗口:
1)横向切割窗口
:new name (保存口name为文件名)
:split name (sp name)
:[n] split(vsplit) [++opt] [+cmd] [file]
opt:vim命令选项
cmd:欲在新窗口中执行的命令
file:新窗口打开的文件
2)纵向切割窗口
:vsplit name (vsp name)
3)关闭多窗口
:q! 、 :close(暂时关闭窗口,其内容还存在缓存中)
:tabc 关闭当前窗口
:tabo 关闭所有窗口
4)窗口切换
ctrl + w + k/j/h/l 上下左右切换窗口
ctrl + w + w 依次切换窗口
ctrl + w + t:移动到最左上角的窗口
ctrl + w + b:移动到最右下角的窗口
5)窗口大小调整
ctrl + w + “+” 窗口纵向扩大
ctrl + w + "-" 窗口纵向缩小
:resize num (:res num)窗口显示num行
:resize +num (:res +num)窗口高度增加num行
:resize -num (:res -num)窗口高度减少num行
纵向调整:在resize前加vertical
6)窗口重命名
:f new_name
7)文件浏览
:Ex 开启目录浏览器
:Sex 水平切割窗口,并开启目录浏览器
8)vi与shell切换
:shell 不关闭vi的情况下切换到shell命令行
:exit 从shell回到vi
9)移动窗口
ctrl + w + r:向右或向下交换窗口位置
ctrl + w + R:向左或向上交换窗口位置
查找与替换
:s/str1/str2/ 将该行第一个str1替换为str2
:s/str1/str2/g 将该行所有str1替换为str2
:n,$s/str1/str2 将第n行到最后一行,每一行的第一个str1替换为str2 n换成.表示从当前行到最后一行
:n,$s/str1/str2/g 将第n行到最后一行,每一行的所有str1替换为str2 n换成.表示从当前行到最后一行
:%s/str1/str2 将每一行的第一个str1替换为str2
:%s/str1/str2/g 将每一行的所有str1替换为str2
如果替换字符中存在/可以用#作为替换命令分割符
续:http://www.2cto.com/os/201309/242189.html