美文网首页
删除一个函数

删除一个函数

作者: sweetBoy_9126 | 来源:发表于2022-08-19 21:08 被阅读0次

    %

    匹配括号,适用于[]{}() 等
    使用前提:当前光标必须在括号上,比如当前光标在 (,按 %光标就会定位到 ),也就是说会在当前光标的括号基础上匹配它的结束括号

    vim-indent-object

    基于缩进

    ii

    当光标在函数体内或对象内,选中的是函数内内容或对象内的内容
    示例1:

    function a()  {
      const b = 1
      if (b > 1) {
        console.log(111)
      }
    }
    

    光标在 a 函数内,使用 vii 选中函数体内部
    注意如果光标在 if语句内部使用 vii 选中的就是 if 语句内部的代码

    示例2:

    {
        path: '/',
        name: 'layout',
        component: Layout,
        children: [
          {
            path: 'shop',
              component: ShopAplication
          }
        ]
      },
    

    在光标在大括号内选中大括号内的代码,光标在children 内部的大括号时,选中的是 内部大括号里的代码

    ai

    选中它的上一层缩进下代码,不包括上一缩进的结束符
    示例:

    function a()  {
      const b = 1
      if (b > 1) {
        console.log(111)
      }
    }
    

    选中的是

    function a()  {
      const b = 1
      if (b > 1) {
        console.log(111)
      }
    
    

    aI

    选中它的上一层缩进包括它本身缩进的所有代码
    示例:

    function a()  {
      const b = 1
      if (b > 1) {
        console.log(111)
      }
    }
    

    选中的是

    function a()  {
      const b = 1
      if (b > 1) {
        console.log(111)
      }
    }
    

    缺陷

    1. 基于缩进,所以光标必须在函数体或者对象内部
    2. 如果光标在最外层,那会把所有同级别的都删掉
      比如:
    function a() {
      console.log(1)
    }
    
    function b() {
      console.log(2)
    }
    

    光标在 function a() { 或者 function b() { 上,就会把这两个函数都选中

    删除一个函数的方式

    1. dap
      基于段落,如果函数里有空行,就不起作用

    2. dai
      将 ai 映射成 aI

    • settings.json
        "vim.operatorPendingModeKeyBindings": [
            {
                "before": ["a", "i"],
                "after": ["a", "I"]
            }
        ],
        "vim.visualModeKeyBindings": [
            {
                "before": ["a", "i"],
                "after": ["a", "I"]
            }
        ],
    

    缺陷:上面说过只能把光标放在函数体内部才可以

    1. V$%d
      光标必须在函数最外层上,先用 V 选中这一行,然后把光标移动到这一行的结尾也就是 {,使用 %匹配另一侧的},最后用 d 删掉

    改键:

    • settings.json
    "vim.normalModeKeyBindings“: [
             {
                "before": ["<Leader>", "d", "f"],
                "after": ["V", "$", "%", "d"]
            },
    ]
    

    问题:
    如果函数里的参数过多换行了,那我们使用一次 V%的话只能匹配到函数参数的括号,所以我们需要再按一次%才可以全选中
    比如:

    function b(
      name,
      age,
      height
    ) {
      console.log(123)
    }
    

    使用一次 V$% 匹配到

    function b(
      name,
      age,
      height
    )
    

    相关文章

      网友评论

          本文标题:删除一个函数

          本文链接:https://www.haomeiwen.com/subject/ujwugrtx.html