vim
- vim的工作模式
- 普通模式:vim打开文件的默认模式(vim filename)
- 插入模式(编辑模式):普通模式下敲击i、a、o、I、A、O
- 可视化模式:普通模式下敲击v可以复制选中字符拖拽到光标处,并移动光标到复制的最后一个字符处
- 替换模式:普通模式下敲击R,输入字符替换原有字符
- 命令行模式:普通模式下输入:com
- vim打开文件
| 命令 | 说明 |
|---|---|
| vim filename | 打开或新建一个文件,并将光标置于第一行的首部 |
| vim -r filename | 恢复上次vim打开时崩溃的文件 |
| vim -R filename | 只读模式打开文件 |
| vim + filename | 打开文件,并将光标置于最后一行的首部 |
| vim +n filename | 打开文件,并将光标置于第n行的首部 |
| vim +/pattern filename | 打幵文件,并将光标置于第一个与 pattern 匹配的位置 |
| vim -c command filename | 在对文件进行编辑前,先执行指定的命令 |
- 光标移动命令
- 单字符移动(方向键)
| 指令 | 说明 |
|---|---|
| h | 向左移动 |
| l | 向右移动 |
| j | 向下移动 |
| k | 向上移动 |
| x(h、l、j、k) | 向移动x个字符 |
- 单词移动
| 指令 | 说明 |
|---|---|
| w | 将光标移动到下个单词的开头 |
| b | 将光标移动到前个单词的开头 |
| e | 将光标移动到下一个单词的词末 |
| E | 移动到单词的结尾(忽略标点符号) |
| ge | 将光标移动到上一个单词的词末 |
| x(w、b、e、E、ge) | 指定移动x次 |
- 行移动
| 指令 | 说明 |
|---|---|
| :set nu | 显示行号 |
| xgg | 跳转到x行 |
| $ | 将光标移动到当前行的行尾 |
| 0 | 将光标移动到当前行的行首 |
| ^ | 将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置) |
| x| | 移到当前行的第x列 |
| fx | 将光标移动到当前行的第一个字符x上 |
| nfx | 将光标移动到当前行的第n个字符x上 |
| tx | 将光标移动到目标字符x的前一个字符上 |
-文本块移动
| 指令 | 说明 |
|---|---|
| ( | 移到当前句子的开头 |
| ) | 移到下一个句子的开头 |
| { | 移到当前一段的开头 |
| } | 移到下一段的开头 |
| [[ | 移到当前这一节的开头 |
| ]] | 移到下一节的开头 |
- 滚屏与跳转
| 指令 | 说明 |
|---|---|
| ctrl+u | 半屏上滚 |
| ctrl+d | 半屏下滚 |
| ctrl+f | 全屏下滚 |
| ctrl+b | 全屏上滚 |
| zz | 将光标置于屏幕的中间 |
| zt | 将光标移动到屏幕的顶部 |
| zb | 将光标移动到屏幕的底部 |
| mx,my,mz | 设置三个位置 |
| `x,`y,`z | 跳转到设置 |
| `` | 返回到跳转前的位置 |
- 文本插入操作
| 指令 | 说明 |
|---|---|
| i | 在当前光标的前面插入字符 |
| a | 在当前光标的后面追加字符 |
| o | 在当前光标的下一行行首插入字符 |
| I | 在一行的开头添加文本 |
| A | 在一行的结尾处添加文本 |
| O | 在光标当前行的上一行插入文本 |
| s | 删除当前光标处的字符并进入到插入模式 |
| S | 删除光标所在处的行,并进入到插入模式 |
| u | 撤销修改 |
- 文本删除操作
| 指令 | 说明 |
|---|---|
| x | 删除当前光标所在处的字符 |
| X | 删除当前光标左边的字符 |
| dw | 删除一个单词(从光标处到空格) |
| dd(D) | 删除当前光标处的一整行 |
| xdd | 删除从光标开始处的x行代码 |
| dgg | 删除从光标到文本开头 |
| dG | 删除从光标到文本结尾 |
- 文本复制、剪切与粘贴
| 指令 | 说明 |
|---|---|
| y | 复制 |
| p | 粘贴 |
| yw | 复制一个单词 |
| ynw | 复制n个单词 |
| yy | 复制一整行 |
| nyy | 复制从当前光标所在行开始的n行 |
复制文本块
- 普通模式键入v进入可视化模式
- 移动光标选择文本
- 执行复制粘贴操作
- 文本的修改与替换
| 指令 | 说明 |
|---|---|
| cw | 删除从光标处到单词结尾的文本并进入到插入模式 |
| cb | 删除从光标处到单词开头的文本并进入到插入模式 |
| cc | 删除一整行并进入到插入模式 |
| ~ | 修改光标下字符的大小写 |
| r | 替换当前光标下的字符 |
| xp | 交换光标和下一个字符 |
- 文本的查找与替换
| 指令 | 说明 |
|---|---|
| /str | 正向查找 |
| ?str | 反向查找 |
| 😒/old/new | 将当前行的第一个字符串old替换为new |
| 😒/old/new/g | 将当前行的所有字符串old替换为new |
| ns/old/new/g | 将n行的所有字符串old替换为new |
| :n,xs/old/new/g | 将n到x行所有字符串old替换为new |
| :%s/old/new/g | 将文本中所有的字符串old替换为new |
高亮搜索词
- :set hls(开启高亮)
- 键入*将当前光标处的单词高亮显示
- 使用n浏览下一个查找高亮的结果
- 撤销修改、重做与保存
| 指令 | 说明 |
|---|---|
| u | 撤销上一步的操作。 |
| ctrl+r | 将原来的插销重做一遍 |
| :U | 恢复一整行原来的面貌(文件打开时的文本状态) |
| :q | 若文件没有修改,直接退出 |
| :q! | 文件已经被修改,放弃修改退出 |
| :wq | 文件已经被修改,保存修改并退出 |
| :e! | 放弃修改,重新回到文件打开时的状态 |
← docker基本命令 cp→