这里会显示出您选择的修订版和当前版本之间的差别。
linux:vim:move-change [2010/06/02 01:18] |
linux:vim:move-change [2010/06/02 01:18] (当前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== VIM 移动和修改命令 ====== | ||
+ | ===== 在行内移动 ===== | ||
+ | |||
+ | |||
+ | 我们可以用w命令向前移动一个单词,用b命令向后移动一个单词。我们也可以用数字做前缀组成新的命令,来快速的移动。例如4w就是向前移动4个单词,而5b则是向后移动5个单词。 | ||
+ | |||
+ | 利用$命令可以使光标移到一行的结尾处,而^命令可以使光标移到一行的开始处。 | ||
+ | |||
+ | ===== 移动到指定行 ===== | ||
+ | |||
+ | |||
+ | 使用G命令可以移动到指定的行。例如3G可以使我们快速的移到第3行。而1G则可以使我们移到文章的最顶端,而G则是定位到文章的最后一行。 | ||
+ | |||
+ | 那么又如何知道现在第几行呢?我们可以使用:set number命令使vi显示行号;而取消行号的命令为:set nonumber。即使没有显示行号,也可以使用ctrl+G命令显示总共有多少行,而当前在多少行,以及所占的百分比等信息。 | ||
+ | |||
+ | 使用J命令可以将本行和下一行合并为一行。我们也可以使用数字来使几行合并为一行。例如3J就可以将当前行下的三行(包括当前行)合并为一行。 | ||
+ | |||
+ | 除了在行间移动,我们还可以使用ctrl+U和ctrl+D命令进行向上和向下翻页,以快速移动到文章的不同部分。 | ||
+ | |||
+ | ===== 删除和更改文本 ===== | ||
+ | |||
+ | |||
+ | 我们可以使用dd来删除一行,使用dw来删除一个词。我们可以灵活组合命令来完成不同的删除操作。例如d3w一次删除3个词,而3dw则是指一次删除一个词,而这样的操作进行3次,即总的是也是删掉3个字符。命令d$则是删除从当前位置到本行结束的所有字符,命令D也能完成同样的工作。 | ||
+ | |||
+ | 与d命令相类似是的c更改命令,他在删除一个字符的同时进入插入状态。cw命令删除一个单词并进入插入状态。cc命令删除本行上的所有内容并进入插入状态,而且还会保持当前的行缩进。命令c$将删除从光标处到行尾的所有内容并进入插入状态。 | ||
+ | |||
+ | 命令s相当于命令cl的简写,它将删除光标右侧的一个字符并进入插入状态。而命令S相当于命令cc的简写,它将删除一行并进入插入状态。 | ||
+ | |||
+ | 我们可以使用r的命令来替换文本。例如rx就可以当前光标下的字符替换为x。当然也可以用数字来组合以形成新的命令来进行工作,例如5rd就是将当前光标以后的5个字符替换为d。 | ||
+ | |||
+ | 我们还可以用~命令进行大小写转换。 | ||
+ | |||
+ | 命令.可以重复执行刚才执行的命令,大提高操作的速度。 | ||
+ | |||
+ | ===== 录制和执行宏 ===== | ||
+ | |||
+ | |||
+ | 利用vi中的键盘宏,可以使我们实现多个命令的记录和执行。例如我们现在的文本是 stdio.h stdlib.h math.h 但是我们都知道在C语言中所需要的是 #include #include #include ,如何来做到?如果你有足够的耐心可以一句一句的加,但是也可以使用键盘宏来高效地完成这项工作。开始输入qa.其中的a是一个宏的名字,我们可以用任何我们喜欢的字母来代替,q是开始录制宏的命令标志。这样我们就可以开始宏的输入了:^移到一行的开始;在一行的开始插入#include;在结束处加入>;j移到下一行,q结束宏的录制。 | ||
+ | |||
+ | 当我们要使用宏时,就可以输入@a命令来执行宏了。我们还可以在执行命令前加上数字来告诉vi执行几次。这样就可以快速的完成工作了。 | ||
+ | |||
+ | ===== VIM移动修改命令小结 ===== | ||
+ | <html> | ||
+ | <table summary="Commands" border="2" cellpadding="3" cellspacing="0" frame="hsides" rules="all"><caption>命令小结</caption><tbody><tr><td><code class="inset">w</code></td><td>向前移动一个单词</td></tr><tr><td><code class="inset">b</code></td><td>向后移动一个单词</td></tr><tr><td><code class="inset">$</code></td><td>移动到一行的结尾</td></tr><tr><td><code class="inset">^</code></td><td>移动到一行的开始</td></tr><tr><td><code class="inset">G</code></td><td>移动到指定行</td></tr><tr><td><code class="inset">:set number</code></td><td>显示行号</td></tr><tr><td><code class="inset">:set nonumber</code></td><td>不显示行号</td></tr><tr><td><code class="inset">dd</code></td><td>删除一行</td></tr><tr><td><code class="inset">dw</code></td><td>删除一个单词</td></tr><tr><td><code class="inset">d$</code></td><td rowspan="2">删除从当前位置到本行结束的所有字符</td></tr><tr><td><code class="inset">D</code></td></tr><tr><td><code class="inset">s</code></td><td>删除光标右侧的一个字符并进入插入状态</td></tr><tr><td><code class="inset">S</code></td><td rowspan="2">删除一行并进入插入状态</td></tr><tr><td><code class="inset">cc</code></td></tr><tr><td><code class="inset">cw</code></td><td>删除一个单词并进入插入状态</td></tr><tr><td><code class="inset">c$</code></td><td rowspan="2">删除从当前位置到本行结束的所有字符并进入插入状态</td></tr><tr><td><code class="inset">C</code></td></tr><tr><td><code class="inset">.</code></td><td>重复执行刚才执行的命令</td></tr><tr><td><code class="inset">J</code></td><td>将本行和下一行合并</td></tr><tr><td><code class="inset">r</code></td><td>替换当前字符</td></tr><tr><td><code class="inset">~</code></td><td>转换大小写</td></tr><tr><td><code class="inset">q</code></td><td>录制宏</td></tr><tr><td><code class="inset">@</code></td><td>执行宏</td></tr></tbody></table> | ||
+ | </html> | ||
+ | |||
+ | ===== 参考 ===== | ||
+ | https://yyq123.blogspot.com/2009/02/vim_23.html | ||
+ | |||
+ | |||