vim三大模式
- 命令模式
移动光标、删除字符等 - 输入模式
输入字符 - 末行模式
保存文件、退出vi、设置vi、查找等功能
| 命令 | 作用 |
|---|---|
| ESC | 输入–>命令 |
| : | 命令–>末行 |
| ESC | 末行–>命令 |
常用命令
打开文件
| 命令 | 作用 |
|---|---|
| vim filename | 打开文件 |
| vim + filename | 打开文件,定位至文件末尾 |
| vim +num filename | 打开文件,定位至第num行 |
| vim +/PATTERN filename | 打开文件,定位至第一次被PATTERN匹配到的行的行首 |
编辑多个文件
| 命令 | 作用 |
|---|---|
| vim file1 file2 file3 | 打开文件 |
| :next | 切换至下一个文件 |
| :prev | 切换至前一个文件 |
| :first | 切换至第一个文件 |
| :last | 切换至最后一个文件 |
| :q | 退出当前文件 |
| :qa | 全部退出 |
编辑多个文件
| 命令 | 作用 |
|---|---|
| :split file 或 :new file | 用新窗口打开文件,光标停在顶层的窗口上 |
| Ctrl+ww | 移动到下一个窗口 |
| Ctrl+wj | 移动到下方的窗口 |
| Ctrl+wk | 移动到上方的窗口 |
| :close | 关闭窗口,最后一个窗口不能使用此命令,可以防止意外退出vim |
| :q | 如果是最后一个被关闭的窗口,那么将退出vim |
退出文件
- 末行模式
| 命令 : | 作用 |
|---|---|
| w | 保存 |
| w filename | 保存为该文件 |
| w! | 强行保存 |
| q | 退出 |
| q! | 不保存并退出 |
| wq 或 x | 保存并退出 |
| e! | 放弃所有修改,并打开原来文件 |
- 命令模式
| 命令 | 作用 |
|---|---|
| ZZ | 保存并退出 |
插入
| 命令 | 作用 |
|---|---|
| i | 在当前位置前插入 |
| I | 在当前行首插入 |
| a | 在当前位置后插入 |
| A | 在当前行尾插入 |
| o | 在当前行之后插入一行 |
| O | 在当前行之前插入一行 |
| r | 单字符替换 |
| # r | 光标后#个字符全部替换为某个字符 |
| R | 替换(覆盖)当前光标位置及后面的若干文本 |
| J | 合并光标所在行及下一行为一行 |
移动
- 逐字符移动:
| 命令 | 作用 |
|---|---|
| h | 左 |
| l | 右 |
| j | 下 |
| k | 上 |
| # h/l/j/k | 移动#个字符/行 |
| backspace | 左 |
| space | 右 |
| enter | 下 |
| - | 上 |
| 方向键 | 上下左右 |
- 以单词为单位移动
| 命令 | 作用 |
|---|---|
| w | 移至下一个单词的词首 |
| e | 跳至当前或下一个单词的词尾 |
| b | 跳至当前或上一个单词的词首 |
| # w/e/b | 移动#个单词 |
- 行内跳转:
| 命令 | 作用 |
|---|---|
| 0 | 绝对行首 |
| ^ | 行首的第一个非空白字符 |
| $ | 绝对行尾 |
| # $ | 移动到#行后的行尾 |
- 行间跳转
| 命令 | 作用 |
|---|---|
| # G | 跳转至第#行 |
| G | 最后一行 |
| gg | 第一行 |
| # + | 向下跳#行 |
| # - | 向上跳#行 |
- 编程辅助-函数中跳转
| 命令 | 作用 |
|---|---|
| [{ | 转到上一个位于第一列的“{” |
| ]} | 转到下一个位于第一列的“}” |
| { | 转到上一个空行 |
| } | 转到下一个空行 |
| gD | 跳转到全局变量的定义处,从当前文件开头开始搜索 |
| gd | 转到当前光标所指的局部变量的定义 |
| g; | 上一个修改过的地方 |
| g, | 下一个修改过的地方 |
| * | 转到当前光标所指的单词下一次出现的地方 |
| # | 转到当前光标所指的单词上一次出现的地方 |
- 末行模式
| 命令 : | 作用 |
|---|---|
| . | 表示当前行 |
| $ | 最后一行 |
| # | 第#行 |
| + # | 向下#行 |
| - # | 向上#行 |
可视化
- 命令模式
| 命令 | 作用 |
|---|---|
| v | 按字符选取 |
| V | 按矩形选取 |
删除 复制 剪切 粘贴 撤销
- 命令模式
| 命令 | 作用 |
|---|---|
| x | 删除当前字符 |
| n x | 删除从光标开始的n个字符 |
| X | 删除当前光标前一字符 |
| yw | 复制从光标开始到词尾的字符 |
| n yw | 复制从光标开始的n个单词 |
| y^ | 复制从光标到行首的内容 |
| y$ | 复制从光标到行尾的内容 |
| yy | 拷贝当前行 |
| n yy | 拷贝当前行开始的n行,比如,2yy拷贝当前行及其下一行 |
| #dw, #de, #db | 与单词跳转命令结合,用来删除单词 |
| d h/l/j/k | 用来删除字符 |
| dd | 剪切当前行 |
| n dd | 剪切当前行开始的n行,比如,2dd剪切当前行及其下一行 |
| p | 如果复制或剪切为整行内容,则粘贴至光标所在行的下方,如果复制或剪切的内容为非整行,则粘贴至光标所在字符的后面 |
| shift+p 或 P | 如果复制或剪切为整行内容,则粘贴至光标所在行的上方,如果复制或剪切的内容为非整行,则粘贴至光标所在字符的前面 |
| u | 撤销上一步操作 |
| # u | 直接撤消最近#次编辑操作 |
| Ctrl+r | 撤消最近一次撤消操作 |
搜索
- 命令模式
| 命令 | 作用 |
|---|---|
| /abc | 向光标下搜索abc字符串 |
| ?abc | 向光标上搜索abc字符串 |
| n | 向下搜索前一个搜素目标 |
| N | 向上搜索前一个搜索目标 |
搜索高亮 打开与关闭
- 末行模式
| 命令 : | 作用 |
|---|---|
| set hlsearch | 打开高亮搜索 |
| set nohlsearch | 关闭高亮搜索 |
搜索替换
- 末行模式
| 命令 : | 作用 |
|---|---|
| s/old/new | 用new替换行中首次出现的old |
| s/old/new/g | 用new替换行中所有的old |
| n,m s/old/new/g | 用new替换从n到m行里所有的old |
| %s/old/new/g | 用new替换当前文件里所有的old |
滚屏
- 命令模式
| 命令 | 作用 |
|---|---|
| ctrl+u\d | 向上\下滚动半屏 |
| ctrl+e\y | 向上\下滚动一行 |
| ctrl+b\f | 向上\下滚动一屏 |
行号显示与取消
- 末行模式
| 命令 : | 作用 |
|---|---|
| set nu | 显示行号 |
| set nonu | 取消显示行号 |
语法高亮与取消
- 末行模式
| 命令 : | 作用 |
|---|---|
| syntax on | 开启 |
| syntax off | 关闭 |
编辑其他文件
- 末行模式
| 命令 : | 作用 |
|---|---|
| e otherfilename | 编辑文件名为otherfilename的文件 |
| r /path/to/somefile | 将另外一个文件的内容填充在当前文件中,附加到当前光标后 |
工作目录
- 末行模式
| 命令 : | 作用 |
|---|---|
| pwd | 显示vim的工作目录 |
多行缩进缩出
- 命令模式
| 命令 | 作用 |
|---|---|
| >>或<< | 光标所在行会缩进/缩出 |
| n >>或<< | 光标以下的n行会缩进/缩出 |
| = | 可视模式下,选择要调整的代码块,按=,代码会按书写规则缩排好 |
| n = | 调整n行代码的缩排 |
配置文件
| 文件 | 作用 |
|---|---|
| /etc/vimrc | 针对所有用户 |
| ~/.vimrc | 针对当前用户 |
5万+

被折叠的 条评论
为什么被折叠?



