• Vim实用技巧


    这篇文章是看《Vim实用技巧》整理的一些笔记,以及日常使用vim的小技巧的收录,保持更新

    VIM

    查找

    f{char}查找,;向前查找 ,向后查找跳转到指定字符之上. F反向查找
    t 查找字符,光标落在前一位,T 反向查找
    dt. 删除到 . 字符为止
    *查找当前光标下的单词

    移动

    hjkl 左下上右移动
    0 移动到行头
    ^ 移动到本行第一个不是blank的字符
    $ 移动到行尾
    g_ 移动到行尾最后一个不是blank的字符
    fa 移动到本行下一个为a的字符处(;跳转到下一个,,跳转到上一个)
    ta 移动光标到a字符的前一个字符处
    zz 把当前行放在屏幕中间
    zt 把当前行放在屏幕最上方
    zb 把当前行移动到当前屏幕的尾部
    gg 跳转到第一行行首
    G 跳转到最后一行
    H 跳转到当前屏幕第一行
    M 跳转到当前屏幕中间
    L 跳转到当前屏幕尾部
    % 括号匹配移动,(,{,[,需要先把光标移动到括号上
    *匹配光标当前所在的单词

    w向前一个单词,光标落在词首
    W移动的是一个词串,以空格为分隔
    b向后一个单词,光标落在词首
    e向前一个单词,光标落在词尾
    ge向后一个单词,光标落在词尾

    gk 向上移动一个屏幕行
    gj 向下移动一个屏幕行
    g^ 移动到屏幕行开头
    g$ 移动到屏幕行结尾
    一行文字占了多个可视行时比较有用

    m{letter}标记当前光标位置
    ``{letter}` 回跳到光标处

    增删改

    C删除当前字符到行尾,并进入插入模式,效果等同于 c$
    s删除当前字符并进入插入模式 等同于 cl
    S删除当前行并进入插入模式 等同于 ^C
    I光标移至行首,并进入插入模式,等同于 ^i
    A光标移至行尾,并进入插入模式,等同于 $a
    o下方插入一行 等同于 A
    O上方插入一行 等同于 ko
    daw删除一个单词
    daW删除一个单词,以空格作为单词切分
    c3w 修改3个单词
    dap删除整个段落
    gUaw把单词变为大写
    guaw把单词变为小写
    g~aw单词大小写翻转
    p 分为行模式和字符模式,取决于你复制的东西是什么

    行模式
    p粘贴到光标所在行的下一行,P粘贴到上一行,当复制多行后一般会使用P
    gP粘贴完以后,光标移动到被粘贴行的下一行的行首,行模式P粘贴相对于gP的好处是光标会在第二个复制的行上,方便直接修改

    字符模式
    p粘贴到当前字符之后,P粘贴到当前字符之前。gp 和 gP的差别是光标停留位置。gp是在被粘贴字符的最后一个字符,gP是被粘贴最后一个字符后面,当前粘贴后要做一些修改时,需要注意找到合适光标的位置

    可视模式

    V选中行
    ctrl+v 选中列
    o 调整选区的两端
    U 选中直接变为大写。普通模式下要用gU,让标签中变为大写 gUit。可视模式不太适合需要重复执行的操作
    u 选中直接变为小写
    ~翻转大小写
    v/xx 选中从当前光标到xx 字符,然后可以执行删除或其他编辑操作。通过查找进行移动/选区

    命令模式

    [range] delete [x]剪切指定行到寄存器 x 中
    [range] yank [x]复制指定行到寄存器x中
    [line] put [x]在指定行粘贴寄存器x的内容
    [range] copy {address}将指定范围内容拷贝到 {address} 之下
    [range] move {address}将指定范围内容移动到 {address} 之下
    :3,35 normal A; ex 命令对相应行执行普通模式的命令

    寄存器

    reg "0 查看寄存器0 的内容
    "0复制专用寄存器, 复制的时候既会存到无名寄存器,也会存到"0
    "_黑洞寄存器 "_diw 删除不保留副本
    设置删除而非剪切

    nnoremap d "_d
    vnoremap d "_d

    "" 匿名寄存器
    "+系统剪切板
    "*选择专用寄存器

    vim 和 系统剪贴板打通
    首先vim版本需要支持 clipboard vim --version | grep clipboard 要有 + 号
    然后设置

    set clipboard=unnamedplus

    效果是系统粘贴版的东西能直接 p粘贴, y复制的东西能直接 ctrl +v

    https://advancedweb.hu/working-with-the-system-clipboard-in-vim/
    https://stackoverflow.com/questions/30691466/what-is-difference-between-vims-clipboard-unnamed-and-unnamedplus-settings

    ideavim中设置了 set clipboard=unnamedplus是生效的,但是mac自带的vim不生效,查了下mac上一般推荐使用macvim,因为mac上的剪切板会有很多奇怪的行为
    使用MacVim,并打通剪切板,这里测试 set clipboard=unnamedplus并不work,不太清楚啥原因

    ~/.vim/vimrc
    set clipboard=unnamed
    ~/.zshrc
    alias vim='/Applications/MacVim.app/Contents/MacOS/Vim'

    粘贴系统剪贴板的东西,为了避免错位应该使用 set paste

    .重复上次操作
    q{register} 录制宏
    q 结束录制
    :reg {register} 查看宏内容
    @{register} 执行某个宏
    @@ 执行某个最近执行的宏
    10@@执行10次最近执行的宏
    串行执行宏 10@@
    并行执行宏 行模式高亮选中,再执行:normal @@ 这样是并行执行的,并且某行执行失败不会影响其他行

    文件操作

    :100,200w filename 保存某些行到新文件
    :100,200w! filename 保存某些行到新文件 覆盖文件的形式保存

    IDEA常用快捷键

    有一些是自定义的

    快捷移动和删除

    ctrl-w 删除前一个单词
    ctrl-u删除到行首
    ctrl-k删除到行尾
    ctrl-a到行首
    ctrl-e到行尾
    在使用IdeaVim后有一些快捷键会和vim冲突,需要根据自己习惯进行设置

    窗口分屏

    ctrl + 1左右切分窗口
    ctrl + 2上下切分窗口
    ctrl + 3把当前窗口移到对面
    ctrl + 4unsplit all
    option + tab 鼠标在窗口之间跳转
    cmd + shift + []在一个split内切换窗口

    IdeaVim

    在idea中使用vim,通过ideavim插件来实现,ideavim中也内置了一些vim插件,列表如下
    https://github.com/JetBrains/ideavim/wiki/Emulated-plugins
    注意需要安装3个前置插件参照https://github.com/AlexPl292/IdeaVim-EasyMotion 否则配置了map key会不生效

    常用插件
    easymotion
    argtextobj
    multiple-cursors
    surround

    Vim实用哲学

    1. 先学会盲打,再学习vim
    2. 理想的范式,一键移动,一键执行

    参考

    https://www.bilibili.com/video/BV164411P7tw ideavim插件配置
    https://www.bilibili.com/video/BV164411P7tw vim 上古神器
    参考配置
    https://www.jianshu.com/p/fd82bbed2c25
    https://github.com/einverne/dotfiles/blob/master/idea/.ideavimrc
    https://github.com/zhaohongxuan/dotfiles/blob/master/.ideavimrc

  • 相关阅读:
    电脑彻底卸载双系统中的Ubuntu ThinkPad X1 Carbon
    Mybatis-Plus如何使用
    Vue2.0 —— Vue.nextTick(this.$nextTick)源码探秘
    【状语从句练习题】复习:分词从句
    SAP BW 常用知识点
    网络安全-信息收集简介
    Git 客户端基本使用及新手常见问题
    (附源码)计算机毕业设计SSM教师信息采集系统
    JVM学习总结笔记2
    Google Earth Engine APP ——Forest Health监测APP(可下载)
  • 原文地址:https://www.cnblogs.com/Aitozi/p/16631360.html