Vim 是 Vi 的增强版本,它没有菜单。只有命令。 www.vim.org
官方教材: vimbook
| a | 在当前光标后插入文本 |
| A | 在本行行尾插入文本 |
| i | 在光标前插入文本 |
| I | 在本行行首插入文本 |
| o | 在光标下插入新行 |
| O | 在光标上插入新行 |
| h | 左移一个字符 |
| j | 下移一个字符 |
| k | 下移一个字符 |
| I | 右移一个字符 |
| $ | 移动至当前行的行尾 |
| 0 | 移动至当前行的行首(数字零) |
| H | 移动屏幕上端 |
| M | 移动至屏幕中央 |
| L | 移动屏幕下端 |
| Gg | 到整个文件的第一行 |
| G | 到整个文件的最后一行 |
| nG | 到第n行,例如5G 到整个文件的第5行 |
| :n | 到第n行 |
| x | 删除光标所在处字符 |
| nx | 删除光标所在处 n 个字符 |
| dd | 删除光标所在行 |
| ndd | 删除 n 行,例如: 5dd 删除 5 行 |
| dG | 删除光标所在处到末尾的内容 |
| D | 删除从光标所在处到行尾 |
| :n1,n2d | 删除指定范围的行,表示删除从 n1 行开始至 n2 行。例如 :8,20d 表示删除从第 8 行至第 20 行的内容 |
| yy,Y | 复制当前行 |
| nyy,nY | 复制当前行以下的 n 行 |
| dd | 剪切当前行(先删除再粘贴) |
| ndd | 剪切当前行以下 n 行 |
| p | 将内容粘贴在当前光标所在行的下一行(小写) |
| P | 将内容粘贴在当前光标所在行的上一行(大写) |
| D | 删除从光标所在处到当前行的行尾 |
| :n1,n2d | 删除指定范围的行,表示删除从 n1 行开始至 n2 行。例如 :8,20d 表示删除从第 8 行至第 20 行的内容 |
| r | 替换光标所在处的字符 |
| R | 从光标所在处开始替换字符,按 ESC 结束。 例如 :this is a test document 假如当前光标在 a 处,你在命令模式下输入了 R 。则你开始输入的内容都会把 a test document 给替换掉 |
| u | 取消上一步操作 |
| /string | / 表示从文档从前往后查找 string 当按 n 的时候就会跳转到字符在一个出现的地方,当按 N 的时候,会向上跳转到上次出现的地方 开启搜索时忽略大小写 :set ic 关闭搜索时忽略大小写 :set noic |
| n | 从前往后查询字符出现的位置 |
| N | 从后往前查找字符出现的位置 |
| :%s/old/new/g | 全文替换指定字符串, old 表示要替换的字符。 new 表示要替换成的字符 例如,将文档中所有 123 字符替换为 789 :%s/123/789/g |
| :n1,n2s/old/new/g | 在一定范围内替换指定字符串,跟全文类似。只不过在一定范围。 n1 和 n2 表示在某一定行内。 例如:将第 10 行至 12 行中的 789 替换成 007 字符 :10,12s/789/007/g 也可以把 :10,12s/789/007/g 后面的 g 改为 c 字符( :10,12s/789/007/c ),会出现确认信息提示你是否要替换(类似 Windows 中的:你确定要删除吗?) replace with 007 (y/n/a/q/l/^E/^Y)? y :替换 n :不替换 a :替换所有 q :取消替换 |
| :w | 只保存不退出 |
| :w a.txt | 保存至 a.txt 文件(另存为) |
| :q | 只退出 |
| :q! | 退出不保存 |
| :wq | 退出并保存 |
| :wq! | 强行退出并保存(只针对于文件的所有者或者 root 才能这样做) |
| ZZ | 退出并保存(等同于 :wq ) |
| 导入文件 | :r 文件名 例 1 :将 hello 文件的内容导入到 当前光标 所在处 :r hello |
| 导入命令执行结果 | :r ! 命令 例 2 :将系统当前时间导入到当前光标处 :r !date |
| 在 vi 中执行命令 | :! 命令 例如:正在 vi 编辑某个文件的时候,想查看 /root/test 目录下有哪些内容,可以执行如下命令 :! ls /root/test 此时屏幕将会出现 test 目录中的内容,会提示你按任意键回到 vi 编辑中 Press ENTER or type command to continue |
| 定义快捷键 | :map 快捷键 触发命令 例 1 :不管光标在当前行的任意位置,当按下 ctrl+b 的时候。将行首的 # 注释给删除掉。 命令如下 :map ^b 0x 例 2 :不管光标在当前行的任意位置,当按下 ctr+p 的时候。给行首添加 # 注释 :map ^P I#<ESC> ( ^ 表示是 ctrl 键) ^b 是通过 ctrl+v+b 或者 ctrl+v ctrl+b 给按出来的。如果是通过 ctrl 按出来的 ^ 的话,显示的是这样 ^p 是绿色的 |
| 取消快捷键 | :unmap 快捷键 例如:取消 ctrl+b 的快捷键 :unmap ^b |
| 连续行注释 | :n1,n2s/^/#/g :n1,n2s/^/#//g :n1,n2s/^//////g 例 1 :在 5 到 10 行行首添加 # 命令如下 :5,10s/^/#/g ^ 表示回到行首 例 2 :取消 5 到 10 行行首的 # :5,10s/^#//g 例 3 :在 5 到 10 行行首添加 // :5,10s/^//////g 其中 / 表示转义字符, //// 不是字母 W 而是 / 和 / |
| 替换 | :ab abc abc@163.com 表示当你输入 abc 的时候, 会自动转换为 abc@163.com 例 1 :如果你在 vi 中经常输入一串字符,而又不想定义快捷键。可以使用 ab 的方式。假如, 你经常输入 abc@163.com 。则可以像下面这样 :ab abc@163.com 这条命令会在你在 vi 中输入 abc 时,回车或者空格时, abc 字符将会变成 abc@163.com |
没有这个文 件的话,可以新建一个,注意权限问题
例如vi /root/.vimrc文件,输入如下简单配置
syntax on
set nu
set autoindent
设置vim的别名为vi即可: alias vi=vim