• vim 命令集


    vim 命令速查图片

    命令速查卡(一)

    命令速查卡(二)

    Vim 打开命令

    • vim FileName -- 打开文件 FileName,并将光标置于第一行首
    • vim +n FileName -- 打开文件 FileName,并将光标置于第 n 行首
    • vim + FileName -- 打开文件 FileName,并将光标置于最后一行
    • vim + /pattern File -- 打开文件 File,并将光标置于其中第一个于 pattern 匹配的字符串处
    • vim –r FileName -- 在上次正用 vi 编辑 FileName 发生系统崩溃后,恢复FileName
    • vim File1 … Filen -- 打开多个文件,依次对之进行编辑
    • vim -o File1 … Filen -- 用水平分隔的方式打开多个文件然后进行编辑
    • vimdiff filename1 filename2 -- 用垂直分割的方式打开两个文件 filename1,filename2 然后显示出两个文件的不同的比较

    插入模式

    vim 补全

    • <c-a> -- 重复上次的编辑动作
    • <c-x><c-l> -- 整行补全
    • <c-x><c-n> -- 根据当前文件里关键字补全
    • <c-x><c-k> -- 根据字典补全
    • <c-x><c-t> -- 根据同义词字典补全
    • <c-x><c-i> -- 根据头文件内关键字补全
    • <c-x><x-]> -- 根据标签补全
    • <c-x><c-f> -- 补全文件名
    • <c-x><c-d> -- 补全宏定义
    • <c-x><c-v> -- 补全 vim 命令
    • <c-x><c-u> -- 用户自定义补全方式
    • <c-x><c-s> -- 拼写建议

    普通与命令行模式

    移动

    ctags 快捷键

    • [{ -- 转到上一个位于第一列的"{"
    • }] -- 转到下一个位于第一列的"{"
    • { -- 转到上一个空行
    • } -- 转到下一个空行 ([ and ] 也分别是两个指令)

    移动光标

    • h -- 向右
    • j -- 向下
    • k -- 向上
    • l -- 向左
    • 0 -- 这是数字 “0”:移动到这一行的最前面字符处
    • ^ -- 移动到这一行的最开始字符处
    • <c-p> -- 光标上移一行
    • <c-n> -- 光标下移一行
    • num+ -- 光标下移到 n 行头,若没有 n 光标移到下行行头
    • num- -- 光标上移到 n 行头,若没有 n 光标移到上行行头
    • num$ -- 光标下移到 n 行尾,若没有 n 则移动到本行行尾
    • num<Enter> -- 向下移动 n 行,无 n 移动一行
    • H -- 光标移动到这个屏幕的最上方哪一行
    • M -- 光标移动到这个屏幕的中央哪一行
    • L -- 光标移动到这个屏幕的最下方哪一行
    • nG -- n 为数字.移动到这个文件的第 n 行.若没有 n 则移动到最后一行
    • gg -- 移动到这个文件的第一行,相当于 1G

    屏幕滚动

    • <c-f> -- 屏幕“向下”移动一页,相当于<Page Down>按键
    • <c-b> -- 屏幕“向上”移动一页,相当于<Page Up>按键
    • <c-d> -- 屏幕“向下”移动半页
    • <c-u> -- 屏幕“向上”移动半页
    • <c-e> -- 屏幕向下滚一行
    • <c-y> -- 屏幕项上滚一行
    • nz -- 将第 n 行滚至屏幕顶部。不指定 n 时将当前行滚至屏幕顶
    • :$ -- 屏幕滚到文章最后一行
    • :0 -- 屏幕滚到文章最开始一行

    跳转

    • W / w -- 光标右移一个字至字首.
    • B / b -- 光标左移一个字至字首.
    • E / e -- 光标右移一个字至字尾.
    • ( -- 光标移到上个句子句首.
    • ) -- 光标移到下个句子句首.
    • { -- 光标移到上个段落句首.
    • } -- 光标移到下个段落句首.
    • f[char] -- 光标跳转到本行下一个字符 char 处( char 指代任意字符 )
    • F[char] -- 光标跳转到本行上一个字符 char 处( char 指代任意字符 )
    • t[char] -- 光标跳转到本行下一个字符 char 的前一个字符处( char 指代任意字符 )
    • T[char] -- 光标跳转到本行上一个字符 char 的后一个字符处( char 指代任意字符 )
    • /[word] -- 光标跳转到下一个字符串 word 处,并把所有 word 单词高亮显示( word 指代任意字符串,并且可以使用 正则表达式 )
    • ?[word] -- 光标跳转到上一个字符串 word 处,并把所有 word 单词高亮显示( word 指代任意字符串,并且可以使用 正则表达式 )
    • # -- 光标跳转到下个与光标所在处单词相同的单词,并把所有与光标所在处的相同的单词高亮显示
    • * -- 光标跳转到上个与光标所在处单词相同的单词,并把所有与光标所在处的相同的单词高亮显示
    • gd -- 将与光标所在处的单词相同的单词全部高亮显示,并跳转到上一个高亮显示的单词
    • gD -- 将与光标所在处的单词相同的单词全部高亮显示,并跳转到最前面一个高亮显示的单词
    • `. -- 跳转至上次编辑位置
    • `c -- 将光标转移到书签 c 处( c 为任意字符 )
    • n -- 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个,但其实它只会在高亮字符中切换)
    • N -- 上一个匹配(同上)

    操作

    插入操作

    • 行操作
      • I -- 在光标所在行首插入文本
      • A -- 在光标所在行尾添加文本
      • o -- 在光标所在行下面添加一行
      • O -- 在光标所在行上面添加一行
      • nS -- 从当前行开始,删除向下 n 行并进入编辑模式,若无 n 删除当前所在行,并进入编辑模式
    • 字符操作
      • i -- 在光标前插入文本
      • a -- 在光标后插入文本
      • r -- 替换光标所在处字符,结束替换
      • R -- 替换多个字符,以按下 [Esc] 键标志替换结束
      • ns -- 从当前光标位置处开始,删除 n 个字符并进入编辑模式,若无 n 删除一个字符,并进入编辑模式
      • :r [filename | !cmd] -- 在编辑数据中读入一个文件内容数据或一个命令的返回结果,并把这些数据添加到光标所在行后面

    复制与删除与粘贴

    • 字符操作
      • nx -- 向后删除 n 个字符,若没有 n 向后删除一个字符
      • nX -- 向前删除 n 个字符,若没有 n 向前删除一个字符
      • d0 -- 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
      • d$ -- 删除游标所在处,到该行的最后一个字符
      • y0 -- 复制光标所在的那个字符到该行行首的所有数据
      • y$ -- 复制光标所在的那个字符到该行行尾的所有数据
      • p -- 将已复制的数据在光标下一列贴上
      • P -- 将已复制的数据在光标上一列贴上
    • 行操作
      • ndd -- 删除光标所在的向下 n 列,若没有 n 删除游标所在的那一整列
      • dnG -- 删除光标所在到第 n 行的所有数据,若没有 n 删除光标所在到最后一行的所有数据
      • nyy -- 复制光标所在的向下 n 行,若无 n 复制游标所在的那一行
      • ynG -- 复制游标所在列到第n行的所有数据,若无 n 复制游标所在行到最后一行的所有数据
      • J -- 将光标所在列与下一列的数据结合成同一列

    撤销与重做

    • . -- 重复前一个操作
    • u -- 复原前一个操作
    • <c-r> -- 重做上一个操作

    区块操作

    • 进入标记文本模式
      • v -- 进入标记文本模式,单字符模式
      • V -- 进入标记文本模式,行模式
      • <c-v> -- 进入标记文本模式,列模式,类似于UE的列模式
    • 对标记文本模式中区域选择
      • aw -- 选中一个单词,含单词后的空格
      • as -- 选中一个句子,含句号后的空格
      • ap -- 选中一个段落,含段落后的空格
      • ab -- 选中()括号中的所有内容,含()
      • aB -- 选中{}括号中的所有内容,含{}
      • iw -- 选中一个单词,不含单词后的空格
      • is -- 选中一个句子,不含句号后的空格
      • ip -- 选中一个段落,不含段落后的空格
      • ib -- 选中()括号中的内容,不含()
      • iB -- 选中{}括号中的内容,不含{}
    • 移动标记文本模式中光标位置
      • o -- 光标在选择区域中的对角线之间的跳转
      • O -- 光标在选择区域中的横纵之间的跳转
      • 当在 V 与 <c-v> 模式中我们除了 o,O 来移动光标位置外,还可以通过移动光标位置中一些方法来移动光标位置(不是所有而是其中一些)
    • 对标记文本模式中数据操作
      • ~ -- 将选中块中的内容大小写翻转
      • u -- 将选中块中的内容转成小写
      • U -- 将选中块中的内容转成大写
      • y -- 复制选中块中的内容
      • d/D/x/X -- 删除选中块中的内容

    行移动操作

    • >> -- 将当前行右移一个单位
    • << -- 将当前行左移一个单位(一个tab符)
    • == -- 自动缩进当前行
    • :n1,n2 co n3 -- 将 n1 行到 n2 行之间的内容拷贝到第 n3 行下.若无『 ,n2』则复制 n1 到 n3 行下
    • :n1,n2 m m3 -- 移动 n1 行到 n2 行之间的内容移至第 n3 行下.若无『 ,n2』则将 n1 内容移到 n3 行下
    • :n1,n2 d -- 删除 n1 行到 n2 行之间的内容,『 ,n2』则将 n1 行删除
    • :n1,n2 y -- 复制 n1 行到 n2 行之间的内容,『 ,n2』则将 n1 行复制

    字符替换

    • :[range]s/{pattern}/{string}/[flag] [count] 

    窗口

    打开窗口的命令以下几个

    • 打开标签
      • :tabe  标签名
    • 横向切割窗口
      • :new    窗口名 (保存后就是文件名) 
      • :split    窗口名 (也可以简写为 :sp  窗口名)
    • 纵向切割窗口名
      • :vsplit+窗口名(也可以简写为 :vsp+窗口名)

    窗口切换

    • <c-w>[h | j | k | l | ←|↓|↑|→]

    移动窗口

    • <c-w>t -- 将光标移动到最上方的窗口
    • <c-w>b -- 将光标移动到最下方的窗口

    ctags

    窗口大小调整

    • 纵向调整
      • <c-w>+ -- 纵向扩大(行数增加)
      • <c-w>- -- 纵向缩小 (行数减少)
      • :res(ize) num  -- 例如::res 5,显示行数调整为5行
      • :res(ize)+num -- 把当前窗口高度增加num行
      • :res(ize)-num -- 把当前窗口高度减少num行
    • 横向调整
      • :vertical res(ize) num 指定当前窗口为num列
      • :vertical res(ize)+num 把当前窗口增加num列
      • :vertical res(ize)-num 把当前窗口减少num列

    多窗口操作

    • :qa(ll) -- 退出所有窗口,但是如果你有一个窗口发生改写但未保存 vim 是不会退出的
    • :wa(ll) -- 保存所有修改过的窗口
    • :wqall -- 保存所有修改过的窗口并关闭,然后退出 vim:qall! 强制退出所有窗口,然后退出 vim
    • :argdo [命令] -- 对所有待编辑的窗口都执行 argdo 后面跟的命令
    • :only -- 了编辑以外的窗口,但是那些窗口中要是有文本被改写过并且没有保存那么操作将失败

    vim 多文本编辑

    • :n 编辑下个文件
    • :N 编辑上个文件
    • :files  列出目前这个 vim 的打开的所有文件

    保存与退出

    • :q -- 退出 vim 返回到 shell,若有修改未被保存,vi 在末行给出提示信息并不退出 vim 到 shell
    • :q! -- 退出 vim 返回到 shell,放弃未保存的修改
    • :x -- 保存后退出,若文件没有修改的话,不更新文件的修改时间
    • :w -- 将编辑的数据写入硬盘中
    • :w! -- 若文件属性为"只读"时,强制写入该文件
    • :w filename -- 写入当前文件到 filename 文件
    • :n1,n2 w filename -- 将 n1 到 n2 的内容保存到 filename 这个文件中
    • ZZ -- 若文件没有更动,则不保存离开,若文件被更动过,则保存后离开

    十六进制查看文本类容

    • :%!xxd -- 按十六进制查看当前文件
    • :%!xxd -r -- 从十六进制返回正常模式

    插件快捷键

    tag 快捷键

    • <c-]> -- 跳到当前光标下单词的标签
    • <c-o> -- 返回上一个标签
    • <c-t> -- 返回上一个标签
    • <c-w>] -- 新窗口显示当前光标下单词的标签,光标跳到标签处
    • :tag TagName -- 跳到TagName标签
    • :stag TagName -- 新窗口显示TagName标签,光标跳到标签处

    OmniCppComplete
    当自动补全下拉窗口弹出后,一些可用的快捷键:

    • <c-p> -- 向前切换成员
    • <c-n> -- 向后切换成员
    • <c-e> -- 表示退出下拉窗口, 并退回到原来录入的文字
    • <c-y> -- 表示退出下拉窗口, 并接受当前选项

    winmanager

    • <enter> -- 或双击 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
    • <tab> -- 如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
    • <F5> -- 刷新列表
    • - -- 返回上一层目录
    • c -- 使浏览目录成为vim当前工作目录
    • d -- 创建目录
    • D -- 删除当前光标下的目录或文件
    • i -- 切换显示方式
    • R -- 文件或目录重命名
    • s -- 选择排序方式
    • r -- 反向排序列表
    • x -- 定制浏览方式, 使用你指定的程序打开该文件

    书签

    • mc -- 把当前位置记录为书签 c ( c 为任意字符 ) 多个位置的标签为一样时,只有最后一个定义的位置标签会生效
    • `c -- 将光标转移到书签 c 处( c 为任意字符 )

    执行 shell 命令

    • :sh -- 打开 shell,可执行shell命令,输入exit退出shell返回到vim
    • :!cmd -- 直接执行 shell ( cmd 表示为任意 shell 命令 )
  • 相关阅读:
    Spring AOP切点表达式用法总结
    各种文档地址记录
    回顾乐信集团工作经历
    Redux的简单使用
    简单介绍软件测试(一)
    jupyter notebook 安装代码提示功能
    解决matplotlib不显示中文的问题
    前端生成二维码并下载(PC端)
    XSS绕过常见方式
    JWT的安全问题
  • 原文地址:https://www.cnblogs.com/kzang/p/2681111.html
Copyright © 2020-2023  润新知