
所有Linux操作系统都会内置vi文本编辑器,vim是自vi发展出来的文本编辑器,它提供了丰富的更有利于编程的功能,因此程序员更喜欢用vim,甚至vim官网都宣称vim是程序开发工具,而不是文本处理工具。
命令模式
| 命令 | 说明 |
| i | 从当前位置开始编辑 |
| I | 从当前行的第一个非空格字符处开始编辑 |
| a | 从当前位置的下一个字符处开始编辑 |
| A | 从当前行的末尾处开始输入 |
| [n]c | 重复删除n个数据并开始编辑 【10ck】 |
| G | 跳转到文档最后一行 |
| [n]G | 跳转到文档的第n行 【20G】 |
| J | 将当前行与下一行合并成一行 |
| o / O | 在当前位置的{下/上}面插入新的一行 |
| p / P | 在当前位置的{下/上}一行粘贴 |
| r / R | 进入取代模式,{取代1次/直到按Esc} |
| u / U | 撤销上一个动作 / 恢复撤消 |
| x / X | 从当前位置向{后/前}删除1个字符 |
| [n]{x / X} | 从当前位置向{后/前}删除{n}个字符 【5x】 |
| h | <←> | 光标向左移动 |
| j | <↓> | 光标向下移动 |
| k | <↑> | 光标向上移动 |
| l | <→> | 光标向右移动 |
| 0 | <Home> | <Shift>+6 | 光标移到行首 |
| $ | <End> | <Shift>+4 | 光标移到行末 |
| H / M / L | 跳转到屏幕的最{上面/中间/下面}那行的行首 |
| dd | 删除当前行 |
| [n]dd | [n]cj | 从当前位置开始向下删除n行 【10dd】 |
| [n1],[n2]d | 删除从n1至n2的行 【5,8d】 |
| d0 | 删除当前行从当前位置到行首的字符 |
| D | d$ | 删除当前行从当前位置到行末的字符 |
| d1G / dG | 删除当前行至文档{头部/末尾}的所有字符 |
| gg | 跳到文档头部 |
| yy | 复制当前行 |
| [n]yy | 从当时位置开始向下复制n行 【3yy】 |
| y0 | 复制当前行从当前位置到行首的字符 |
| y$ | 复制当前行从当前位置到行末的字符 |
| y1G | 复制从当前行至文档头部的数据 |
| yG | 复制从当前行至文档尾部的数据 |
| ZZ | 保存并退出 |
| <Ctrl>+b | <Page Up> | 屏幕向上移动一页 |
| <Ctrl>+f | <Page Down> | 屏幕向下移动一页 |
| <Ctrl>+u | 屏幕向上移动半页 |
| <Ctrl>+d | 屏幕向下移动半页 |
| <Ctrl>+r | 重复上一个动作 |
| [n]<Space> | 光标从当前位置向后跳n个字符 |
| [n]<Enter> | 光标从当前位置向下跳n行 |
底线命令模式
| 命令 | 说明 |
| :w | 保存文件 |
| :wq | 保存并退出 |
| :wq! | 强制保存并退出 |
| :q! | 强制退出 |
| :set nu | 显示行号 |
| :set nonu | 不显示行号 |
| :set fo-=r | 关闭自动注释 (永久生效需修改vimrc文件) |
| :set fo=r | 恢复自动注释 |
| :set noautoindent | 关闭自动缩进 (永久生效需修改vimrc文件) |
| :set autoindent | 恢复自动缩进 |
| :w [filename] | 另存为文件filename 【:w /tmp/test.txt】 |
| :[n1],[n2] w [filename] | 复制n1至n2行的内容并另存到文件filename 【:5,8 w /tmp/test.txt】 |
| :r [filename] | 读取另一个文档filename,从下行开始追加内容 【:r /tmp/testr.txt】 |
| /[string] | 从当前位置向下查找字符串string 【/andy】 |
| ?[string] | 从当前位置向上查找字符串string 【?andy】 |
| :[n1],[n2]s/[s1]/[s2]/g | 在第n1与n2行之间寻找字符串s1,用s2替换 【:8,80s/src/dest/g】 |
| :[n],$s/[s1]/[s2]/g | 从第n行至末行查找字符串s1,用s2替代 【:88,$s/src/dest/g】 |
| :[n],$s/[s1]/[s2]/gc | 从第n行至末行查找字符串s1,提示用户是否用s2替代 |
| :%s/^#.*$// | 删除所有注释 |
| :g/^$/d | 删除所有空行 |
| :g/^.#.*$/d | 删除所有注释行 |

输入模式
与常见编辑器的操作相同,本文略……
原创文章禁止转载:技术学堂 » Linux文本编辑工具vi/vim命令详解

技术学堂















