• 常用vim操作


    1. 查看

    1.1 移动光标

    • w/W, b/B移动到下一单词、上一单词的开头,e/E移动到下一单词的结尾,大写空格分割,小写非字母分割
    • $, ^行尾 行首,0行间第一个字符
    • Ctrl+f/b翻页,Ctrl+d/u翻半页,Ctrl+e/y上下滚动一行
    • 数字+方向键移动多次(数字+cmd执行多次cmd)
    • gg, G文件首尾
    • 50%移动到文件50%的位置,:50移动到第50行,.表示当前行号,$表示最后一行的行号
    • /pattern正则匹配查找,n/N上下跳转
    • 光标移动到括号上时,使用%进行括号配对

    1.2 文件编码

    • :set fileencoding查看当前文件编码
    • :e ++enc=utf-8使用utf-8重新打开文件

    1.3 显示

    • :set nu, :set nonu显示/不显示行号,在~/.vimrc中设置set nu持久化设置
    • Ctrl+G显示当前状态

    1.4 分屏

    1. 打开
      • vim -O file1 file2 打开多个文本(-O垂直分屏,-o水平分屏)
      • :vs file在当前vim中打开file的垂直分屏,:sp file在当前vim中打开file的水平分屏
      • Ctrl+w v/s复制当前屏为相同垂直分屏或水平分屏
      • :new newfile在vim中创建新文本并创建分屏
    2. 切换
      • Ctrl+w+w切换下一个
      • Ctrl+w+h/j/k/l,hl左右,jk上下
    3. 改变位置
      • Ctrl+w Shift+h/j/k/l,当前屏左上下右移动
    4. 改变大小
      • Ctrl+w Shift+|水平加宽,Ctrl+w Shift+_垂直加宽,Ctrl+w =重置大小
      • Ctrl+w n +增加高度n,Ctrl+w n -减少高度n,Ctrl+w n Shift+<界线左移n,Ctrl+w n Shift+>界线右移n
    5. 关闭
      • Ctrl+w c关闭当前分屏
      • Ctrl+w o只保留当前分屏

    2. 编辑

    2.1 进入编辑模式

    • i光标处插入,a光标右边插入,o,O下面、上面另起一行,I,A行首尾插入

    2.2 简单编辑

    2.2.1 选中:v

    • v, V, Ctrl+v字符、行、块选中
    • 可以结合w/W, b/B, e/E
    • 结合text object

    2.2.2 text object

    ​ 包括范围和文本对象,可以结合各种操作使用

    • 范围:i:inner,a:around
    • 文本对象:w:word,s:sentence,各种括号引号

    2.2.3 删除和剪切:d

    • 删除将内容复制到匿名寄存器中(即剪切),可以使用黑洞寄存器"_避免剪切内容

      • 不剪切的删除(将删除内容复制到黑洞寄存器中,相当于不保存):"_cmd,其中cmd是删除相关的命令,eg:"_x

      • 使用键盘映射实现更简便的写法:

        "在~/.vimrc中,将删除映射为不剪切的删除,剪切映射为删除命令前加前缀"
        
        let mapleader = ","
        nnoremap x "_x
        nnoremap X "_X
        nnoremap d "_d
        nnoremap dd "_dd
        nnoremap D "_D
        vnoremap d "_d
        vnoremap dd "_dd
        
        "是前缀,通过mapleader设定"
        nnoremap x ""x
        nnoremap X ""X
        nnoremap d ""d
        nnoremap dd ""dd
        nnoremap D ""D
        vnoremap d ""d
        vnoremap dd ""dd
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19

        ~/.vimrc中输入:source ~/.vimrc使设定生效

        在vim中输入:map查看当前的键盘映射

    • D, d$删除光标至行尾,dd删除当前行

    • x删除当前字符,daw删除单词及后面的空格,diw删除单词,结合text object

    • :m,nd删除m-n行

    • s删除字符并插入,S清空行并插入

    • 先选中,然后x删除选中部分,D删除选中行

    2.2.4 复制:y

    • yy复制当前行,:m,ny复制m-n行到剪贴板
    • 结合text object

    2.2.5 粘贴:p

    • p,P粘贴到光标处/后
    • m,ncok复制m-n行到k行下一行
    • m,nmk移动m-n行到k行下一行

    2.2.6 搜索

    • /pattern匹配,n, N下一个上一个匹配对象
    • *, #匹配下一个,上一个相同的单词

    2.2.7 替换:c

    • 结合text object
    • r单字符替换,R字符串替换
    • [range]s/pattern/replace/[flags]
      • [range]%(全文),.m,nm
      • [flags]g全局替换,c替换前询问,不写默认替换首个

    2.2.8 撤销重做

    • u撤销
    • Ctrl+r重做

    2.2.9 批量注释

    1. 方法一:
      • 注释:Ctrl+v选择,Shift+i进入编辑模式,输入插入的字符比如#,再两次Esc
      • 取消注释:Ctrl+v选择,xd删除(就是选择然后删除)
    2. 方法二:正则替换
      • 注释::m,ns/^/#/g
      • 取消注释::m,ns/^#//g(替换成空白)

    2.2.10 其他

    • J将当前行下面的行合并到当前行

    3. 其他

    3.1 优质Blog

  • 相关阅读:
    WINDOWS下对NIGNX日志文件进行限制
    JDK17 ReentrantLock 简述 lock()、unLock()
    如何保证电子产品可靠性设计?PCB板可制造性设计需要引起广大工程师的注意!
    Ubuntu18.04安装ROS系统+turtle测试
    【VSCode】自动生成Jupyter(ipynb)文件的目录
    【论文阅读】Combinatorial Benders’ Cuts for the Strip Packing Problem
    一文掌握Vue3:深度解读Vue3新特性、Vue2与Vue3核心差异以及Vue2到Vue3转型迭代迁移重点梳理与实战
    Redis入门
    基于PLC控制四自由度气动式机械手设计
    xsser工具使用教程
  • 原文地址:https://blog.csdn.net/weixin_44343319/article/details/126457572