vi vim常用操作
光标移动
| 命令 | 说明 |
|---|---|
| w | 移动光标到下一个单词开头. |
| e | 移动光标到下一个单词结尾 |
| b | 移动光标到上一个单词. |
| 0 | 移动光标到本行最开头. |
| ^ | 移动光标到本行最开头的字符处. |
| $ | 移动光标到本行结尾处. |
| A | 移动光标至行尾并处于“追加”状态,直接编辑 |
| H | 移动光标到屏幕的首行. |
| M | 移动光标到屏幕的中间一行. |
| L | 移动光标到屏幕的尾行. |
| gg | 移动光标到文档首行. |
| G | 移动光标到文档尾行. |
| :n | 跳至第n行 |
| ctrl + f | 向下翻页 同 page down. |
| ctrl + b | 向上翻页 同 page up. |
| ctrl + d | 向下翻半页 此比较有用 |
| ctrl + u | 向上翻半页 此比较有用 |
| ctrl + e | 向下翻一行 |
| ctrl + y | 向上一行 |
| [[ | 转到上一个位于第一列的“{” |
| ]] | 转到下一个位于第一列的“}” |
| { | 转到上一个空行 |
| } | 转到下一个空行 |
| '' | 两个单引号 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查找到某个单词后, 再输入此命令则回到上次停留的位置. |
| '. | 一单一点 此命令相当好使, 它移动光标到上一次的修改行. |
| `. | 一倒引一点 此命令相当强大, 它移动光标到上一次的修改点. |
替换、删除、复制、粘贴、撤销、重复
| 命令 | 说明 |
|---|---|
| rc | 用 c 替换光标所指向的当前字符; |
| nrc | 用 c 替换光标所指向的前 n 个字符; |
| 5rA | 用 A 替换光标所指向的前 5 个字符; |
| x | 删除光标所指向的当前字符; |
| nx | 删除光标所指向的前 n 个字符; |
| 3x | 删除光标所指向的前 3 个字符; |
| dw | 删除光标右侧的字; |
| ndw | 删除光标右侧的 n 个字; |
| 3dw | 删除光标右侧的 3 个字; |
| db | 删除光标左侧的字; |
| ndb | 删除光标左侧的 n 个字; |
| 5db | 删除光标左侧的 5 个字; |
| dd | 删除光标所在行,并去除空隙; |
| ndd | 删除(剪切) n 行内容,并去除空隙; |
| 3dd | 删除(剪切) 3 行内容,并去除空隙; |
| d$ | 从当前光标起删除字符直到行的结束; |
| d0 | 从当前光标起删除字符直到行的开始; |
| J | 删除本行的回车符(CR),并和下一行合并。 |
| s | 用输入的正文替换光标所指向的字符; |
| S | 删除当前行,并进入编辑模式; |
| ns | 用输入的正文替换光标右侧 n 个字符; |
| nS | 删除当前行在内的 n 行,并进入编辑模式; |
| cw | 用输入的正文替换光标右侧的字; |
| cW | 用输入的正文替换从光标到行尾的所有字符(同 c$ ); |
| ncw | 用输入的正文替换光标右侧的 n 个字; |
| cb | 用输入的正文替换光标左侧的字; |
| ncb | 用输入的正文替换光标左侧的 n 个字; |
| cd | 用输入的正文替换光标的所在行; |
| ncd | 用输入的正文替换光标下面的 n 行; |
| c$ | 用输入的正文替换从光标开始到本行末尾的所有字符; |
| c0 | 用输入的正文替换从本行开头到光标的所有字符。 |
| p | 小写字母 p,将缓冲区的内容粘贴到光标的后面; |
| P | 大写字母 P,将缓冲区的内容粘贴到光标的前面。 |
| yy | 复制当前行到内存缓冲区; |
| nyy | 复制 n 行内容到内存缓冲区; |
| 5yy | 复制 5 行内容到内存缓冲区; |
| “+y | 复制 1 行到操作系统的粘贴板; |
| “+nyy | 复制 n 行到操作系统的粘贴板。 |
| u | 撤消前一条命令的结果; |
| . | 重复最后一条修改正文的命令。 |
插入模式
| 命令 | 说明 |
|---|---|
| i | 在光标左侧插入正文 |
| a | 在光标右侧插入正文 |
| o | 在光标所在行的下一行增添新行 |
| O | 在光标所在行的上一行增添新行 |
| I | 在光标所在行的开头插入 |
| A | 在光标所在行的末尾插入 |
保存,退出,环境变量
| 命令 | 说明 |
|---|---|
| :w | 将编辑的数据写入硬盘档案中(常用) |
| :w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关 |
| :q | 离开 vi (常用) |
| :q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
| :wq | 储存后离开 |
| :wq! | 强制储存后离开 |
| ZZ | 若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开! |
| :w [filename] | 另存为 |
| :r [filename] | 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到光标所在行后面 |
| :! command | 暂时离开 vi 到指令列模式下执行 command 的显示结果!例如 『:! cat ./test』即可在 vi 当中察看当前文件夹中的test文件中的内容 |
| Esc | 退出插入模式,进入命令模式 |
| :set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号,这一点,非常有用,当我们修改配置文件的时候,能知道多少行,就方便多了。 |
| :set nonu | 与 set nu 相反,取消行号 |