| 移动 |
|
| h |
光标左移一个字符 |
| j |
光标下移一行 |
| k |
光标上移一行 |
| l |
光标右移一个字符 |
| ^ |
移动到本行的第一个非空格字符 |
| 0 |
移动到行首 |
| $ |
移动到行尾 |
| % |
在匹配的括号上移动 |
| number% |
移到按百分比计算的行上 |
| number| |
移动到本行的第 n 列 |
| H |
移动到屏幕顶端 |
| M |
移动到屏幕中间 |
| L |
移动到屏幕底端 |
| numberH |
移动到屏幕顶端往下的第 n 行 |
| numberL |
移动到屏幕底端往上的第 n 行 |
| w |
向后移动一个单词或符号 |
| W |
向后移动一个单词 |
| b |
向前移动一个单词或符号 |
| B |
向前移动一个单词 |
| e |
移动到单词末尾 |
| E |
移动到单词末尾(忽略标点符号) |
| G |
移动到文件末尾 |
| gg |
移动到文件开头 |
| Ctrl+End |
移动到文件末尾 |
| Ctrl+Home |
移动到文件开头 |
| [Enter] |
移动到下一行的第一个字符 |
| + |
下一行的第一个字符 |
| - |
上一行的第一个字符 |
| numberG |
移动到指定的行 |
| numbergo |
移到指定的字节 |
| `` |
回到执行 G 命令或搜索命令之前的位置 |
| '' |
回到执行 G 命令或搜索命令之前行的行首 |
| numberh/j/k/l/w/W/b/B |
按指定的次数重复移动光标 |
| ( |
移动到本句(以句号 ., ?, ! 标识)的开头 |
| ) |
移动到下一句的开头 |
| { |
移动到本段的开头(用空行区分, 或是 troff 的段落宏) |
| } |
移动到下一段的开头 |
| [[ |
移动到本节的开头(troff 的节宏) |
| ]] |
移动到下一节的开头 |
| Ctrl+] |
跳转到光标所在标识符的定义上, 等价于 :tag tagname 命令 |
| Ctrl+T |
回到标签跳转之前的位置上, 等价于 :pop 命令 |
| Ctrl+F |
向前滚动一屏 |
| Ctrl+B |
向后滚动一屏 |
| Ctrl+D |
向前滚动半屏 |
| Ctrl+U |
向后滚动半屏 |
| Ctrl+E |
向前滚动一行 |
| Ctrl+Y |
向后滚动一行 |
| Ctrl+O |
回到上一次的位置 |
| Ctrl+I |
回到较新的位置 |
| z [Enter] |
滚动屏幕让光标行在屏幕顶端 |
| z. |
滚动屏幕让光标行在屏幕中间 |
| z- |
滚动屏幕让光标行在屏幕底端 |
| numberz[Enter]/z./z- |
光标移动到指定的行, 并将该行滚动到特定位置 |
| Ctrl+L |
重绘屏幕 |
| Ctrl+G |
在屏幕底端显示当前位置等信息 |
| Ctrl+D |
显示自动补全列表, 按 TAB 切换 |
|
|
|
|
| 编辑 |
|
| i |
插入, 在光标位置插入文本 |
| a |
添加, 在光标后面插入文本 |
| I |
在一行的开始插入文本 |
| A |
在一行的末尾插入文本 |
| numberi/a/I/Atext [ESC] |
将插入的文本重复指定的次数 |
| o |
在光标位置的下一行插入新行 |
| O |
在光标位置的上一行插入新行 |
| s |
删除光标位置字符后再插入文本 |
| numbers |
删除 n 个字符后进入插入模式 |
| S |
删除整行后进入插入模式 |
| numberS |
删除多行后进入插入模式 |
| c光标命令 |
删除从当前光标位置到光标移动命令后光标位置之间的文本后进入插入模式 |
| cw |
删除从光标到单词结尾后进入插入模式 |
| cc |
删除整行后进入插入模式 |
| C |
等价于 c$, 删除光标到行尾的文本后进入插入模式 |
| d光标命令 |
剪切文本 |
| dw |
剪切到单词末尾, 包含空格 |
| de |
剪切到单词末尾, 不包括空格 |
| dl |
剪切一个字符 |
| dd |
剪切整行 |
| D |
等价于 d$, 剪切到行尾 |
| x |
剪切光标后的一个字符 |
| X |
剪切光标前的一个字符 |
| y光标命令 |
拷贝文本 |
| yy |
拷贝整行 |
| Y |
拷贝整行 |
| v |
进入可视模式, 移动光标可以高亮选择, 完成选择后可执行 y, d 等操作命令, 也可以执行 ex 命令. 任何需要范围的命令都可以通过可视模式指定的范围来工作. 可视模式下可以使用一些额外的命令: |
| numberaw/aW |
选择指定的单词数量. w 将标点符号当做单词分割, W 只将空格当做单词分割. |
| numberiw/iW |
同上, 但是将标点符号或空格也视为一个单词. |
| as, is |
增加一个句子, is 不包含空格 |
| ap, ip |
增加一个段落, is 不包含空行 |
| Ctrl+v |
进入块可视模式(矩形选择) |
| p |
粘贴 |
| P |
将内容粘贴到光标前 |
| r |
替换一个字符, 完成后返回命令模式 |
| R |
进入覆盖模式 |
| ~ |
更改光标位置字符的大小写 |
| J |
将两行文本合并到一行 |
| u |
撤销上一个命令 |
| U |
恢复整行到最开始的样子 |
| Ctrl+R |
恢复一个被撤销的命令 |
| . |
重复执行上一次的命令 |
| ZZ |
保存结果并退出 |
| "1~9p |
粘贴最近第 n 次剪切的内容 |
| "1pu.u.u.u ... |
依次粘贴缓冲区的内容并删除 |
| "a-zy/d光标命令 |
将复制/剪切的内容放到命名缓冲区中, 缓冲区的名字只能是 a 到 z 的一个字符 |
| "A-Zy/d光标命令 |
将复制/剪切的内容追加到命名缓冲区中 |
| "a-zp |
粘贴命名缓冲区的内容 |
| :n1,n2ya a-z |
复制 n1 到 n2 的行到命名缓冲中 |
| :pu a-z |
将命名缓冲的内容放置到当前行的下一行 |
| "1~9, "a-z, "+, "* |
代表了 vim 中的寄存器, 其中 "+ 表示系统的剪切板, "* 表示系统的当前选择区(Win下和+相同) |
| "+y |
复制到系统剪切板 |
| "+p |
从系统剪切板中粘贴 |
| :reg |
查看所有寄存器的内容 |
|
|
|
|
| xp |
交换两个字符 |
| mchar |
在当前位置添加标记 |
| 'char |
移到标记行的第一个字符 |
| `char |
移到标记字符 |
| :mark char |
同 m |
| :marks |
列出所有的标记 |
| @a-z |
将命名缓冲区的内容作为命令序列来解释 |
| :@a-z |
同上 |
|
|
|
|
| fchar |
在本行中搜索字符, 将光标移到下一个出现该字符的地方 |
| Fchar |
行内搜索, 将光标移到上一个出现该字符的地方 |
| tchar |
行内搜索, 将光标移到下一个出现该字符的前一个字符的地方 |
| tchar |
行内搜索, 将光标移到上一个出现该字符的前一个字符的地方 |
| ; |
重复上一个行内搜索,方向相同 |
| , |
重复上一个行内搜索,方向相反 |
|
|
|
|
| 设置 |
|
| :set all |
显示所有设置选项的值 |
| :set option? |
显示设置选项当前的值 |
| :set ic/noic |
搜索是忽略/不忽略大小写 |
| :set nu/nonu |
显示/隐藏行编号, nu=number |
| :set autoindent |
自动缩进, 设置后, 在插入模式下可以在一行的开头使用: |
| Ctrl+T |
增加一层缩进 |
| Ctrl+D |
减少一层缩进 |
| ^ Ctrl+D |
当前行缩进为 0 |
| 0 Ctrl+D |
当前行和之后的行缩进都改为 0 |
| :set smartindent |
比 autoindent 更为智能的自动缩进 |
| :set cindent |
能理解 C 语言语法的自动缩进 |
| :set cinkeys=keys |
定义减少一层缩进的关键字 |
| :set cinoptions=style |
定义自动缩进的样式 |
| :set cinwords=words |
定义在下一行增加一层缩进的关键字 |
| :set indentexpr=expr |
自定义表达式的自动缩进 |
| :set paste |
关闭所有的自动功能, 比如粘贴文本前取消自动缩进等 |
| :set nopaste |
恢复 paste 关闭的功能 |
| >> |
将当前行往右移动一个缩进 |
| << |
将当前行往左移动一个缩进 |
| number>> |
将 number 行一起往右移动一个缩进 |
| number<< |
将 number 行一起往左移动一个缩进 |
| :set shiftwidth=4 |
设置缩进的宽度(>>, << 命令移动的字符个数) |
| :set ts=4 |
设置 tab 在屏幕上的宽度为 4, ts=tabstop |
| :set softtabstop=4 |
编辑模式按退格键退回缩进的长度 |
| :set expandtab |
用空格来替换 tab |
| :set list |
在屏幕上标记出 tab 和换行字符 |
| :set showmatch |
开启后, 输入闭括号是会自动指示对应的开括号, 不匹配则报警 |
| :set nowrapscan |
搜索的时候不回绕 |
| :set wm=number |
设置右边界, wm = wrapmargin |
| :set incsearch |
开启增量搜索 |
| :set showmode |
显示当前的模式 |
| :set laststatus=0/1/2 |
状态栏显示, 设置为 2 则多窗口是为每个窗口显示状态栏 |
| :set equalalways |
平均的分割窗口 |
| :set eadirection=hor/ver/both |
平均分割窗口的方向 |
| :set winheight/winwidth=number |
活动窗口的最小高度和宽度 |
| :set winminheight/winminwidth=number |
窗口的最小高度和宽度 |
| :set cmdheight=number |
命令行的高度 |
| :set mouse=a |
在所有模式下启用鼠标功能, 其他选项包括: |
| n |
命令模式 |
| v |
可视模式 |
| i |
插入模式 |
| c |
命令行模式 |
| h |
编辑帮助文件的所有模式 |
| r |
双击链接跳转 |
| :set statusline=fmtstr |
设置状态栏显示的内容, 可使用 %{Fun()} 来调用自定义函数. 其余格式参考 :help statusline |
| :set filetype=type |
设置文件的类型 |
| :filetype detect |
自动检测文件的类型 |
| :filetype indent off |
关闭文件的自动缩进功能 |
| :set backup |
创建备份文件, 并删除之前的备份 |
| :set writebackup |
只创建备份, 不删除之前的备份 |
| :set backupdir |
创建备份文件的目录 |
| :set backupext |
创建的备份文件扩展名 |
| :set backupskip |
匹配模式的文件不创建备份 |
| :set backupcopy |
创建备份文件的方式 |
| :set viminfo |
vim 保存会话的限度 |
| :set nowrap |
当行过长后不进行绕排 |
|
|
|
|
| ex命令 |
|
| :version |
显示 vi 的版本号 |
| :help |
显示帮助画面 |
| :number |
跳到指定的行 |
| :go number |
调到指定的字节 |
| :number1,number2d/delete |
删除第 number1 到 number2 行 |
| :n1,n2m/move/co/copy/tn3 |
移动/拷贝 n1 至 n2 的行到 n3 行之后 |
| :n1,n2# |
临时显示 n1 到 n2 行的内容, 行号除了可以使用数字还可以使用: |
| . |
当前行 |
| $ |
最后一行 |
| % |
文件中的每一行 |
| +n |
当前行往后第 n 行 |
| -n |
当前行往前第 n 行 |
| + |
等价于 +1 |
| - |
等价于 -1 |
| 0 |
文件的开头, 第一行之前 |
| /pattern/ |
下一个包含 pattern 的行 |
| :n1;+/-number# |
用分号代替逗号可以让 +/- 的当前行指定为 n1, 而不是光标所在行 |
| := |
显示文件总行数 |
| :.= |
显示当前所在行的行号 |
| :l |
显示指定行中的 tab 和换行符 |
| :/pattern/= |
列出 pattern 第一次出现的行号 |
| :w |
保存文件 |
| :q |
退出 |
| :qa |
打开了多个窗口时退出所有窗口 |
| :wq |
保存并退出(和 ZZ 相同) |
| :w! |
强制保存,即使文件是以只读方式打开的 |
| :q! |
强制退出,即使有修改没保存也丢弃修改退出 |
| :w filepath |
保存为指定的文件 |
| :n1,n2w filepath |
将指定的行保存到文件中 |
| :n1,n2w >> filepath |
将指定的行追加到文件中 |
| :w %.bak |
保存为当前文件名加上 .bak 后缀 |
| :r filepath |
将文件内容插入到光标所在位置 |
| :numberr filepath |
将文件内容插入到指定的行 |
| :x |
保存并退出(只有文件有修改才会写入) |
| :so filepath |
读入 vi 脚本并执行 |
| /pattern |
往下搜索 |
| ?pattern |
往回搜索 |
| /[Enter] |
往下重复搜索 |
| ?[Enter] |
往回重复搜索 |
| n |
在上一次搜索方向继续搜索 |
| N |
与上一次搜索方向相反的方向继续搜索 |
| :s/pattern/repstr |
将当前行中第一个出现的 pattern 替换为 repstr, 如果 pattern 中包含 /, 可用其他字母, 数字, \, ", |, 空格以外的任何字符代替 / 作为分隔符. |
| :s/pattern/repstr/g |
将当前行中的每一个 pattern 都替换为 repstr |
| :n1,n2s/pattern/repstr/g |
在指定的行中进行替换 |
| :%s/pattern/repstr/g |
在文件中的每一行进行替换 |
| :%s/pattern/repstr/gc |
在每次替换前进行确认 |
| :s |
等价于 :s//~/, 重复上一次替换 |
| :& |
重复上一次替换 |
| & |
等价于 :&, 重复上一次替换 |
| :%&g |
在所有地方重复上一次替换 |
| :~ |
重复上一次替换, 如果上次替换后有搜索命令, 则替换的搜索表达式为上一次搜索命令的表达式 |
| :g/pattern1/s/pattern2/repstr/g |
将满足 pattern1 的行中的 pattern2 替换成 repstr |
| :g/pattern |
显示所有包含 pattern 的行 |
| :g/pattern/nu |
显示所有包含 pattern 的行, 并且显示行号 |
| :n1,n2g/pattern/p |
在 n1 到 n2 之间搜索 pattern, 并显示包含的行 |
| :g!/pattern |
显示不包含 pattern 的行 |
| :noh |
取消上次搜索字符的高亮显示 |
| :cmd1 | cmd2 ... |
合并执行多个 ex 命令 |
| :!cmd |
执行 Shell 命令 |
| :r !cmd |
将 Shell 命令的结果插入当前位置 |
| :n1,n2!cmd |
将指定的行传入 shell 命令作为输入, 并用输出替换文本 |
| !光标移动命令cmd |
将光标移动范围内的文本传入 shell 作为输入, 并用输出替换文本 |
| !!cmd |
对当前行进行上面的操作 |
| :!ctags *.c |
调用 ctags 程序生成包含文件中函数信息的 tags 文件 |
| :tag name |
利用 tags 文件查找 name 函数所在文件, 并自动打开, 跳转到函数上. |
| :stag name |
用分割窗口来打开文件 |
| :pop |
回到标签跳转之前的位置 |
| :tags |
显示标签跳转栈的内容 |
| :ts |
列出匹配的标签, 等价于 tselect |
| :sts |
在分割窗口中列出匹配的标签, 等价于 stselect |
| :tn |
跳到下一个匹配的标签, tnext |
| :0tn |
可以显示上次的跳转情况, 不进行新的跳转 |
| :tp |
跳到上一个匹配的标签, tprevious |
| :tl |
跳到上一个匹配的标签, tlast |
| :tr |
跳到第一个匹配的标签, trewind |
| :set tl=n |
设置标签中有效字符数量, 默认为 0 表示不限制, taglength |
| :set tags=pathlist |
设置搜索 tag 文件的路径 |
| :set tagrelative |
tag 文件中的路径为相对于 tag 文件自己的相对路径 |
|
|
|
|
| :n |
打开多个文件时用于切换到下一个文件, n = next |
| :prev |
切换到上一个文件 |
| :last |
切换到最后一个文件 |
| :rew |
切换到第一个文件 rew = rewind |
| :ar |
显示命令行上列出的文件列表, 当前编辑的用 [] 括起, ar = args |
| :e filepath |
切换到另一个文件进行编辑 |
| :e# |
切换到候补文件进行编辑 (% 代表当前文件, # 代表候补文件) |
| Ctrl+^ |
等价于 :e# |
| :e! |
丢弃修改,恢复当前文件存储的内容 |
|
|
|
|
| :colo/:colorscheme |
显示当前的配色方案 |
| :!ls $VIMRUNTIME/colors/ |
显示可以使用的配色方案 |
| :colo name |
使用指定的配色方案 |
|
|
|
|
| 窗口 |
|
| Ctrl+Ws |
分割屏幕 |
| Ctrl+Wv |
垂直分割屏幕 |
| :split filename |
在分割窗口中打开文件, 省略文件名则打开当前缓冲区 |
| :vsplit filename |
在垂直分割的窗口中打开 |
| :nsplit ++opt +cmd filename |
n 指定新窗口的行数, opt 为传给新窗口的选项 cmd 为在新窗口中执行的命令 |
| :nnew ++opt +cmd filename |
除了分割窗口, 还执行自动命令 WinLeave, WinEnter, BufLeave, BufEnter |
| :nvsplit/vnew ++opt +cmd filename |
|
| Ctrl+Wj |
移动到下面一个窗口 |
| Ctrl+Wk |
移动到上面一个窗口 |
| Ctrl+Wh |
移动到左边一个窗口 |
| Ctrl+Wl |
移动到右边一个窗口 |
| Ctrl+Ww |
移动到下边或右边的一个窗口, 到达边界后会循环 |
| Ctrl+Wt |
移动到最左上角的窗口 |
| Ctrl+Wb |
移动到最右下角的窗口 |
| Ctrl+Wp |
移动到前一个窗口 |
| Ctrl+Wr |
向右或向下轮换一个窗口 |
| Ctrl+WR |
向左或向上轮换一个窗口 |
| Ctrl+Wx |
和附近的窗口交换位置 |
| nCtrl+Wx |
和第 n 个窗口交换位置 |
| Ctrl+WK |
将当前窗口移动到屏幕顶端, 并使用全部宽度 |
| Ctrl+WJ |
将当前窗口移动到屏幕底端, 并使用全部宽度 |
| Ctrl+WH |
将当前窗口移动到屏幕左端, 并使用全部高度 |
| Ctrl+WL |
将当前窗口移动到屏幕右端, 并使用全部高度 |
| Ctrl+WT |
移动当前窗口至新的分页 |
| Ctrl+W= |
调整所有窗口大小使其尽量相等 |
| Ctrl+W+ |
当前窗口增加一行 |
| Ctrl+W- |
当前窗口减少一行 |
| Ctrl+W> |
当前窗口增加一列 |
| Ctrl+W< |
当前窗口减少一列 |
| Ctrl+Wg] |
分割窗口来执行 :tselect tag 命令, tag 为当前窗口光标位置的标签 |
| Ctrl+Wg Ctrl+] |
同上, 不过执行的是 :tjump 命令 |
| Ctrl+Wf |
分割窗口, 编辑光标位置的文件名 |
| Ctrl+WF |
分割窗口, 编辑光标位置的文件名, 并调到文件名后制定的行上 |
| Ctrl+Wgf |
在新的分页中打开光标位置的文件名, 文件不存在则不会创建新的分页 |
| Ctrl+WgF |
在新的分页中打开光标位置的文件名并调到后面制定的行上, 文件不存在则不创建分页 |
| Ctrl+Wq |
离开当前窗口 |
| :quit |
离开当前窗口 |
| Ctrl+Wc |
关闭当前窗口, 如果窗口是分页中最后一个窗口, 也会关闭分页 |
| :close |
和 Ctrl+Wc 相同. 加上 ! 可忽略修改强制关闭 |
| Ctrl+Wo |
关闭当前窗口以外的所有窗口 |
| :only |
关闭当前窗口外的所有窗口 |
| :hide |
关闭当前窗口, 隐藏缓冲区 |
| :resize n |
将当前窗口设置为 n 行 |
| :resize +n |
当前窗口增加 n 行 |
| :resize -n |
当前窗口减少 n 行 |
| :vertical resize n |
将当前窗口设置为 n 列 |
| :vertical resize +/-n |
当前窗口增加/减少 n 列 |
| windo cmd |
在每一个窗口中执行 cmd 命令 |
| :tabnew filename |
在新的分页中打开文件 |
| :tabclose |
关闭当前分页 |
| :tabonly |
关闭其他所有的分页 |
| Ctrl+PageUp/Ctrl+PageDown |
切换分页 |
| :Ctrl+F |
打开最近输入的命令窗口 |
|
|
|
|
| 缓冲区 |
|
| :ls/:files/:buffers |
列出缓冲区 |
| :ls!/:files!/:buffers! |
额外的缓冲区也一起列出, 其中数字编号后的状态吗含义如下: |
| u |
隐藏缓冲区, 只有使用带 ! 的命令才会列出 |
| % |
当前窗口所使用的缓冲区 |
| # |
后备缓冲区, 使用 :edit # 后切换的缓冲区 |
| a |
活动缓冲区, 可以在窗口中查看的 |
| h |
不能在任何窗口中查看的缓冲区 |
| - |
关闭了 modifiable 选项的只读缓冲区 |
| = |
没有写权限的只读缓冲区 |
| + |
可修改的缓冲区 |
| x |
该缓冲区具有读入错误 |
| bufdo cmd |
对每一个缓冲区执行 cmd 命令 |
| :ball/:sball |
编辑所有参数或缓冲区, 带 s 的命令会在新窗口中打开, 下同. |
| :unhide/:sunhide |
编辑所有载入的缓冲区 |
| :buffer n/:sbuffer n |
打开第 n 个缓冲区 |
| :bnext n/:sbnext n |
打开往后的第 n 个缓冲区 |
| :bNext n/:sbNext n |
打开往后的第 n 个缓冲区, 到结尾后回绕到开头 |
| :bprevious n/:sbprevious n |
打开前面第 n 个缓冲区 |
| :bfirst/sbfirst |
打开第一个缓冲区 |
| :blast/sblast |
打开最后一个缓冲区 |
| :bmod n/:sbmod n |
打开第 n 个修改过的缓冲区 |
| :badd filepath |
把文件加入缓冲区列表 |
| :bunload |
从内存中卸载缓冲区, 加上 ! 可忽略修改 |
| :bdelete |
卸载缓冲区, 并从列表中删除, 加上 ! 可忽略修改 |
|
|
|
|
| 折叠 |
单行操作命令在折叠的行上执行时会对所有折叠内容生效 |
| :mkview |
保存当前的折叠信息 |
| :loadview |
加载保存的折叠信息 |
| :set foldcolumn=n |
设置左侧用于显示折叠信息的宽度, 最大为 12 |
| :set foldenable |
打开折叠功能, 手动折叠时可以不用设置 |
| :set foldmethod=foldway |
设置自动折叠的方式, 可以是以下值之一: |
| manual |
手动折叠 |
| indent |
按缩进层次来折叠, 对应 shiftwidth 选项值 |
| expr |
用正则表达式来定义折叠 |
| syntax |
以文件所使用的语言语义进行折叠 |
| diff |
按文件差异进行折叠 |
| marker |
以文件中预定义的标记来折叠 |
| :set foldlevel=n |
控制折叠的可见层次 |
| za |
切换一个折叠(打开的关闭, 关闭的打开) |
| zA |
递归切换折叠 |
| zo |
打开一个折叠 |
| zO |
递归打开一个折叠 |
| zc |
关闭一个折叠 |
| zC |
递归关闭一个折叠 |
| zd |
删除一个折叠 |
| zD |
递归删除一个折叠 |
| zE |
删除所有折叠 |
| zj |
移动到下一个折叠 |
| zk |
移动到上一个折叠 |
| zm |
递减 foldlevel 选项的值 |
| zM |
将 foldlevel 选项值减小到 0 |
| zr |
递增 foldlevel 选项的值 |
| zR |
将 foldlevel 选项值增加到最大 |
| zn/zN |
清除/设置 foldenable 选项 |
| zi |
切换 foldenable 选项 |
| zf光标命令 |
创建折叠, 范围由光标命令指定 |
| nzF |
创建 n 行的折叠, 创建折叠时已经折叠的行只算一行 |
| zf% |
在括号的开始或结束创建括号范围的折叠 |
| zfgg |
创建光标位置到文件开始的折叠 |
|
|
|
|
| 补全 |
|
| Ctrl+N |
下一个自动补全的内容 |
| Ctrl+P |
上一个自动补全的内容 |
| Ctrl+E |
停止补全, 不替换任何文本 |
| Ctrl+X Ctrl+L |
整行补全, 回溯当前文件中的行, 用相似的行自动补全 |
| Ctrl+X Ctrl+N |
关键字补全, 在当前文件中搜索光标前方字符的关键字 |
| Ctrl+X Ctrl+K |
搜索 dictionary 选项定义的文件中的关键字来进行补全 |
| Ctrl+X Ctrl+T |
搜索 thesaurus 选项定义的文件中的关键字进行补全, 可提供同义词进行选择 |
| Ctrl+X Ctrl+P |
搜索当前文件中的关键字 |
| Ctrl+X Ctrl+I |
搜索当前文件以及其包含文件中的关键字 |
| Ctrl+X Ctrl+J |
搜索当前文件以及包含文件中匹配标签的关键字 |
| Ctrl+X Ctrl+F |
搜索文件名进行补全 |
| Ctrl+X Ctrl+D |
搜搜当前文件以及包含文件中的宏名称(#define)所定义的关键字进行补全 |
| Ctrl+X Ctrl+V |
按命令行进行补全 |
| Ctrl+X Ctrl+U |
按 completefunc 选项所指定的自定义函数进行补全 |
| Ctrl+X Ctrl+O |
根据文件类型的不同, 载入不同的自定义函数进行补全 |
| Ctrl+X Ctrl+S |
按拼写检查进行补全 |
| Ctrl+N |
按 complete 选项定义的来源进行搜索补全, complete 选项包含用 , 分割的下列值: |
| . |
当前缓冲区 |
| w |
其他窗口中的缓冲区 |
| b |
缓冲区列表中已载入的缓冲区 |
| u |
缓冲区列表中未载入的缓冲区 |
| U |
不在缓冲区列表中的缓冲区 |
| k |
dictionary 选项中的字典文件 |
| kspell |
拼写检查 |
| s |
thesaurus 选项中定义的同义词文件 |
| i |
当前文件与包含文件 |
| d |
当前文件与包含文件中的宏 |
| t |
标签 |
| ] |
标签 |
|
|
|
|
| 语法 |
|
| :syntax enable |
启用语法高亮, 保留当前的颜色配置 |
| :syntax on |
启用语法高亮, 覆盖当前的颜色配置 |
| :set syntax=langtype |
设置文件的语法类型, 类型名为 $VIMRUNTIME/syntax 目录下的文件名 |
| :set background=dark/light |
设置背景色为深色或浅色, 然后对字体颜色进行调整 |
| :hi |
查看当前对语法的颜色设置, hi 等价于 highlight |
| :hi syntax_group |
查看指定语法组的颜色设置 |
| :hi syntax_group target=font |
设置字体, 其中语法组包括注释, 常量等等分类, target 包括: |
| term |
普通终端 |
| cterm |
支持彩色的终端 |
| gui |
图像环境 |
|
字体可以设置为 |
| bold |
粗体 |
| underline |
下划线 |
| underurl |
URL 格式 |
| italic |
斜体 |
| reverse/inverse |
反转 |
| standout |
正常 |
| NONE |
没有属性 |
| :hi yntax_group targetfg=color |
设置颜色, 颜色值可以是颜色名称或 #rrggbb 格式 |
|
|
|
|
| 编译集成 |
|
| :set makeprg program |
开发环境的编译器名称 |
| :set errorformat ... |
设置错误报告的格式 |
| :copen |
打开显示错误的 Quickfix List 窗口 |
| :cclose |
关闭错误显示窗口 |
| :cn/cnext |
光标移到下一个错误处 |
| :cp/cprevious |
光标移到前一个错误处 |
| :colder |
在 Quickfix List 中加载前面 10 个错误 |
| :cnewer |
在 Quickfix List 中加载后面 10 个错误 |
| :vimgrep /pattern/file_pattern |
在 Quickfix List 中显示匹配内容 |
|
|
|
|
| 键映射 |
|
| :ab |
列出当前定义的缩写 |
| :ab name text |
定义缩写 |
| :unab name |
删除缩写 |
| :map |
列出当前定义的按键映射 |
| :map char cmds |
将按键映射到命令序列, 输入特殊键作为命令序列是需要使用 Ctrl+V 在加上对应的键. |
| :unmap char |
删除定义的键映射 |
| :map! char cmds |
定义在插入模式仍然有效的按键映射 |
| :unmap! char |
取消按键映射, 若按键被展开无法输入, 可在前面加 Ctrl+V |
|
char 可以是 #1, #2... 来代表功能键 F1, F2 ... |
|
Home, End ... 等特殊按键可以使用<> 来表示, <Home>: <End>... |
|
映射的按键也可以是多个字符 |
| :digraph |
显示特殊字符表 |
| Ctrl+K char mark |
输入特殊字符 |
|
|
|
|
| GVIM |
|
| :set guicursor=n-v-c:ver1 |
设置光标为竖线 |
| :set guifont=fontname |
设置字体 |