美文网首页
Vim常用命令

Vim常用命令

作者: AnyunBo | 来源:发表于2021-06-09 15:55 被阅读0次

    Vim官网:*
    http://www.vim.org/

    Vim文档:

    Vim简介

    • Vim(Vi[Improved])编辑器是功能强大的跨平台文本文件编辑工具,继承自Unix系统Vi编辑器,支持Linux/Mac OS X/Windows系统,利用它可以建立、修改文本文件
    • Vim是从 vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
    • vim的设计理念是命令的组合

    Vim的6种基本模式

    1. 普通模式
      使用vim打开一个文件时默认模式。在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)
    2. 插入模式
      也可以叫做编辑模式,在普通模式下敲击iao 就进入插入模式,允许用户通过键盘输入、编辑。在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一只保持这个模式。在插入模式中,可以按ESC键回到普通模式
    3. 可视模式
      在普通模式下敲击前盘上的v键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的赋值、粘贴、删除等操作。这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的“文本对象”也能和移动命令一样用在这个模式中
    4. 选择模式
      这个模式和无模式编辑器的行为比较相似(Windows标准文本控制的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式
    5. 命令行模式
      在命令行模式可以输入会被解释成并执行的文本。在执行命令后,Vim返回到命令模式之前的模式,通常是普通模式
    6. Ex模式
      这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。

    这6中模式我们常用到就是普通模式插入模式命令行模式

    Vim键盘图

    Vim键盘图.jpg

    模式的切换

    在刚进入Vim时,便进入了普通模式,在普通模式中可以按i(插入)或者a(附加)进入插入模式,在普通模式中按:进入命令行模式;在命令行模式中和插入模式中按ESC返回到普通模式。如图:

    vim工作模式.png

    常用命令及说明

    • 单个字符
    命令 说明
    h 移动
    l(小写字母L) 移动
    j 移动
    k 移动
    xh 移动x个字符距离
    • 单词移动
    命令 说明
    w 将光标移动到下一个单词的开头
    b 将光标移动到前一个单词的开头
    e 将光标移动到下一个单词的词末
    E 移动到单词的结尾(忽略标点符号)
    ge 将光标移动到上一个单词的词末
    2w 指定移动的次数
    • 行移动
    命令 说明
    $ 将光标移动到当前行的行尾
    0 将光标移动到当前行的行首
    ^ 将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置)
    2| 移到当前行的第2
    fx 将光标移动到当前行的第一个字符x
    3fx 将光标移动到航前行的第3个字符x
    tx 将光标移动到目标字符x的前一个字符上
    % 用于符号间的移动,它会在一对()[]{}之间跳跃

    fxtx 可以通过 ;, 进行重复移动,一个是正向重复,一个是反向重复

    • 文本块移动
    命令 说明
    ( 移到当前句子的开头
    ) 移到下一个句子的开头
    { 移到当前一段的开头
    } 移到下一段的开头
    [[ 移到当前这一节的开头
    ]] 移到下一节的开头
    • 在屏幕中移动
    命令 说明
    xG 跳转到指定的第x行,G移动到文件按末尾
    ``(2次单引号) 返回到跳转前的位置
    gg 移动到文件开头
    x% 移动到文件中间,就使用50%
    H 移动到home
    M 移动到屏幕中间
    L 移动到一屏末尾
    ctrl+G 查看当前的位置状态
    • 滚屏与跳转
    命令 说明
    ctrl+u/ctrl+d 半屏滚动
    ctrl+f/ctrl+b 全屏滚动
    • 定位光标的位置
    命令 说明
    zz 将光标置于屏幕的中间
    zt 将光标移动到屏幕的顶部
    zb 将光标移动到屏幕的底部
    • 设置跳转标记
    命令 说明
    mx , my , mz 设置三个位置
    x , y , z 跳转到设置
    • 文本插入操作
    命令 说明
    i 在当前光标的前面插入字符
    a 在当前光标的后面追加字符
    o 在当前光标的下一行行首插入字符
    I(大写字母i) 在一行的开头添加文本
    A 在一行的结尾处添加文本
    O 在光标当前行的上一行插入文本
    s 删除当前光标处的字符并进入到插入模式
    S 删除光标所在处的行,并进入到插入模式
    u 撤销修改
    • 文本删除操作
    命令 说明
    x 删除当前光标所在处的字符
    3x 删除3个连续字符,以此类推
    X 删除当前光标左边的字符
    Delete x
    dw 删除一个单词(从光标处到空格)
    daw 无论光标在什么位置,删除光标所在的整个单词(包括空白字符)
    diw 删除整个单词文本,但是保留空格字符不删除
    d2w 删除从当前光标开始处的2个单词
    d$D 删除从光标到一行末尾的整个文本
    d0(字母d和数字0) 删除从光标到一行开头的所有单词
    dl(字母d和小写字母L) 删除当前光标处的字符(等同于x)
    dh 删除当前光标左边的字符(等同于X)
    dd 删除当前光标处的一整行(等同于D)
    5dd 删除从光标开始处的5行代码
    d^ 删除至行首
    dgg 删除从光标到文本开头
    dG 删除从光标到文本结尾
    d1G 删除至文档首部
    J 删除一个分行符,将当前行与下一行合并
    • 文本复制、剪切与粘贴
    命令 说明
    y 复制
    y0(数字0) 复制从当前光标到行首的所有单词
    yy 复制一整行
    3yy 复制从当前光标所在行开始的3
    y^ 复制至行首,不含光标所在处字符
    y$ 复制从当前光标到行结尾的所有单词
    yw 复制一个单词
    y2w 复制2个单词
    yG 复制至文本末
    y1G 复制至文本开头
    p 粘贴到光标后
    P 粘贴到光标前
    ddp 剪切并粘贴

    复制文本块
    1.首先进入visual(可视)模式:v
    2.移动光标选择文本
    3.复制与粘贴的操作

    • 文本的修改与替换
    命令 说明
    cw 删除从光标处到单词结尾的文本并进入到插入模式
    cb 删除从光标处到单词开头的文本并进入到插入模式
    cc 删除一整行并进入到插入模式
    ~ 修改光标下字符的大小写
    r 替换当前光标下的字符
    R 进入到替换模式,连续替换,直到按下Esc
    xp 交换光标和下一个字符
    r+<待替换字母> 将游标所在字母替换为指定字母
    C(大写) 替换游标以后至行末
    • 文本的查找与替换
    命令 说明
    /string 正向查找
    ?string 反向查找
    f<字母> 向后搜索<字母>并跳转到第一个匹配的位置
    F<字母> 向前搜索<字母>并跳转到第一个匹配的位置
    t<字母> 向后搜索<字母>并跳转到第一个匹配位置之前的字母
    T<字母> 向前搜索<字母>并跳转到第一个匹配位置之后的字母
    :s/old/new 将当前行的第一个字符串old替换为new
    :s/old/new/g 将当前行的所有字符串old替换为new
    :90s/old/new/g(90指定的行数) 将指定行的所有字符串old替换为new
    :90,93s/old/new/g(90,93指定的行数) 将指定范围的行的所有字符串old替换为new
    :%s/old/new/g 将文本中所有的字符串old替换为new
    :%s/old/new/gc 依次替换每个字符串关键字
    :%s/^struct/int/g 将所有以struct开头的字符串替换为int

    设置高亮显示
    :set hls
    *按键将当前光标处的单词高亮显示,使用n浏览下一个查找高亮的结果

    • 撤销修改、重做与保存
    命令 说明
    u 撤销上一步的操作
    Ctrl+r 将原来的插销重做一遍
    U 恢复一整行原来的面貌(文件打开时的文本状态)
    :q 若文件没有修改,直接退出
    :q! 文件已经被修改,放弃修改退出,不保存
    :wq 文件已经被修改,保存修改并退出
    :wq! 强制保存并退出
    :w文件路径 另存为
    :saveas 文件路径 另存为
    :x 保存并退出
    shift+zz 退出vim
    • 文本格式
    命令 说明
    >> 整行向右缩进
    << 整行向左回退
    /+<需要查找的字符串>+回车 向下查找(进入查找之后,输入nN可以继续查找,n是查找下一个内容,N查找上一个内容,命令行模式下输入noh回车可取消搜索)
    ?+<需要查找的字符串>+回车 向上查找(进入查找之后,输入nN可以继续查找,n是查找下一个内容,N查找上一个内容,命令行模式下输入noh回车可取消搜索)
    \* 寻找游标所在处的单词
    :set nu 显示行号
    :set shiftwidth=10 设置缩进为10个字符,以此类推(输入Esc回到普通模式,再次尝试>>看缩进是否变化)
    :ce(center) 本行内容居中
    :ri(right) 本行内容居右
    :le(left) 本行内容居左
    :== 当前行自动缩进
    :n== (n是自然数)表示自动缩进从当前行起的下面n
    • 编辑多个文件

    • 文件和缓冲区的区别:
      文件是保存在磁盘上的,而打开的文件的文件是在内存中,在内存中有一个缓冲区,用来存放打开的文件。vim每次打开文件时都会创建一个缓冲区,vim支持打开多个文件

    命令 说明
    :buffers 查看缓冲区列表(等同于(小写字母L)ls)
    :buffer N 根据缓冲区列表的编号跳转到指定缓冲区
    :bnext/bprev 遍历缓冲区列表
    :bfirst/blast 分别调到缓冲区列表的开头和结尾
    :write 将缓冲区的修改保存到磁盘上
    :edit! e! 放弃缓冲区的修改,恢复到文件打开时的状态
    :edit file 编辑另一个文件
    :wnext 保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件
    • 标签页与折叠栏
    命令 说明
    tabedit file / tab split 标签页的新建
    tabn / tabp 标签页的切换
    gt / gT 按键
    tabclose 标签页的关闭
    tabonly 关闭当前的标签页
    zf200G 将光标和200行之间的代码折叠起来
    za 打开和关闭折叠
    zr / zm 一层一层地打开和关闭折叠
    zR / zM 分别打开和关闭所有的折叠
    zj 跳转到下一个折叠处
    zk 跳转到上一个折叠处
    zd 删除光标下的折叠
    zD 删除光标下的折叠以及嵌套的折叠
    zE 删除所有的折叠标签

    创建的折叠当退出vim之后就失效了

    • 多窗口操作
    命令 说明
    split / vsplit fileName 分割窗口
    ctrl+w hjkl
    ctrl+w w
    窗口间跳转
    ctrl+w HJKL 移动窗口
    ctrl+w +/- 调整窗口的高度
    ctrl+w </> 调整窗口的宽度
    ctrl+w = 所有的窗口设置相同的尺寸
    close 关闭一个窗口
    qall 退出所有窗口
    qall! 放弃修改,退出所有窗口
    wqall 保存并退出所有窗口
    wall 保存所有窗口

    相关文章

      网友评论

          本文标题:Vim常用命令

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