• vim实用技巧


    .模式

    一键移动,另一键执行。示例:

    • 给每行结尾添加分号

    1. A;
    2. ESC
    3. j.

    • 在加号前后各增加一个空格

    1. f+
    2. s, 然后输入" + "
    3. ;.

    • 查找并手动替换单词

    1. /word
    2. cw,然后输入新单词
    3. n.

    • 能够重复,就别用次数

    模式

    备注:

    1. 操作符+作用范围=操作
    2. 当一个操作符被重复两次,则作用于当前行
    3. gUgU可以简写为gUU,其作用为将当前行所有字符替换成大写

    插入模式

    • 在插入模式下即时更正错误

      • Ctrl-h
        删除前一个字符
      • Ctrl-w
        删除前一个单词
      • Ctrl-u
        删至行首
    • 在插入模式下粘贴寄存器中的文本

      • Ctrl-r 0
        把刚才复制的文本粘贴到光标处
    • 在插入模式下做运算

      • Ctrl-r = 635
        计算6
        35的值

    可视模式

    • 选择高亮选区

      • v
        切换到面向字符的可视模式
      • V
        切换到面向行的可视模式
      • Ctrl-V
        切换到面向列块的可视模式
      • gv
        重选上次的高亮选区
    • 用可视模式编辑表格

      • 在列间增加分割线

      1. Ctrl-v
      2. 3j
      3. r|

      • 在行间增加分割线

      1. yy
      2. p
      3. Vr-

    • 同时修改多列

    1. Ctrl-v
    2. 3je
    3. c,输入修改文本,最后按Esc

    • 在长短不一的高亮块后添加分号

    1. Ctrl-v
    2. 3j$
    3. A;,最后按Esc

    命令行模式

    • 查询完整的Ex命令列表

    :h ex-cmd-index

    • 用高亮选区指定范围

    1. 2G
    2. VG
    3. :
    注:按下:后,命令行上会预先填充一个范围:'<,'>,其中‘<. '>分别代表高亮选区的首行和尾行

    • 用模式指定范围

    :/< html>/,/</html>/p
    注:该命令的作用:打印由< html>开标签所在的行开始,到对应闭标签所在的行结束。

    • 用偏移对地址进行修正

      • :/< html>/+1, /</html>/-1p
        打印位于< html>和</html>标签之间的行,但不包括标签所在的行。

      • :., .+3p
        打印当前行开始,向下3行的内容。其中.代表当前行。

    • 在指定范围上执行普通模式命令

      • :'<,'>normal .
        对高亮选区的每一行执行普通模式的.命令

      • :%normal A;
        在文件每行的结尾添加分号

    • 重复上次的Ex命令

    @: 或 Ctrl-o

    • 自动补全Ex命令

      • Ctrl-d
        显示可用的补全列表
      • Tab
        正向遍历补全列表项
      • Shift+Tab
        反向遍历补全列表项
    • 把当前单词插入到命令行

    Ctrl-r + Ctrl-w

    • 回溯历史命令

    : <方向键>
    注:输入部分文本后,则只显示与输入内容开头的命令

    • 命令行窗口

      • q/
        打开查找命令历史的命令行窗口
      • q:
        打开Ex命令历史的命令行窗口
      • Ctrl-f
        从命令行模式切换到命令行窗口
    • 运行Shell命令

      • :!ls
        在vim中调用shell的ls命令,注意:ls是vim的内置命令,用于显示缓冲区列表的内容
      • :shell
        启动一个交互的shell回话,使用exit返回vim
      • Ctrl-z
        挂起vim所属的进程,使用fg恢复vim

    文件

    管理多个文件

    • 用缓冲区列表管理打开的文件

      • :ls
        列出所有被载入内存的缓冲区列表
      • :bp[rev] :bn[ext]
        切换到下一个/上一个缓冲区
      • :bfirst :blast
        切换到第一个/最后一个缓冲区
      • :bdelete N1 N2 N3
        根据缓冲区编号来删除缓冲区
    • 用参数列表将缓冲区分组

      • :args
        列出参数列表(在启动时作为参数传递给vim的文件列表)
      • :args {arglist}
        设置参数列表
      • :args cat file
        将file的内容作为参数列表
      • :next :prev
        遍历参数列表的文件
      • :argdo
        在列表中的每个缓冲区执行同一个命令
    • 管理隐藏缓冲区

      • :w[rite]
        将缓冲区内容写入磁盘
      • :e[dit]!
        把磁盘文件内容读入缓冲区(即回滚所做修改)
      • :qa[ll]
        关闭所有窗口,摒弃修改而无需警告
      • :wa[ll]
        把所有改变的缓冲区写入磁盘
    • 用标签页将窗口分组

      • :tabe[dit] file
        在新标签页中打开file
      • :tabnew
        新建空白标签页
      • :tabc[lose]
        关闭当前标签页及其中的所有窗口
      • :tabo[nly]
        只保留当前标签页,关闭所有其他标签页
      • :tabn[ext] {N} 或者{N}gt
        切换到编号为{N}的标签页
      • :tabn[ext]或者gt
        切换到下一个标签页
      • :tabp[revious]或者gT
        切换到上一个标签页

    打开及保存文件

    • 用:e[dit]打开文件

      • :pwd
        打印工作目录
      • :edit %
        %代表活动缓冲区的完整文件路径,按会将其展开
      • :edit %:h
        :h修饰符会去除文件名,但保留路径中的其他部分
    • 用:find打开文件

      • 配置path选项
        :set path+=./**

      注:**通配符会匹配所有子目录

      • :find file
        查找并打开文件file。若存在多个同名文件时,使用Tab切换。
    • 用netrw管理文件系统

      • vim dir
        打开文件管理器netrw
      • :e[dit] dir
        打开文件管理器netrw

      返回上级目录

      • ENTER
        进入当前目录
      • 杀手级功能
        通过网络来读写文件

    移动

    • 让手指保持在本位行上(ASDFGHJKL所在行)

    • 区分实际行和屏幕行

    注:j,k,0,$都用于操作实际行,加上g前缀后则用于操作屏幕行

    • 基于单词或字串移动

      • w b e ge
        基于单词移动
      • W B E gE
        基于字串移动。

      注:句号及单引号都被当成单词。字串比单词更长。

    • 基于查找进行移动

      • d/get
        删除光标处到"get"之前的文本
    • 基于文本对象选择选区

      • :h text-objexts
        查看文本对象的帮助信息
      • ci"#
        修改双引号内部的内容为#
      • a) a] a} a> a' a" a`
        选择包括括号或引号在内的文本
      • i) i] i} i> i' i" i`
        选择括号或引号里面的文本
      • at
        选择包括xml标签在内的文本
      • it
        选择标签内部的文本
    • 设置位置标记

      • m{a-zA-Z}
        用选定的字母标记当前光标位置
      • 、{mark}
        跳到位置标记所在行的行首
      • 自动位置标记
        • ``
          当前文件中上次跳转动作之前的位置
        • `.
          上次修改的地方
        • `^
          上次插入的地方
        • `[
          上次修改或复制的起始位置
        • `]
          上次修改或复制的结束位置
        • `<
          上次高亮选区的起始位置
        • `>
          上次高亮选区的结束位置
    • 在匹配括号间跳转
      %

    • 在匹配的关键字之间跳转
      %

    注:需要激活matchit插件,命令为:h matchit-install

    寄存器

    寄存器分类

    • 无名寄存器
      ""
    • 复制专用寄存器
      "0
    • 有名寄存器
      "a - "z
    • 黑洞寄存器
      "_

    注:运行"_d{motion}将删除文本且不保存任何副本

    • 系统剪贴板
      "+
    • 选择专用寄存器
      "*
    • 表达式寄存器
      "=
      注:输入一段vim表达式并按Enter执行,如果返回的是字符串,则被存储在表达式寄存器"=中
    • 当前文件名
      "%
    • 轮换文件名
      "#
    • 上次插入的文本
      ".
    • 上次执行的Ex命令
      ":
    • 上次查找的模式
      "/

    用寄存器进行删除、复制和粘贴

    • 调换字符
      xp
    • 调换文本行
      ddp
    • 引用寄存器
      "{register}
  • 相关阅读:
    js获取长度,根据编码获取长度
    springcloud(七,多个服务消费者配置,以及zuul网关案例)
    springcloud(六,多个服务提供者)
    springcloud(五,多个服务注册中心eureka)
    jquery根据选择器进行页面赋值,封装赋值方法
    让页面元素无法选中,不能全选
    取消绑定事件
    js设置元素指定时间隐藏
    js手动抛出异常
    php 之 数据访问 查询关键字 (0506)
  • 原文地址:https://www.cnblogs.com/wuhualong/p/practical_vim.html
Copyright © 2020-2023  润新知