vim常用快捷键

1. 前言

使用vim已经有一段时间了,虽然开始的时候非常不习惯,但是熟悉一些快捷键后,效率得到了长足的提升,写个blog记录点常用的键位,自己用来备忘的的同时,如果能帮助到你的话,想来也是极好的。🐶

还有啊,感觉没有必要一开始就记住所有的键位,慢慢提高就好了👍

2. vim常用模式(包括一些基本操作)

  • 正常模式 :
    • 打开的文件默认就处于正常模式
    • 无论处于那一种模式下,按Esc 就可以进入正常模式
    • 模式之间的切换依靠正常模式作为中转
    • 在正常模式下可以使用快捷键
  • 插入模式
    • 进入插入模式有多种方法,区别在于进入插入模式之后光标的位置

      键位作用
      i在光标的前边进入插入模式
      I ( 这是大写的 i )在当前行的行首进入插入模式
      a在光标的后面进入插入模式
      A在当前行的行尾进入插入模式
      o在当前行的下方插入一个空行,并进入插入模式
      O在当前行的上方插入一个空行,并进入插入模式
      s删除光标所在位置的字符,并进入插入模式
      S清除当前行的字符(不删除此行),并进入插入模式
  • 命令行模式
    • 正常模式下按 : 进入命令行,输入命令之后按 Enter 执行

      键位作用
      :set nu显示行号
      :set nonu取消行号
      :行号跳转至指定位置
  • 替换模式
    • R 进入替换模式

      • 此时可以输入内容,且输入的内容会替换掉光标所在位置的原字符。
      • Backspace 可以还原被替换的字符
    • 作用类似的命令

      键位作用
      r替换光标所在字符,将光标移动到需要替换的字符上,按 r 键,然后输入新的字符
      nr(n是数字)从光标处开始将n个字符全部替换
  • 可视模式
    • 进入可视模式中可以使用h,j,k,l来移动光标,进而选择一部分字符作为编辑区域,然后可以对选中的区域进行一些其他的操作(d、y)

    • 被选中字符会高亮(没这么亮的)

      键位作用
      v(小写)以字符为单位选择文本
      V(大写)以行为单位选择文本

3. 光标的移动(正常模式下)

  • 基本的移动(可以与后面的命令搭配使用,非常重要)
    键位作用
    h , j , k , l ( 小写的 L )左,下,上,右
    0 or ^将光标移动到当前行的行首
    $将光标移动到当前行的行尾
    b将光标移动到所在单词的起始处
    e将光标移动到所在单词的结尾处
    w将光标移动到所在单词的下一个单词的起始处
    gg将光标移动到文件的开头
    G将光标移动到文件的结尾

    注1:数字 + 键位 =重复多次 例如:5h表示向左移动5个字符

    注2: 行号 + G ,可直接跳转至指定位置

    注3: :行号,可直接跳转至指定位置

  • 翻屏
    键位作用
    ctrl+b上翻一屏
    ctrl+f下翻一屏
    ctrl+u上翻半屏
    ctrl+d下翻半屏
    zz将当前行移动到屏幕中央

4. 文本操作(正常模式下)

  • 撤销
    键位作用
    u撤销最后一次修改
    Ctr + r反撤销
  • 删除
    键位作用
    x删除选中的单一字符
    dh删除光标前的一个字符
    dl ( l是小写的L )删除光标选中的字符
    dj删除当前行,以及下一行
    dk删除当前行,以及上一行
    d0 or d^删除光标从当前位置( 不包括 )到该行行首的所有字符
    d$删除光标从当前位置( 包括 )到该行行尾的所有字符
    db删除光标从当前位置( 不包括 )到该单词起始处的所有字符
    de删除光标从当前位置( 包括 )到该单词结尾处的所有字符
    dw删除光标从当前位置( 包括 )到下一个单词起始处的所有字符
    dgg删除当前行到文件开头的所有字符
    dG删除当前行到文件结尾的所有字符
    dd(使用2个相同字母的,往往是常用的操作)删除当前行

    注1:d + 数字 + 键位 = 删除 范围(数字+键位 表示的范围) 例如:d5h表示删除左边5个字符,5h表示范围

    注2:上面这个注1非常重要

    注3:vim的删除操作更类似于Windows的剪切操作,被删除的内容会被放在缓冲区中,等你来粘贴它。

  • 粘贴
    键位作用
    p(小写)可以将最后一次删除的内容粘贴到光标之后;如果粘贴的内容以整行为单位,那么会粘贴到下一行
    P(大写)可以将最后一次删除的内容粘贴到光标之前;如果粘贴的内容以整行为单位,那么会粘贴到上一行
  • 拷贝
    键位作用
    yh拷贝光标前的一个字符
    yl ( l是小写的L )拷贝光标选中的字符
    yj拷贝当前行,以及下一行
    yk拷贝当前行,以及上一行
    y0 or y^拷贝光标从当前位置( 不包括 )到该行行首的所有字符
    y$拷贝光标从当前位置( 包括 )到该行行尾的所有字符
    yb拷贝光标从当前位置( 不包括 )到该单词起始处的所有字符
    ye拷贝光标从当前位置( 包括 )到该单词结尾处的所有字符
    yw拷贝光标从当前位置( 包括 )到下一个单词起始处的所有字符
    ygg拷贝当前行到文件开头的所有字符
    yG拷贝当前行到文件结尾的所有字符
    yy拷贝当前行

    注:y + 数字 + 键位 = 拷贝 范围(数字+键位 表示的范围) 例如:y5j表示拷贝当前行以及下面的5行,5j表示范围

  • 修改
    键位作用
    ch删除光标前的一个字符,并进入插入模式
    cl ( l是小写的L )删除光标选中的字符,并进入插入模式
    cj删除当前行,以及下一行,并进入插入模式
    ck删除当前行,以及上一行,并进入插入模式
    c0 or c^删除光标从当前位置( 不包括 )到该行行首的所有字符,并进入插入模式
    c$删除光标从当前位置( 包括 )到该行行尾的所有字符,并进入插入模式
    cb删除光标从当前位置( 不包括 )到该单词起始处的所有字符,并进入插入模式
    ce删除光标从当前位置( 包括 )到该单词结尾处的所有字符,并进入插入模式
    cw删除光标从当前位置( 包括 )到下一个单词起始处的所有字符,并进入插入模式
    cgg删除当前行到文件开头的所有字符,并进入插入模式
    cG删除当前行到文件结尾的所有字符,并进入插入模式
    cc删除当前行的字符,并进入插入模式

    注1:c+ 数字 + 键位 = 删除 范围(数字+键位 表示的范围) 例如:c5k表示删除当前行以及上面的5行,并进入插入模式,5k表示范围

    注2:不难发现,修改类似于删除再加上插入。

5. 排版

  • 缩进
    键位作用
    >>表示缩进
    <<表示反缩进
    注:可以使用可视模式选中多行,再对选中行同时进行缩进

6. 查找与替换

  • 查找
    键位作用
    /char查找字符char的位置(按n下一个,按N上一个),并高亮匹配的字符。( :nohl 取消高亮)

    注: 按Shift + * 查找光标所在的单词

  • 替换(old替换为new)
    键位作用
    :s/old/new使用new替换当前行中第一个old
    :s/old/new/g使用new替换当前行中所有的old
    :%s/old/new/g使用new替换文件中所有的old
    :%s/old/new/gc使用new替换文件中所有的old,但每次替换前先请示用户
    :nu1,nu2s/old/new/g使用new替换文件中nu1行到nu2行里所有的old

7. 文件操作

键位作用
:w保存
:w!若文本为只读时,强制保存
:q退出vim
:q!不保存,强制退出
:wq保存并退出
:wq!保存并强制退出 Vim 编辑器
:e!放弃所有修改,并从新载入文件的原始内容
:w filename另存为到 filename 文件;且可以与可视模式配合使用,另存为可视模式下选取的字符到filename文件
:r filename读取文件内容,并插入到当前行的下一行

8. vim中执行shell命令

  • 输入shell命令的方式
    键位作用
    :!command在不退出vim的情况下,执行shell命令command
    :r !command将shell命令command的结果插入到当前行的下一行
    :start,end !command使用shell命令command,来处理start行到end行中的内容,并用处理结果替换start行到end行中的内容

    注:command为占位符,使用时请输入具体命令,例如::!ls -al:r !date:1,4 !sort

9. 补充

  • 数字 + 键位 ,可以表示该操作执行多少次,并且还可以表示范围。

    • 如:5dd 表示删除5行(5表示执行次数)
    • 如:d5k 表示删除当前行,以及上面的5行(5k表示范围)
    • 所以记住基本的光标移动,就可以和d、y、c 搭配出很多组合,这是一个窍门。
  • Ctrl + g 查看本文件信息。

  • % 定位括号,在括号的任意一边上按 % 就可以跳转到匹配的另一半括号上。

    • 在编程中用来确认括号是否成对出现
  • 同时打开多个文件的shell命令

    键位作用
    vim -o [filename1] [filename2] [filename3]以垂直排列的方式打开多个文件(命令中的o是小写的)
    vim -O [filename1] [filename2] [filename3]以水平排列的方式打开多个文件(命令中的O是大写的)
    Ctrl + w + w将光标切换到下一个文件中
    Ctrl + w + j在垂直排列方式下,将光标切换到当前文件下面的一个文件中
    Ctrl + w + k在垂直排列方式下,将光标切换到当前文件上面的一个文件中
    Ctrl + w + h在水平排列方式下,将光标切换到当前文件左面的一个文件中
    Ctrl + w + l(小写L)在水平排列方式下,将光标切换到当前文件右面的一个文件中
    :qa退出所有打开的文件
    :qa!不保存,强制退出所有打开的文件
    :wqa保存并退出所有打开的文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值