翻译自 100 Vim commands every programmer should know
类 型 | 序 号 | 命 令 | 释 义 |
---|---|---|---|
基 本 | 1 | :e 文件名 | 打开文件进行编辑 |
2 | :w | 保存文件 | |
3 | :q | 退出vim | |
4 | :q! | 不保存文件退出vim | |
搜 索 | 5 | /word | 从开始处到结尾处搜索字符串 |
6 | ?word | 从结尾处到开始处搜索字符串 | |
7 | /jo[ha]n | 搜索john或者joan | |
8 | /\<the | 搜索the、theatre或者then,匹配以the开始的字符串 | |
9 | /the\> | 搜索the或者breathe,匹配以the结尾的字符串 | |
10 | /\<the\> | 搜索the,只匹配the | |
11 | /\<\w\{4}\> | 匹配所有四个字母的单词 | |
12 | /\<fred\>/ | 匹配fred但是不匹配alfred或者frederick | |
13 | /fred\|joe | 匹配fred或者joe | |
14 | /\<\d\d\d\d\> | 匹配四个数字 | |
15 | /^\n\{3} | 匹配连续的三个空行 | |
16 | :bufdo /正则表达式/ | 在所有打开的文件中搜索 | |
替 换 | 17 | :%s/old/new/g | 把文件中所有匹配old的地方替换成new |
18 | :%s/old/new/gc | 把文件中所有匹配old的地方替换成new,替换前提示确认 | |
19 | :2,35s/old/new/g | 把文件从第2行到第35行中所有匹配old的地方替换成new | |
20 | :5,$s/old/new/g | 把文件从第5行到文件结束符中所有匹配old的地方替换成new | |
21 | :%s/^/hello/g | 把每一行的开始位置替换为Hello | |
22 | :%s/$/Harry/g | 把每一行的结束位置替换为Harry | |
23 | :%s/onward/forward/gi | 替换onward为forward,大小写不敏感 | |
24 | :%s/ *$//g | 替换所有行末的空格为空字符串 | |
25 | :g/string/d | 删除所有匹配正则表达式string的行 | |
26 | :v/string/d | 删除所有不匹配正则表达式string的行 | |
27 | :s/Bill/Steve/ | 把当前行中的Bill替换为Steve | |
28 | :s/Bill/Steve/g | 把所有行中的Bill替换为Steve | |
29 | :%s/Bill/Steve/g | 把所有文件中的Bill替换为Steve | |
30 | :s/\r//g | 替换dos换行符为空字符串 | |
31 | :s/\r/\n/g | 替换dos换行符为回车 | |
32 | :%s#<[^>]\+>##g | 删除所有的html标签,保留其中的内容 | |
33 | :%s/^\(.*\)\n\1$/\1/ | 替换所有连续出现两次的行为一行 | |
34 | Ctrl+a | 把光标下的数字自增1 | |
35 | Ctrl+x | 把光标下的数字自减1 | |
36 | ggVGg? | 对全文使用ROT13加密,关于ROT13,参考 ROT13_WIKI | |
大小写 | 37 | Vu | 选择一行,使其字母变为小写 |
38 | VU | 选择一行,使其字母变为大写 | |
39 | g~~ | 反转字母的大小写 | |
40 | veU | 选择一个单词,将其变为大写 | |
41 | ve~ | 选择一个单词,将其变为小写 | |
42 | ggguG | 把所有文本变为小写 | |
43 | :set ignorecase | 搜索的时候忽略大小写 | |
44 | :set smartcase | 如果模式串中没有大写字母,则搜索的时候忽略大小写 | |
45 | :%s/\<./\u&/g | 将每个单词的第一个字母转为大写 | |
46 | :%s/\<./\l&/g | 将每个单词的第一个字母转为小写 | |
47 | :%s/.*/\u& | 将每行的第一个字母转为大写 | |
48 | :%s/.*/\l& | 将每行的第一个字母转为小写 | |
读写文件 | 49 | :1,10 w outfile | 把1到10行保存到outfile中 |
50 | :1,10 w >> outfile | 把1到10行追加到outfile中 | |
51 | :r infile | 插入infile的内容 | |
52 | :23r infile | 插入infile中23行以后的内容 | |
文件浏览 | 53 | e:. | 打开内置的文件浏览器 |
54 | :Sex | 分割窗口,并打开内置的文件浏览器 | |
55 | :browse e | 打开图形化的文件浏览器 | |
56 | :ls | 列出缓冲区的内容 | |
57 | :cd.. | 到父目录 | |
58 | :args | 列出参数列表,当前文件会用方括号标注 | |
59 | :args *.php | 将当前目录下所有后缀是php的文件加入参数列表,并打开其中的第一个 | |
60 | :grep expression *.php | 返回所有包含expression的php文件列表 | |
61 | gf | 打开当前光标下的文件 | |
与Unix系统交互 | 62 | :!pwd | 执行unix命令pwd,然后返回到vi中 |
63 | :!!pwd | 执行unix命令pwd,并将结果插入到文件中 | |
64 | :sh | 暂时回到unix | |
65 | $exit | 返回vi | |
对 齐 | 66 | :%!fmt | 对齐所有行 |
67 | !}fmt | 对齐当前位置的所有行 | |
68 | 5!!fmt | 对齐下面5行 | |
标 签 | 69 | :tabnew | 新建标签 |
70 | gt | 切换到下一个标签 | |
71 | :tabfirst | 切换到第一个标签 | |
72 | :tablast | 切换到最后一个标签 | |
73 | :tabm n(位置) | 重新排列标签 | |
74 | tabdo %s/foo/bar/g | 在每一个标签中执行命令 | |
75 | :tab ball | 把所有打开的文件放入标签 | |
分割窗口 | 76 | :e filename | 在当前窗口中编辑文件 |
77 | :split filename | 分割窗口并打开文件 | |
78 | ctrl-w up arrow | 将光标移到顶部的窗口 | |
79 | ctrl-w ctrl-w | 将光标移动到下一个窗口 | |
80 | ctrl_ | 最大化当前窗口 | |
81 | ctrl-w= | 将所有的窗口设置为同样的大小 | |
82 | 10ctrl-w+ | 在当前窗口中增加10行 | |
83 | :vsplit file | 垂直分割窗口 | |
84 | :sview file | 功能与只读模式下的:split命令一样 | |
85 | :hide | 关闭当前窗口 | |
86 | :nly | 关闭除当前窗口以外的所有窗口 | |
87 | :b 2 | 在当前窗口中打开第二个缓冲区的内容,具体描述请见:help b: | |
自动补全 | 88 | ctrl-n ctrl-p(插入模式下) | 补全单词 |
89 | ctrl-x ctrl-l | 补全整行 | |
90 | :set dictionary=dict | 定义dict为dictionary | |
91 | ctrl+x ctrl+k | 使用字典进行补全 | |
标 记 | 92 | mk | 将当前位置标记为k |
93 | ~k | 将光标移动至标记k | |
94 | dk | 删除至标记k | |
缩 写 | 95 | :ab mail mail@provider.org | 定义mail为mail@provider.org的缩写 |
文本缩进 | 96 | :set autoindent | 打开自动缩进 |
97 | :set smartindent | 打开智能缩进 | |
98 | :set shiftwidth=4 | 定义缩进的宽度为四个空格 | |
99 | ctrl-t,ctrl-d | 插入模式下缩进/反向缩进 | |
100 | >> | 缩进 | |
101 | << | 反向缩进 | |
语法高亮 | 102 | :syntax on | 打开语法高亮 |
103 | :syntax off | 关闭语法高亮k | |
104 | :set syntax=perl | 强制打开语法高亮 |