♚VIM LIKE A PRO!♛

命令大全

### 基础命令 | 打开关闭命令 | 作用 | 模式 | | :------------------------------------ | :--------------------- | ----: | |==$\texttt{ZZ}$== |==保存并退出当前窗口== | 控制模式 | | $\texttt{:qa和:qa!}$ | 没有未保存修改时退出 | | |==$\texttt{vim file.txt +行号}$== |==打开文件并显示在行号== | | | $\texttt{vimtutor}$ | 打开一个 vim 教程 | | |==$\texttt{vimdiff file1 file2}$==|==打开 vim 并高亮比较不同之处== | | | $\texttt{gvim}$ | ~~启动 vim 图形化版本【需要安装】~~ | 图形化模式 | | $\texttt{gvim -o a b}$ | ~~水平打开多个文件~~ | 图形化模式 | | $\texttt{gvim -O a b}$ | ~~垂直打开多个文件~~ | 图形化模式 | |==$\texttt{u}$== |==撤销 undo== | | |==`Control` + $\texttt{r}$== |==重做 redo== | | ### 搜索移动 | 搜索移动指令 | 作用 | 模式 | | :---------------------- | :------------------------------------- | ---: | | ==$\texttt{/内容}$== | ==向前搜索“内容”== | 控制模式 | | ==$\texttt{?内容}$== | ==向后搜索“内容”== | 控制模式 | | ==$\texttt{n}$== | ==下个匹配结果== | 控制模式 | | ==$\texttt{N}$== | ==上个匹配结果== | 控制模式 | | ==$\texttt{t字符}$== | ==光标移动到行内的单字符的匹配处之前== | 控制模式 | | ==$\texttt{f}字符$== | ==光标移动到行内的单字符的匹配处== | 控制模式 | | ==$\texttt{gg}$== | ==移动到文件的开头== | 控制模式 | | ==$\texttt{G}$== | ==移动到文件的末尾== | 控制模式 | | ==$\texttt{0}$== | ==跳到当前行的开头== | 控制模式 | | $\texttt{w}$ | 向前移动到下一个单词的开头 | 控制模式 | | $\texttt{W}$ | 向前移动到下一个以空格结束的单词的开头(忽略标点符号) | | | $\texttt{b}$ | 向后移动到当前单词的开头,如果已经在开头,则向后一个单词 | | | $\texttt{B}$ | 向后移动到当前以空格结束的单词的开头,忽略标点符号 | | | $\texttt{e}$ | 移动到单词的末尾,或者如果已经在末尾,则移动到下一个单词 | | | $\texttt{E}$ | 移动到以空格结束的单词的末尾,忽略标点符号 | | | $\texttt{\ˆ}$ | 跳到当前行文本的开头。比倚靠左箭头或 h 键要好得多。 | | | ==$\texttt{\$}$== | ==跳到当前行的末尾。比倚靠右箭头或 k 键要好得多。== | | | $\texttt{\%}$ | 移动到匹配的大括号、括号等。 | | | ==$\texttt{\}}$== | ==移动到段落的末尾(第一个空行)。== | | | ==$\texttt{\{}$== | ==移动到段落的开头。== | | | ==$\texttt{(}$== | ==移动到句子的开头(分隔符是句点和空格)。== | | | ==$\texttt{)}$== | ==移动到下一句的开头(分隔符是句点和空格)。== | | | $\texttt{''}$ | 移动到当前文件中你上次编辑的位置。 | | | ==$\texttt{]]}$== | ==移动到下一个函数(在 c/java/c++/python 中)。== | | | ==$\texttt{[[]}$== | ==移动到前一个函数/类(在 c/java/c++/python 中)。== | | | $\texttt{h}$ | 将光标向左移动。 | | | $\texttt{l}$ | 将光标向右移动。 | | | $\texttt{k}$ | 将光标向上移动一行。 | | | $\texttt{j}$ | 将光标向下移动一行。 | | | $\texttt{\ˆf}$ | 向前翻一页。 | | | $\texttt{\ˆb}$ | 向后翻一页。 | | | ==$\texttt{:set hls}$== | ==设置搜索高亮== | | | $\texttt{: help 指令}$ | 在线帮助分屏窗口 | | | $\texttt{/正则}$ | 按正则表达式搜索 | | ### 插入替换 | 插入替换命令 | 作用 | | | :--------------- | :------------------------------------------------ | --- | | $\texttt{i}$ | 在当前光标位置之前插入。 | | | ==$\texttt{I}$== | ==在当前行的开头插入。远比按下 \ˆ 然后按 i 要好。== | | | $\texttt{a}$ | 在当前光标位置之后插入。 | | | $\texttt{A}$ | 在当前行的末尾插入/追加。远比按下 $ 然后按 i 要好。 | | | $\texttt{r}$ | 重新输入光标下的字符。 | | | $\texttt{R}$ | 进入覆盖(替换)模式,在此模式下,你会破坏性地重新输入直到按下 ESC。 | | | $\texttt{s}$ | 替换删除光标下的字符(字母、数字、标点符号、空格等),并进入插入模式。 | | | $\texttt{c}$ | 'change'(重新输入)命令。后面跟随一个移动命令。例如,cw 是一个常用的命令,cc 也是。 | | | $\texttt{C}$ | 类似于 'c',但是针对整行。 | | | $\texttt{o}$ | 在当前行下面插入一个新行。 | | | $\texttt{O}$ | 在当前行上面插入一个新行。 | | | ==$\texttt{:}$== | ==进入命令模式(适用于高级用户)。== | | | $\texttt{!}$ | 进入 Shell 过滤模式(适用于非常高级的用户)。 | | | $\texttt{cw或ct}$ | [先将光标移动到单词首字符后] 输入并替换该单词 | | ### 双跳 | 特殊双跳命令 | 作用 | | :------------ | :----------- | | $\texttt{cc}$ | 改变(重新输入)当前行。 | | ==$\texttt{yy}$== | ==复制(拷贝)当前行。== | | ==$\texttt{dd}$== | ==删除当前行。== | | ==$\texttt{ZZ}$== | ==保存并退出当前文件。== | | ==$\texttt{gg}$== | ==移动到当前文件的顶部。== | ### Vim 配置项 | Vim 配置项命令 | 作用 | | :----------------------------------------------------- | :------------------------------------------------- | | $\texttt{:set syntax=markdown}$ | 设置当然内容为 markdown (可以为其他) 式高亮 | | $\texttt{:options}$ | 显示帮助 | | $\texttt{:browse options或:browse set}$ | 显示帮助 | | $\texttt{syntax enable}$ | 打开所有的语法高亮和魔法,包括资源管理器(Explorer)和语法高亮。 | | $\texttt{set showmode}$ | 在插入/覆盖模式时显示模式。 | | $\texttt{set showcmd}$ | 当命令正在执行时,在状态栏中显示命令。 | | ==$\texttt{set wildmenu}$== | ==用于在 : 命令行上进行自动补全。== | | $\texttt{set ruler}$ | 打开底部屏幕上的“标尺”(状态信息)。 | | $\texttt{runtime ftplugin/man.vim}$ | 打开 man 页面(键入 :Man)。 | | $\texttt{set autoindent}$ | 智能缩进,而不是始终返回到左边缘。 | | $\texttt{set expandtab}$ | 将制表符扩展为空格。 | | $\texttt{set nowrap}$ | 不换行文本(使窗口不美观)。 | | ==$\texttt{set hlsearch}$== | ==在搜索时在文本中突出显示所有匹配项。== | | $\texttt{set showmatch}$ | 显示大括号、括号等的匹配项。 | | ==$\texttt{set ignorecase}$== | ==执行大小写不敏感的搜索。== | | $\texttt{set smartcase}$ | 当搜索短语包含大写时,不要执行大小写不敏感的搜索。 | | $\texttt{set path=.,..,/usr/include/**,/usr/share/**}$ | 告诉编辑器在哪里搜索文件。 | | $\texttt{set spelllang=en\_us}$ | 当进行拼写检查时,使用英语字典。 | | $\texttt{set tags=/path/to/your/tags}$ | 设置跳转标签:需要先再命令行 ctags -R -f;使用 ctrl+] , ctrl+t 来回跳转 | ### 删除 | 删除命令 | 作用 | | :------------------ | :---------------------- | | ==$\texttt{d\}}$== | ==删除到段落的末尾。== | | ==$\texttt{dG}$== | ==删除到文件的末尾。== | | $\texttt{dt字符}$ | 删除到指定字符 (delete till …) | | ==$\texttt{数字dd}$== | ==删除数字行== | ### 高亮搜索 | 高亮搜索命令 | 作用 | | :------------ | :----------------------------- | | $\texttt{*}$ | 移动到光标下单词的下一个实例。 | | $\texttt{\#}$ | 移动到光标下单词的前一个实例。 | ### 光标移动 | 光标移动命令 | 作用 | | :------------------------ | :--------------------------------- | |==$\texttt{zt}$== |==将当前行移动到页面顶部== | |==$\texttt{zz}$== |==将当前行移动到页面中间== | |==$\texttt{zb}$== |==将当前行移动到页面底部== | | $\texttt{:split code.h}$ | 水平分割窗口并在新窗口中加载 code. h | | $\texttt{:vsplit code.h}$ | 垂直分割窗口并在新窗口中加载 code. h | | $\texttt{ˆW j或ˆW左箭头}$ | 移动到左边的下一个窗口 | | $\texttt{ˆW l或ˆW右箭头}$ | 移动到右边的下一个窗口 | | $\texttt{ˆW k或ˆW上箭头}$ | 移动到当前窗口上面的窗口 | | $\texttt{ˆW j或ˆW下箭头}$ | 移动到当前窗口下面的窗口 | | $\texttt{ˆW c}$ | 关闭当前窗口 | | $\texttt{ˆW o}$ | 关闭除当前窗口之外的所有窗口 | | $\texttt{:help CTRL-W}$ | 获取光标移动信息 | ### 复制粘贴 | 复制粘贴命令 | 作用 | | :------------------------- | :----------------------------------------------------------- | | $\texttt{x}$ | 剪切光标下的字符到默认缓冲区。 | | $\texttt{p}$ | 粘贴默认缓冲区中的内容。 | | $\texttt{xp}$ | 剪切当前字符并将其粘贴回右侧(转置)。 | |==$\texttt{yy}$== |==剪切当前行到默认暂存器。== | | $\texttt{"ayy}$ | 剪切当前行到暂存器 a (-z)。 | | $\texttt{"ap}$ | 从暂存器 a 粘贴到当前文档。 | | $\texttt{22"ap}$ | 从暂存器 a 中粘贴 22 次。 | | $\texttt{:help registers}$ | 查看暂存器 | | $\texttt{a-z}$ | 拷贝的文本替换暂存器当前内容。 | | $\texttt{A-Z}$ | 拷贝的文本追加到暂存器当前内容。 | | $\texttt{"}$ | 未命名或默认暂存器。 | | $\texttt{+}$ | 系统默认暂存器(正常的剪切/粘贴暂存器)。 | | $\texttt{*}$ | 选择/放置暂存器。 | | $\texttt{\_}$ | 黑洞暂存器,实际上是 /dev/null,用于避免覆盖暂存器“”(未命名暂存器)的内容。 | | $\texttt{dd}$ | 复制当前行到默认未命名暂存器(""或两个引号)。 | | $\texttt{"add}$ | 删除当前行并保存到 a 暂存器。 | | $\texttt{"y\$}$ | 从当前字符到行尾将内容复制到 y 暂存器。 | | $\texttt{"byy}$ | 复制当前行到 b 暂存器。 | | $\texttt{"c24dd}$ | 将当前行删除 24 次到 c 暂存器。这可能读起来有点复杂,也许简单点说就是将下一行的 24 行删除到 c 暂存器。 | | $\texttt{:c24dd}$ | 也可以这样写,将当前行删除 24 次到 c 暂存器。 | | $\texttt{:registers}$ | 查看所有暂存器的内容。 | | $\texttt{v}$ | 逐字符标记(可视化剪切粘贴) | | $\texttt{V}$ | 逐行标记(可视化剪切粘贴) | | $\texttt{ˆv}$ | 逐列标记(可视化剪切粘贴) | | $\texttt{gv}$ | 备注最后一次标记的区域。(可视化剪切粘贴) | ### 自动补全 | 自动补全命令 | 作用 | | | :-------------- | :---------------------- | --- | | $\texttt{ˆn}$ | 在插入模式下,完成一个单词(通过选择列表向前) | | | $\texttt{ˆp}$ | 在插入模式下,完成一个单词(通过选择列表向后) | | | $\texttt{xl}$ | 整行完成 | | | ^x^f | 文件名完成机制 | | | $\texttt{ˆxˆl}$ | 在插入模式下,完成一行 | | | $\texttt{ˆn}$ | 获取下一个选择 | | | $\texttt{ˆp}$ | 获取上一个选择 | | ### 缩进控制
缩进控制命令作用模式
set tabstop=8\texttt{set tabstop=8}使用行业标准的 8 字符制表.vimrc
set shiftwidth=4\texttt{set shiftwidth=4}使用标准的 4 字符缩进.vimrc
set shiftround\texttt{set shiftround}缩进/取消缩进到最近的 4 字符边界.vimrc
set autoindent\texttt{set autoindent}添加新行时自动缩进.vimrc
数字<<或数字<}\texttt{数字<<或数字<\}}向左移动(需要移动命令,适用于整行)控制模式
数字>>\texttt{数字>>}向右移动(需要移动命令,适用于整行)控制模式
ˆT\texttt{ˆT}缩进插入或覆盖模式
ˆD\texttt{ˆD}取消缩进插入或覆盖模式

拼写检查

| 拼写检查命令 | 作用 | 模式 | | :----------------------- | :------------------------------- | ---------------: | | $\texttt{:set spell}$ | 启用拼写检查器 | 控制模式或. vimrc | | $\texttt{:set nospell}$ | 关闭拼写检查器 | 控制模式或. vimrc | | $\texttt{:help spell}$ | 拼写检查所有信息 | 控制模式 | | $\texttt{[i}$ | 显示包含光标下单词的第一行 | | | $\texttt{[I}$ | 显示包含光标下单词的每一行 | | | $\texttt{\$:g/pattern/}$ | 显示与正则表达式模式匹配的每一行 | | ### 过滤器 | 过滤器 | 作用 | 模式 | | :---------------------- | :------------------------------------- | ---: | | $\texttt{!! command}$ | 仅通过当前行传递到过滤器 | | | $\texttt{!\} command}$ | 通过当前行到段落末尾的区域传递到过滤器 | | | $\texttt{!G command}$ | 通过当前行到文件末尾的区域传递到过滤器 | | | $\texttt{:\%! command}$ | 通过整个文件传递到过滤器 | | ### 代码重排 | 命令 | 作用 | 模式 | | :------------------- | :-------------------------------- | --: | | $\texttt{\%!astyle}$ | 使用 astyle(一个不错的重新格式化程序)重新格式化整个文件。 | | | $\texttt{\%!indent}$ | 使用 indent(一个不错但较旧的程序)重新格式化整个文件。 | | | $\texttt{gqq}$ | 重新包装当前行 | | | $\texttt{gqj}$ | 重新包装当前行和下一行 | | | $\texttt{gq\}}$ | 重新包装从当前行到段落末尾的行。 | | ### QuickFix | 命令 | 作用 | 模式 | | :--------------- | :------------------------------------- | ---: | | $\texttt{:make}$ | 运行由 makefile 变量指定的 makefile。 | | | $\texttt{:cw}$ | 如果存在编译错误,则显示编译错误窗口。 | | | $\texttt{:cn}$ | 转到下一个编译错误。 | | | $\texttt{:cp}$ | 转到前一个编译错误。 | |