本文是国外站点catswhocode上的一个翻译版本,虽然vim是一个老生常谈的东西了 。不过总结的很简练干脆,挺有意思,我还是将其摘了过来,供自己玩味和学习。

一、基础

1:e filename     在编辑器中打开一个文件
2:w              保存文件
3:q              退出vim
4:q!             退出但不保存
5:x              写文件(如果有做修改)并退出
6:sav filename   保存为
7.               在正常模式中重复执行上一个变更
85.              重复五次

二、移动

 1k or Up Arrow   上移一行
 2j or Down Arrow 下移一行
 3e               移动到单词末尾
 4b               移动到单词开头
 50               移动到行首
 6G               移动到文件末尾
 7gg              移动到文件开头
 8L               移动到屏幕底
 9:59             移动到59行
1020|             移动到第20列
11%               移动到匹配的括号
12[[              到函数头
13[{              到块开始位置

三、剪切,复制和粘贴

1y   拷贝选中部分到剪贴板
2p   粘贴剪贴板中内容
3dd  剪切当前行
4yy  拷贝当前行
5y$  拷贝到行尾
6D   剪切到行尾

四、搜索

 1/word           从开头到结尾搜索单词word
 2?word           从结尾到卡头
 3*               搜索光标下单词
 4/cstring       搜索string或STRING, 大小写不敏感
 5/jo[ha]n        搜索john 或 joan
 6/< the         搜索以the开头的,the, theatre 或 then
 7/the>          搜索以the结尾的,the 或 breathe
 8/< the>       搜索the
 9/< ¦.>        搜索所有含有四个字母的
10//             搜索fred 但不是alfred 或 frederick
11/fred|joe      搜索fred 或 joe
12/<dddd>   搜索仅有四个数字的
13/^n{3}        搜索连续3个空行的
14:bufdo /searchstr/  在所有打开buf中搜索
15bufdo %s/something/somethingelse/g  在所有打开buf中搜索并替换

五、替换

 1:%s/old/new/g           将所有出现的old替换为new
 2:%s/onward/forward/gi   将所有onward替换为forward,大小写不敏感
 3:%s/old/new/gc          替换前确认
 4:2,35s/old/new/g        将第2行到第35行之间的old替换为new
 5:5,$s/old/new/g         将第5行到文件结尾的old替换为new
 6:%s/^/hello/g           在每一行开头加入hello
 7:%s/$/Harry/g           在每一行结尾加入Harry
 8:%s/ *$//g              删除每行末尾无用空格
 9:g/string/d             删除所有包含string的行
10:v/string/d             删除所有不包含string的行
11:s/Bill/Steve/          替换当前行第一个Bill为Steve
12:s/Bill/Steve/g         替换当前行中所有Bill
13:%s/Bill/Steve/g        替换文件中所有Bill
14:%s/^M//g               删掉DOS保存文件中(^M)
15:%s/r/r/g             Transform DOS carriage returns in returns
16:%s#<[^>]+>##g         删除html标签但是保留文本
17:%s/^(.*)n1$/1/    删除所有连续出现过两次的行,保留一行
18Ctrl+a                  递增光标下的数字
19Ctrl+x                  递减光标下的数字
20ggVGg?                  文本转换为 Rot13

六、大小写

 1Vu                  整行小写
 2VU                  整行大写
 3g~~                 整行大小写反转
 4vEU                 单词转为大写
 5vE~                 单词大小写反转
 6ggguG               所有文本小写
 7gggUG               所有文本大写
 8:set ignorecase     搜索中忽略大小写
 9:set smartcase      搜索中忽略大小写,除非搜索词中存在大小写字母
10:%s/<./u&/g       将所有单词首字母大写
11:%s/<./l&/g       将所有单词首字母小写
12:%s/.*/u&          将每行第一个字母大写
13:%s/.*/l&          将每行第一个字母小写

七、读写文件

1:1,10 w outfile     1到10行内容写到outfile
2:1,10 w >> outfile  1到10行内容追加到outfile
3:r infile           插入文件内容
4:23r infile         插入文件23行的内容

八、文件浏览器

 1:e .                打开完整文件浏览器
 2:Sex                切分窗口,打开文件浏览器
 3:Sex!               同上,垂直切分
 4:browse e           图像化文件浏览器
 5:ls                 列出buffers
 6:cd ..              移到上一层目录
 7:args               列出文件
 8:args *.php         打开文件列表
 9:grep expression *.php  返回包含expression的php文件列表
10gf                  打开光标下文件名对应的文件

九、和Unix交互

1:!pwd               执行pwd命令,返回结果
2!!pwd               执行命令并插入结果到文件中
3:sh                 临时返回unix
4$exit               从unix中返回vim

十、对齐

1:%!fmt              所有行对齐
2!}fmt               当前位置所有行对齐
35!!fmt              后五行对齐

十一、Tabs和Windows

1:tabnew             创建一个新的tab
2gt                  展示下一个tab
3:tabfirst           展示第一个tab
4:tablast            展示最后一个tag
5:tabm n(position)   重排tab
6:tabdo %s/foo/bar/g 在所有tab中执行一个命令
7:tab ball           将所有打开文件放入tab中
8:new abc.txt        在新window中编辑abc.txt

十二、窗口分屏

 1:e filename         在当前窗口中编辑文件
 2:split filename     切分当前窗口并打开文件(缩写 :sp filename)
 3ctrl-w up arrow     移到上一个文件
 4ctrl-w ctrl-w       移到下一个窗口
 5ctrl-w_             当前窗口垂直最大化
 6ctrl-w|             当前窗口水平最大化
 7ctrl-w=             所有窗口等大小
 810 ctrl-w+          当前窗口增加10行
 9:vsplit file        竖直切分窗口
10:sview file         同:split, 只读模式
11:hide               关闭当前窗口
12:­nly               关闭出了当前窗口之外的所有窗口
13:b 2                打开2号窗口

十三、自动补全

1Ctrl+n Ctrl+p (插入模式)  补全单词
2Ctrl+x Ctrl+l           补全行
3:set dictionary=dict    定义dict为dictionnary
4Ctrl+x Ctrl+k           用字典中内容补全

十四、标签

1m {a-z}                 在当前位置做标签{a-z}
2' {a-z}                 移动到标签位置
3''                      移动到上一个位置

十五、缩写

1:ab mail mail@provider.org      定义mail 作为 mail@provider.org的缩写

十六、文本缩进

1:set autoindent         打开自动缩进
2:set smartindent        打开自动智能缩进
3:set shiftwidth=4       缩进设为4个空格
4ctrl-t, ctrl-d          插入模式中缩进/去缩进
5>>                      缩进
6<<                      去缩进
7=%                      缩进括号中的代码
81GVG=                   缩进整个文件

十七、语法高亮

1:syntax on              打开语法高亮
2:syntax off             关闭语法高亮
3:set syntax=perl        强制语法高亮