• VIM 备忘


    增加文本:

    • a/A(append)
    • i/I(insert)
    • o/O(open a line)

    删除:

    • d(delete)
    • dw(delete word)
    • dd(删除一行)
    • x(删除一个字符)
    • dty(delete to y)删除到y字母以前

    修改:

    • c(change)
    • ciw(change inner word)
    • ct):修改到右括号
    • ci":修改引号内的
    • gcc(go comment):注释一行

    查:

    • fs:本行中搜索's',;查找下一个

    • Fs:反向查找's'

    • /name:查找'name'单词

    定位:

    • 0:回到开头
    • $:去到结尾
    • w(word):移动到下一个单词开头
    • b(back word):移动到上一个单词
    • e(end):移动到单词最后一个字母
    • :18:移动到18行
    • 14G:移动到14行
    • gg:文件开头
    • G:文件结尾
    • ctrl+f(forward):上一页
    • ctrl+u(upward):下一页
    • ctrl+o(old):光标退回上一个位置
    • ctrl+i:光标前进到下一个位置
    • zz:将当前行置于页面中间
    • %:跳转到与之匹配的另一个括号
    • *:锁定变量进行搜索,按n下一个,按N上一个。

    EasyMotion 文件内快速跳转

    • ,,j 按下后,会在每一行的行首高亮且有一个字母标在高亮处,这时输入指定字母就可以跳过去了,这个可以说是起飞的关键之一,必须要熟练掌握
    • ,,k 上面是向下搜索,这个是向上,其他都一样
    • ,,w,,j,只不过是单词级的向后搜索
    • ,,b,,k, 只不过是单词级的向前搜索(,,w ,,b 不如行级好用,因为太花了,我们可以用行级 Jump 到指定行,再用 f 过去,或者按几个 w 也可以,如果靠近行尾,可以先按$到行尾再按几个 b,方法很多。

    对一个单词进行操作

    这里先说两个概念,操作符(operator)和动作命令(motion), 操作符就是 d(delete), c(change), y(yank) 等等,动作命令是iw(in word), aw(a word)这些,可以通过 操作符 + 动作命令的方式,组合出千变万化的操作出来,帮助我们快速移动、修改等等。

    1 操作符(Operators)

    操作符 功能
    c change (先删除再进入插入模式)
    d delete
    y yank into register (does not change the text)
    ~ swap case (转换大小写)
    gu make lowercase (转为小写)
    gU make uppercase (转为大写)
    > shift right (右移)
    < shift left (左移)

    2 动作命令(Motions)

    动作命令 功能
    f{char} find, 行内搜索一个字符
    t{char} till, 功能类型 f{chat}, 但是是在这个搜索到的字符前停下,意思是到这个字符之前,很常用的motion
    gg 跳到行首
    G 跳到行尾
    w 移到下个单词的第一个字符
    b 移到上个单词的第一个字符
    e 移到单词最后一个字符
    ge 上个单词的最后一个字符
    aw “a word”, 选择一整个单词,包括它边上的空格
    iw in word, 选择一整个单词,不包括空格

    3 举例:

    • diw, delete in word, 删除一个单词,只删除单词本身,不会旁边的空格
    • daw, delete a word, 删除一个单词,并删除旁边的一个空格(至于是左还是右边空格,Vim 会根据上下文自己判断,非常智能)
    • d 是删除, diw 就是删除一个单词
    • v 是进入 visual 模式的,如果用 viw, 就表示选中一个单词
    • y 是复制(yank), yiw 表示复制一个单词
    • gu 是变成小写,guiw 就是让一个单词变成小写
    • gU 是变成大写, gUiw 就是让一个单词变成大写

    把一个单词改成另一个(通过复制)

    比如有下面一段代码:

    local _hello = true
    function test()
        print(_world)
    end
    -- 用复制的方式把 _world 改成 _hello
    12345
    

    这个问题看起来很简单,但实际上用起来后就会发现并不简单,我们用鼠标时的操作逻辑是下面这样的:

    • 双击 _hello,Ctrl+C 复制
    • 双击 _world,Ctrl+V 粘贴

    想象中的 Vim 操作逻辑是下面这样的:

    • 光标移到 _hello, yiw 复制
    • 光标移到 _world, diw 删除,再 p 粘贴

    这时你会发现,咦,贴出来的还是 _world, 而不是期望中的 _hello, 这是因为 Vim 里的删除,实际上是剪切,会把删除的东西放到“剪切板”里,所以我们不能这样操作,而应像下面这样操作:

    • 光标移到 _hello, yiw 复制
    • 光标移到 _world, viw 选中,再 p 粘贴

    这个操作是目前的最优解。

    回到上一个编辑点

    • ctrl+o, 回到上一个编辑点
    • ctrl+i, 前进到下一个编辑点,和上面的相反方向
    • gi, 回到上一个进入插入模式的地方,并进入插入模式,这个在写代码时写到一半想看一下其他地方的代码,看完再按下 gi 回去,当然也可以 ctrl+o 回去。

    分栏

    • :vs, 创建一个竖向分栏
    • :sp, 创建一个横向分栏

    在创建多个分栏后,怎样在分栏之间移动?总不能用鼠标吧!当然不需要,下面就是移动分栏的方法:

    • 先按 ctrl+w 再按 h, 移到左边一个分栏
    • 先按 ctrl+w 再按 l, 移到右边一个分栏
    • 先按 ctrl+w 再按 j, 移到下边一个分栏
    • 先按 ctrl+w 再按 k, 移到上边一个分栏

    插件管理:

    • :source ~/.vimrc:重新加载

    • :PlugStatus:检查状态

    • :PlugInstall:安装

    • :PlugUpdate:更新插件

    • :PlugClean:删除一个插件

    • :PlugUpgrade:升级vim-plug

  • 相关阅读:
    【学习笔记】QT下载地址
    【学习笔记】激活码方式注册的实现原理述
    【学习笔记】Inputs on an Embedded Linux Device
    【学习笔记】TSlib校准原理
    【学习笔记】13.5 使用者的特殊 shell 与 PAM 模块
    【学习笔记】Linux GDM
    【学习笔记】MC.exe 生成H和RC文件
    【工具】时间差计算器
    【学习笔记】Android 学习(一)
    【学习笔记】tensor flow 2.4 moist 数据下载错误
  • 原文地址:https://www.cnblogs.com/chalan630/p/14074471.html
Copyright © 2020-2023  润新知