Vim

作者: zhYx_ | 来源:发表于2022-05-16 15:17 被阅读0次

    简介

    • Vim是Linux环境下一款功能强大、高度可定制的文本编辑工具,类似于Windows下面的source insight、sublime、notepad.

    • vi是visual interface的缩写,即可视化接口.vim即VI IMproved,在vi的基础上做了很多改进,如:增加了多级撤销、多窗口操作、崩溃后也可以恢复、增加了稳定性、关键字自动补全、上下文自动补全等功能.

    常用命令

    # 更新软件包
    sudo apt update
    
    # 卸载 vim
    sudo apt-get remove --purge vim
    
    # 安装 vim
    sudo apt-get install vim-gtk
    

    vim 配置文件

    • vim编辑器打开配置文件:
    sudo vim /etc/vim/vimrc
    
    • 配置文件中添加内容:
    # 在左侧行号
    set nu
    
    # tab 长度设置为 4
    set tabstop=4
    
    # 覆盖文件时不备份
    set nobackup
    
    # 突出显示当前行
    set cursorline
    
    # 在右下角显示光标位置的状态行
    set ruler
    
    # 自动缩进
    set autoindent
    

    工作模式

    vim共有6种工作模式,各种工作模式可以通过不同的键进行切换,统一使用ESC键返回到普通模式.

    • 普通模式:使用vim打开一个文件时默认模式(也叫命令模式),允许用户通过各种命令浏览代码、滚屏等操作.

    • 插入模式:也可以叫做编辑模式,在普通模式下敲击 i 、a 或 o 就进入插入模式,允许用户通过键盘输入、编辑.

    • 命令行模式:在普通模式下先输入冒号:,接着输入命令,就可以通过配置命令对vim进行配置了.如:改变颜色主题、显示行号等,这些配置命令也可以保存到 /etc/vim/vimrc 配置文件中,每次打开默认配置执行.

    • 可视化模式:在普通模式下敲击前盘上的 v 键,就进入可视化模式.然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作.

    • 替换模式:如果我们想修改某个字符,不需要先进入插入模式-删除-然后再输入新的字符,直接在普通模式下敲击R键就可以替换.

    • EX模式:类似于命令行模式,可以一次运行多个命令.

    常用命令

    • 光标移动命令

    单个字符移动:
    h: 向左移动
    l: 向右移动
    j: 向下移动
    k: 向上移动
    xh: 向左移动x个字符距离

    单词移动:
    w: 将光标移动到下一个单词的开头
    b: 将光标移动到前一个单词的开头
    e: 将光标移动到下一个单词的词末
    E: 移动到单词的结尾(忽略标点符号)
    ge: 将光标移动到上一个单词的词末
    2w: 指定移动的次数

    行移动:
    $: 将光标移动到当前行的行尾
    0: 将光标移动到当前行的行首
    ^: 将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置)
    2|: 移到当前行的第2列
    fx: 将光标移动到当前行的第一个字符x上
    3fx: 将光标移动到航前行的第3个字符x上
    tx: 将光标移动到目标字符x的前一个字符上
    fx和tx可以通过;和,进行重复移动,一个是正向重复,一个是反向重复
    %: 用于符号间的移动,它会在一对()、[]、{}之间跳跃

    文本块移动:
    (: 移到当前句子的开头
    ): 移到下一个句子的开头
    {: 移到当前一段的开头
    }: 移到下一段的开头
    [[: 移到当前这一节的开头
    ]]: 移到下一节的开头

    在屏幕中移动
    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: 在一行的开头添加文本
    A: 在一行的结尾处添加文本
    O: 在光标当前行的上一行插入文本
    s: 删除当前光标处的字符并进入到插入模式
    S: 删除光标所在处的行,并进入到插入模式
    u: 撤销修改

    • 文本删除操作

    字符删除
    x: 删除当前光标所在处的字符
    X: 删除当前光标左边的字符

    单词删除
    dw: 删除一个单词(从光标处到空格)
    daw: 无论光标在什么位置,删除光标所在的整个单词(包括空白字符)
    diw: 删除整个单词文本,但是保留空格字符不删除
    d2w: 删除从当前光标开始处的2个单词
    d$: 删除从光标到一行末尾的整个文本
    d0: 删除从光标到一行开头的所有单词
    dl: 删除当前光标处的字符=x
    dh: 删除当前光标左边的字符=X

    行删除
    dd: 删除当前光标处的一整行=D
    5dd: 删除从光标开始处的5行代码
    dgg: 删除从光标到文本开头
    dG: 删除从光标到文本结尾

    行合并
    J: 删除一个分行符,将当前行与下一行合并

    • 文本复制、剪切、粘贴

    y: 复制,p:粘贴
    yw: 复制一个单词
    y2w: 复制2个单词
    y$: 复制从当前光标到行结尾的所有单词
    y0: 复制从当前光标到行首的所有单词
    yy: 复制一整行
    2yy: 复制从当前光标所在行开始的2行

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

    • 文本的修改与替换

    cw: 删除从光标处到单词结尾的文本并进入到插入模式
    cb: 删除从光标处到单词开头的文本并进入到插入模式
    cc: 删除一整行并进入到插入模式
    ~: 修改光标下字符的大小写
    r: 替换当前光标下的字符
    R: 进入到替换模式
    xp: 交换光标和下一个字符

    • 文本的查找与替换

    /string 正向查找
    ?string 反向查找

    设置高亮显示
    :set hls
    *按键将当前光标处的单词高亮显示,使用n浏览下一个查找高亮的结果
    :s/old/new 将当前行的第一个字符串old替换为new
    :s/old/new/g 将当前行的所有字符串old替换为new
    :90s/old/new/g 将指定行的所有字符串old替换为new
    :90,93s/old/new/g 将指定范围的行的所有字符串old替换为new
    :%s/old/new/g 将文本中所有的字符串old替换为new
    :%s/old/new/gc 依次替换每个字符串关键字
    :%s/^struct/int/g 将所有以struct开头的字符串替换为int

    • 撤销修改、重做与保存

    u: 撤销上一步的操作。
    Ctrl+r: 将原来的插销重做一遍
    :U 恢复一整行原来的面貌(文件打开时的文本状态)
    :q 若文件没有修改,直接退出
    :q! 文件已经被修改,放弃修改退出
    :wq 文件已经被修改,保存修改并退出

    :e! 放弃修改,重新回到文件打开时的状态

    • 编辑多个文件

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

    :buffers 查看缓冲区列表==ls
    :buffer N 根据缓冲区列表的编号跳转到指定缓冲区
    :bnext/bprev 遍历缓冲区列表
    :bfirst/blast 分别调到缓冲区列表的开头和结尾
    :write 将缓冲区的修改保存到磁盘上
    :edit! e! 放弃缓冲区的修改,恢复到文件打开时的状态
    :edit file 编辑另一个文件
    :wnext 保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件
    :set autowrite

    • 标签页与折叠栏

    标签页的新建: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 = 所有的窗口设置相同的尺寸
    :resize n将当前窗口尺寸调整为N行

    关闭窗口
    close: 关闭一个窗口
    qall: 退出所有窗口
    qall!: 放弃修改,退出所有窗口
    wqall: 保存并退出所有窗口
    wall: 保存所有窗口

    附:

    vim键盘命令图

    相关文章

      网友评论

          本文标题:Vim

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