Vim命令收集

134 阅读3分钟

三种工作模式

  1. 命令模式

    vi的入口;

    对文件进行常规操作,比如定位、翻页、复制、粘贴、删除……

  2. 末行模式

    vi的出口;

    执行保存、退出等操作

  3. 编辑模式

    编辑内容

移动命令

  1. 行数移动

    命令英文功能
    gggo文件顶部
    Ggo文件末尾
    数字gggo移动到数字对应行数
    数字Ggo移动到数字对应行数
    :数字移动到数字对应行数
  2. 屏幕移动

    命令英文---
    Ctrl + bback向上翻页
    Ctrl + fforward向下翻页
    HHead屏幕顶部
    MMiddle屏幕中间
    LLow屏幕底部段落移动
  3. 段落移动

    命令功能
    {上一段
    }下一段
  4. 括号切换

    ---功能
    %括号匹配及切换

分屏命令

###末行命令

命令英文功能
:wwrite保存
:qquit退出,如果没有保存,不允许退出
:q!quit强行退出,不保存退出
:wqwrite & quit保存并退出
:x保存并退出
:%s///gc确认搜索并替换

末行命令扩展

命令---功能
:e .edit会打开内置的文件浏览器,浏览当前目录下的文件
:n 文件名new新建文件
:w 文件名write另存为,但是仍然要编辑文件,并不会切换文件

##删除文本

---------
xcut删除光标所在的字符,或者选中文字
d(移动命令)delete删除移动命令对应的内容
dddelete删除光标所在行,可以ndd删除多行
Ddelete删除至行末尾

删除命令和移动命令组合

命令功能
dw从光标位置删除到单词末尾
d0从光标位置删除到一行的起始位置
d}从光标位置删除到段落结尾
ndd从光标位置向下连续删除 n 行
d代码行G从光标所在行 删除到 指定代码行 之间的所有代码
d'a从光标所在行 删除到 标记a 之间的所有代码

替换

命令---------
rreplace替换当前字符命令模式
Rreplace替换当前行光标后的字符替换模式
  • R命令可以进入__替换模式__,替换完成后,按ESC回到命令模式
  • 替换命令 的作用就是不用进入__编辑模式__,对文件进行轻量级的修改

查找和替换

查找和替换命令需要在末行模式下执行

格式如下

:%s///g

  1. 全局替换

    :%s/旧文本/新文本/g

  2. 可视区域替换

    先选中文本

    :s/旧文本/新文本/g

  3. 确认替换

    :%s/旧文本/新文本/gc

    末尾的g换成gc以后,在替换的时候,会有提示

    | --- | --- | | :---- ]:| :----------------------------: | | y | yes 替换 | | n | no 不替换 | | a | all 替换所有 | | q | quit 退出替换 | | l | 最后一个,并把光标移动到行首 | | ^E | 向下滚屏 | | ^Y | 向上滚屏 |

缩排和重复执行

---功能
>>向右增加缩进
<<向左减少缩进
.重复上次命令
  • 缩排命令 在开发程序时,统一增加代码的缩进 比较有用
  • 在可视模式下,缩排命令只需要使用一个 > 或者 <

标记

---------
mxmark添加标记x,x是a-z或者A-Z之间的任意一个字母
'x直接定位到标记x所在位置

###选中文本(可视模式)

---模式---
v可视模式从光标位置开始按照正常模式选择文本
V可视行模式选中光标经过的完整行
Ctrl + v可视块模式垂直方向选中文本

可视模式 下,可以和__移动命令__ 连用,例如:ggVG能够选中所有内容

撤销和恢复撤销

---------
uundo撤销上次命令
Ctrl + rredo恢复撤销的命令

复制、粘贴

---------
y(移动命令)copy复制
yycopy复制一行,可以nyy复制多行
ppaste粘贴

vi中提供有一个 被复制文本的缓冲区

  • 复制命令会将选中的文字保存在缓冲区
  • 删除命令删除的文字会被保存在缓冲区
  • 在需要的位置,使用粘贴命令可以将缓冲区的文字插入到光标所在位置
  • vi中的文本缓冲区只有一个,后续复制剪切操作,会覆盖之前的内容

注意

  • vi中的文本缓冲区和系统的剪贴板不是同一个,所以在其他软件中使用Ctrl + C复制的内容,不能再vi中通过p命令粘贴
  • 可以在编辑模式下使用鼠标右键粘贴