<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>vim - 标签 - 菠菜眾長</title><link>https://lruihao.cn/tags/vim/</link><description>vim - 标签 - 菠菜眾長</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>1024@lruihao.cn (Lruihao)</managingEditor><webMaster>1024@lruihao.cn (Lruihao)</webMaster><lastBuildDate>Fri, 31 Aug 2018 11:46:39 +0000</lastBuildDate><atom:link href="https://lruihao.cn/tags/vim/" rel="self" type="application/rss+xml"/><item><title>Vim 速查表</title><link>https://lruihao.cn/posts/vim/</link><pubDate>Fri, 31 Aug 2018 11:46:39 +0000</pubDate><author>Lruihao</author><guid>https://lruihao.cn/posts/vim/</guid><description><![CDATA[<p>Vim 速查表-帮你提高 N 倍效率</p>
<h2 id="进入-vim">进入 vim</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">vim filename</td>
<td style="text-align:left">打开或新建文件，并将光标置于第一行首</td>
</tr>
<tr>
<td style="text-align:left">vim +n filename</td>
<td style="text-align:left">打开文件，并将光标置于第 n 行首</td>
</tr>
<tr>
<td style="text-align:left">vim + filename</td>
<td style="text-align:left">打开文件，并将光标置于最后一行首</td>
</tr>
<tr>
<td style="text-align:left">vim +/pattern filename</td>
<td style="text-align:left">打开文件，并将光标置于第一个与 pattern 匹配的串处</td>
</tr>
<tr>
<td style="text-align:left">vim -r filename</td>
<td style="text-align:left">在上次正用 vim 编辑时发生系统崩溃，恢复 filename</td>
</tr>
<tr>
<td style="text-align:left">vim filename….filename</td>
<td style="text-align:left">打开多个文件，依次编辑</td>
</tr>
</tbody>
</table>
<h2 id="vim-配置">vim 配置</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">all</td>
<td style="text-align:left">列出所有选项设置情况</td>
</tr>
<tr>
<td style="text-align:left">term</td>
<td style="text-align:left">设置终端类型</td>
</tr>
<tr>
<td style="text-align:left">ignorance</td>
<td style="text-align:left">在搜索中忽略大小写</td>
</tr>
<tr>
<td style="text-align:left">list</td>
<td style="text-align:left">显示制表位 (Ctrl+I) 和行尾标志（$)</td>
</tr>
<tr>
<td style="text-align:left">number</td>
<td style="text-align:left">显示行号</td>
</tr>
<tr>
<td style="text-align:left">report</td>
<td style="text-align:left">显示由面向行的命令修改过的数目</td>
</tr>
<tr>
<td style="text-align:left">terse</td>
<td style="text-align:left">显示简短的警告信息</td>
</tr>
<tr>
<td style="text-align:left">warn</td>
<td style="text-align:left">在转到别的文件时若没保存当前文件则显示 NO write 信息</td>
</tr>
<tr>
<td style="text-align:left">nomagic</td>
<td style="text-align:left">允许在搜索模式中，使用前面不带“\”的特殊字符</td>
</tr>
<tr>
<td style="text-align:left">nowrapscan</td>
<td style="text-align:left">禁止 vi 在搜索到达文件两端时，又从另一端开始</td>
</tr>
<tr>
<td style="text-align:left">mesg</td>
<td style="text-align:left">允许 vi 显示其他用户用 write 写到自己终端上的信息</td>
</tr>
<tr>
<td style="text-align:left">:set number / set nonumber</td>
<td style="text-align:left">显示/不显示行号</td>
</tr>
<tr>
<td style="text-align:left">:set ruler /set noruler</td>
<td style="text-align:left">显示/不显示标尺</td>
</tr>
<tr>
<td style="text-align:left">:set hlsearch</td>
<td style="text-align:left">高亮显示查找到的单词</td>
</tr>
<tr>
<td style="text-align:left">:set nohlsearch</td>
<td style="text-align:left">关闭高亮显示</td>
</tr>
<tr>
<td style="text-align:left">:syntax on</td>
<td style="text-align:left">语法高亮</td>
</tr>
<tr>
<td style="text-align:left">:set nu</td>
<td style="text-align:left">显示行号</td>
</tr>
<tr>
<td style="text-align:left">:set tabstop=8</td>
<td style="text-align:left">设置 tab 大小，8 为最常用最普遍的设置</td>
</tr>
<tr>
<td style="text-align:left">:set softtabstop=8</td>
<td style="text-align:left">4:4 个空格，8: 正常的制表符，12: 一个制表符 4 个空格，16: 两个制表符</td>
</tr>
<tr>
<td style="text-align:left">:set autoindent</td>
<td style="text-align:left">自动缩进</td>
</tr>
<tr>
<td style="text-align:left">:set cindent</td>
<td style="text-align:left">C 语言格式里面的自动缩进</td>
</tr>
</tbody>
</table>
<h2 id="移动光标">移动光标</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">k nk</td>
<td style="text-align:left">上 向上移动 n 行</td>
</tr>
<tr>
<td style="text-align:left">j nj</td>
<td style="text-align:left">下 向下移动 n 行</td>
</tr>
<tr>
<td style="text-align:left">h nh</td>
<td style="text-align:left">左 向左移动 n 行</td>
</tr>
<tr>
<td style="text-align:left">l nl</td>
<td style="text-align:left">右 向右移动 n 行</td>
</tr>
<tr>
<td style="text-align:left">Space</td>
<td style="text-align:left">光标右移一个字符</td>
</tr>
<tr>
<td style="text-align:left">Backspace</td>
<td style="text-align:left">光标左移一个字符</td>
</tr>
<tr>
<td style="text-align:left">Enter</td>
<td style="text-align:left">光标下移一行</td>
</tr>
<tr>
<td style="text-align:left">w/W</td>
<td style="text-align:left">光标右移一个字至字首</td>
</tr>
<tr>
<td style="text-align:left">b/B</td>
<td style="text-align:left">光标左移一个字至字首</td>
</tr>
<tr>
<td style="text-align:left">e 或 E</td>
<td style="text-align:left">光标右移一个字至字尾</td>
</tr>
<tr>
<td style="text-align:left">)</td>
<td style="text-align:left">光标移至句尾</td>
</tr>
<tr>
<td style="text-align:left">(</td>
<td style="text-align:left">光标移至句首</td>
</tr>
<tr>
<td style="text-align:left">}</td>
<td style="text-align:left">光标移至段落开头</td>
</tr>
<tr>
<td style="text-align:left">{</td>
<td style="text-align:left">光标移至段落结尾</td>
</tr>
<tr>
<td style="text-align:left">n$</td>
<td style="text-align:left">光标移至第 n 行尾</td>
</tr>
<tr>
<td style="text-align:left">H</td>
<td style="text-align:left">光标移至屏幕顶行</td>
</tr>
<tr>
<td style="text-align:left">M</td>
<td style="text-align:left">光标移至屏幕中间行</td>
</tr>
<tr>
<td style="text-align:left">L</td>
<td style="text-align:left">光标移至屏幕最后行</td>
</tr>
<tr>
<td style="text-align:left">0</td>
<td style="text-align:left">（注意是数字零）光标移至当前行首</td>
</tr>
<tr>
<td style="text-align:left">^</td>
<td style="text-align:left">移动光标到行首第一个非空字符上去</td>
</tr>
<tr>
<td style="text-align:left">$</td>
<td style="text-align:left">光标移至当前行尾</td>
</tr>
<tr>
<td style="text-align:left">gg</td>
<td style="text-align:left">移到第一行</td>
</tr>
<tr>
<td style="text-align:left">G</td>
<td style="text-align:left">移到最后一行</td>
</tr>
<tr>
<td style="text-align:left">f</td>
<td style="text-align:left">移动光标到当前行的字符 a 上</td>
</tr>
<tr>
<td style="text-align:left">F</td>
<td style="text-align:left">相反</td>
</tr>
<tr>
<td style="text-align:left">%</td>
<td style="text-align:left">移动到与制匹配的括号上去（），{}，[]，&lt;&gt;等</td>
</tr>
<tr>
<td style="text-align:left">nG</td>
<td style="text-align:left">移动到第 n 行上</td>
</tr>
<tr>
<td style="text-align:left">G</td>
<td style="text-align:left">到最后一行</td>
</tr>
</tbody>
</table>
<h2 id="屏幕滚动">屏幕滚动</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">Ctrl+u</td>
<td style="text-align:left">向文件首翻半屏</td>
</tr>
<tr>
<td style="text-align:left">Ctrl+d</td>
<td style="text-align:left">向文件尾翻半屏</td>
</tr>
<tr>
<td style="text-align:left">Ctrl+f</td>
<td style="text-align:left">向文件尾翻一屏</td>
</tr>
<tr>
<td style="text-align:left">Ctrl ＋ b</td>
<td style="text-align:left">向文件首翻一屏</td>
</tr>
<tr>
<td style="text-align:left">nz</td>
<td style="text-align:left">将第 n 行滚至屏幕顶部，不指定 n 时将当前行滚至屏幕顶部</td>
</tr>
</tbody>
</table>
<h2 id="插入文本类">插入文本类</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">i</td>
<td style="text-align:left">在光标前</td>
</tr>
<tr>
<td style="text-align:left">I</td>
<td style="text-align:left">在当前行首</td>
</tr>
<tr>
<td style="text-align:left">a</td>
<td style="text-align:left">光标后</td>
</tr>
<tr>
<td style="text-align:left">A</td>
<td style="text-align:left">在当前行尾</td>
</tr>
<tr>
<td style="text-align:left">o</td>
<td style="text-align:left">在当前行之下新开一行</td>
</tr>
<tr>
<td style="text-align:left">O</td>
<td style="text-align:left">在当前行之上新开一行</td>
</tr>
<tr>
<td style="text-align:left">r</td>
<td style="text-align:left">替换当前字符</td>
</tr>
<tr>
<td style="text-align:left">R</td>
<td style="text-align:left">替换当前字符及其后的字符，直至按 ESC 键</td>
</tr>
<tr>
<td style="text-align:left">s</td>
<td style="text-align:left">从当前光标位置处开始，以输入的文本替代指定数目的字符</td>
</tr>
<tr>
<td style="text-align:left">S</td>
<td style="text-align:left">删除指定数目的行，并以所输入文本代替之</td>
</tr>
<tr>
<td style="text-align:left">ncw/nCW</td>
<td style="text-align:left">修改指定数目的字</td>
</tr>
<tr>
<td style="text-align:left">nCC</td>
<td style="text-align:left">修改指定数目的行</td>
</tr>
</tbody>
</table>
<h2 id="删除命令">删除命令</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">x/X</td>
<td style="text-align:left">删除一个字符，x 删除光标后的，而 X 删除光标前的</td>
</tr>
<tr>
<td style="text-align:left">dw</td>
<td style="text-align:left">删除一个单词（删除光标位置到下一个单词开始的位置）</td>
</tr>
<tr>
<td style="text-align:left">dnw</td>
<td style="text-align:left">删除 n 个单词</td>
</tr>
<tr>
<td style="text-align:left">dne</td>
<td style="text-align:left">也可，只是删除到单词尾</td>
</tr>
<tr>
<td style="text-align:left">do</td>
<td style="text-align:left">删至行首</td>
</tr>
<tr>
<td style="text-align:left">d$</td>
<td style="text-align:left">删至行尾</td>
</tr>
<tr>
<td style="text-align:left">dd</td>
<td style="text-align:left">删除一行</td>
</tr>
<tr>
<td style="text-align:left">ndd</td>
<td style="text-align:left">删除当前行及其后 n-1 行</td>
</tr>
<tr>
<td style="text-align:left">dnl</td>
<td style="text-align:left">向右删除 n 个字母</td>
</tr>
<tr>
<td style="text-align:left">dnh</td>
<td style="text-align:left">向左删除 n 个字母</td>
</tr>
<tr>
<td style="text-align:left">dnj</td>
<td style="text-align:left">向下删除 n 行，当前行+其上 n 行</td>
</tr>
<tr>
<td style="text-align:left">dnk</td>
<td style="text-align:left">向上删除 n 行，当期行+其下 n 行</td>
</tr>
<tr>
<td style="text-align:left">cnw[word]</td>
<td style="text-align:left">将 n 个 word 改变为 word</td>
</tr>
<tr>
<td style="text-align:left">C$</td>
<td style="text-align:left">改变到行尾</td>
</tr>
<tr>
<td style="text-align:left">cc</td>
<td style="text-align:left">改变整行</td>
</tr>
<tr>
<td style="text-align:left">shift+j</td>
<td style="text-align:left">删除行尾的换行符，下一行接上来了</td>
</tr>
</tbody>
</table>
<h2 id="复制粘贴">复制粘贴</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">p</td>
<td style="text-align:left">粘贴用 x 或 d 删除的文本</td>
</tr>
<tr>
<td style="text-align:left">ynw</td>
<td style="text-align:left">复制 n 个单词</td>
</tr>
<tr>
<td style="text-align:left">yy</td>
<td style="text-align:left">复制一行</td>
</tr>
<tr>
<td style="text-align:left">ynl</td>
<td style="text-align:left">复制 n 个字符</td>
</tr>
<tr>
<td style="text-align:left">y$</td>
<td style="text-align:left">复制当前光标至行尾处</td>
</tr>
<tr>
<td style="text-align:left">nyy</td>
<td style="text-align:left">拷贝 n 行</td>
</tr>
</tbody>
</table>
<h2 id="撤销">撤销</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">u</td>
<td style="text-align:left">撤销前一次的操作</td>
</tr>
<tr>
<td style="text-align:left">shif+u(U)</td>
<td style="text-align:left">撤销对该行的所有操作</td>
</tr>
</tbody>
</table>
<h2 id="搜索及替换">搜索及替换</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">/pattern</td>
<td style="text-align:left">从光标开始处向文件尾搜索 pattern</td>
</tr>
<tr>
<td style="text-align:left">?pattern</td>
<td style="text-align:left">从光标开始处向文件首搜索 pattern</td>
</tr>
<tr>
<td style="text-align:left">n</td>
<td style="text-align:left">在同一方向重复上一次搜索命令</td>
</tr>
<tr>
<td style="text-align:left">N</td>
<td style="text-align:left">在反方向上重复上一次搜索命令</td>
</tr>
<tr>
<td style="text-align:left">cw newword</td>
<td style="text-align:left">替换为 newword</td>
</tr>
<tr>
<td style="text-align:left">n</td>
<td style="text-align:left">继续查找</td>
</tr>
<tr>
<td style="text-align:left">.</td>
<td style="text-align:left">执行替换</td>
</tr>
<tr>
<td style="text-align:left">:s/p1/p2/g</td>
<td style="text-align:left">将当前行中所有 p1 均用 p2 替代，g 表示执行 用 c 表示需要确认</td>
</tr>
<tr>
<td style="text-align:left">:n1,n2 s/p1/p2/g</td>
<td style="text-align:left">将第 n1 至 n2 行中所有 p1 均用 p2 替代</td>
</tr>
<tr>
<td style="text-align:left">:g/p1/s//p2/g</td>
<td style="text-align:left">将文件中所有 p1 均用 p2 替换</td>
</tr>
<tr>
<td style="text-align:left">:1,$ s/string1/string2/g</td>
<td style="text-align:left">在全文中将 string1 替换为 string2</td>
</tr>
</tbody>
</table>
<h2 id="书签">书签</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">m[a-z]</td>
<td style="text-align:left">在文中做标记，标记号可为 a-z 的 26 个字母</td>
</tr>
<tr>
<td style="text-align:left">`a</td>
<td style="text-align:left">移动到标记 a 处</td>
</tr>
</tbody>
</table>
<h2 id="visual-模式">visual 模式</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">v</td>
<td style="text-align:left">进入 visual 模式</td>
</tr>
<tr>
<td style="text-align:left">V</td>
<td style="text-align:left">进入行的 visual 模式</td>
</tr>
<tr>
<td style="text-align:left">ctrl+v</td>
<td style="text-align:left">进如块操作模式用 o 和 O 改变选择的边的大小</td>
</tr>
<tr>
<td style="text-align:left">在所有行插入相同的内容如 include&lt;</td>
<td style="text-align:left">将光标移到开始插入的位置，按 CTRL+V 进入 VISUAL 模式，选择好模块后按 I（shift+i)，后插入要插入的文本，按 [ESC] 完成</td>
</tr>
</tbody>
</table>
<h2 id="行方式命令">行方式命令</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">:n1,n2 co n3</td>
<td style="text-align:left">将 n1 行到 n2 行之间的内容拷贝到第 n3 行下</td>
</tr>
<tr>
<td style="text-align:left">:n1,n2 m n3</td>
<td style="text-align:left">将 n1 行到 n2 行之间的内容移至到第 n3 行下</td>
</tr>
<tr>
<td style="text-align:left">:n1,n2 d</td>
<td style="text-align:left">将 n1 行到 n2 行之间的内容删除</td>
</tr>
<tr>
<td style="text-align:left">:n1,n2 w!command</td>
<td style="text-align:left">将文件中 n1 行至 n2 行的内容作为 command 的输入并执行之</td>
</tr>
<tr>
<td style="text-align:left">若不指定 n1，n2，则表示将整个文件内容作为 command 的输入</td>
<td style="text-align:left"></td>
</tr>
</tbody>
</table>
<h2 id="宏">宏</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">q[a-z]</td>
<td style="text-align:left">开始记录但前开始的操作为宏，名称可为【a-z】，然后用 q 终止录制宏</td>
</tr>
<tr>
<td style="text-align:left">reg</td>
<td style="text-align:left">显示当前定义的所有的宏，用@[a-z] 来在当前光标处执行宏 [a-z]</td>
</tr>
</tbody>
</table>
<h2 id="窗口操作">窗口操作</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">:split</td>
<td style="text-align:left">分割一个窗口</td>
</tr>
<tr>
<td style="text-align:left">:split file.c</td>
<td style="text-align:left">为另一个文件 file.c 分隔窗口</td>
</tr>
<tr>
<td style="text-align:left">:nsplit file.c</td>
<td style="text-align:left">为另一个文件 file.c 分隔窗口，并指定其行数</td>
</tr>
<tr>
<td style="text-align:left">ctrl ＋ w</td>
<td style="text-align:left">在窗口中切换</td>
</tr>
<tr>
<td style="text-align:left">:close</td>
<td style="text-align:left">关闭当前窗口</td>
</tr>
</tbody>
</table>
<h2 id="文件及其他">文件及其他</h2>
<table>
<thead>
<tr>
<th style="text-align:left">命令</th>
<th style="text-align:left">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">:q</td>
<td style="text-align:left">退出 vi</td>
</tr>
<tr>
<td style="text-align:left">:q!</td>
<td style="text-align:left">不保存文件并退出 vi</td>
</tr>
<tr>
<td style="text-align:left">:e filename</td>
<td style="text-align:left">打开文件 filename 进行编辑</td>
</tr>
<tr>
<td style="text-align:left">:e!</td>
<td style="text-align:left">放弃修改文件内容，重新载入该文件编辑</td>
</tr>
<tr>
<td style="text-align:left">:w</td>
<td style="text-align:left">保存当前文件</td>
</tr>
<tr>
<td style="text-align:left">:wq</td>
<td style="text-align:left">存盘退出</td>
</tr>
<tr>
<td style="text-align:left">:ZZ</td>
<td style="text-align:left">保存当前文档并退出 VIM</td>
</tr>
<tr>
<td style="text-align:left">:!command</td>
<td style="text-align:left">执行 shell 命令 command</td>
</tr>
<tr>
<td style="text-align:left">:r!command</td>
<td style="text-align:left">将命令 command 的输出结果放到当前行</td>
</tr>
<tr>
<td style="text-align:left">:n1,n2 write temp.c</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">:read file.c</td>
<td style="text-align:left">将文件 file.c 的内容插入到当前光标所在的下面</td>
</tr>
</tbody>
</table>]]></description></item></channel></rss>