• vim操作教程,看这一篇绝对足够啦~


    简介

    vi 是一种命令行的文本编辑器,vim 是进阶版的 vi,gvim是vim的图形化版本。

    Vim有几种基本的工作模式:

    • 一般模式(Normal Mode, 命令模式,普通模式)

    一般模式是vim默认的模式,当打开一个文件时会自动进入此模式。

    在此模式下,可以执行移动光标、滚动屏幕、删除字符、删除整行、复制、粘贴等操作。

    • 编辑模式(Insert Mode, 输入模式、插入模式)

    在普通模式下键入i 、a 、 o等就可以进入编辑模式,可以对文件进行编辑。

    • 命令行模式(Command-Line, 底行模式)

    在普通模式下,先输入冒号:,然后输入命令,最后按回车即可执行该命令。

    • 可视模式(Visual Mode)

    在普通模式下键入v、V、ctrl+v等可以进入可视模式,然后可以通过移动光标选中所需要的文本。

    此模式常用于完成文本的复制、粘贴、删除等操作。

    • EX模式

    类似于命令行模式,可以一次运行多个命令。

    这种模式个人还没有用过

    模式切换图解

    一般模式(Normal Mode, 命令模式,普通模式)

    光标移动

    上下左右

    h j k l   上、下、左、右

    单词移动

    w/W     移动到下一单词的开头

    b/B     移动到上一单词的开头

    e/E     移动到光标所在单词的末尾

    ge      将光标移动到上一个单词的词末

    nw      指定移动的次数

    注:WBE命令操作的单词是以空白字符(空格、Tab)分隔的字串

    比如字符串“str1-str2 str3-str4”,对WBE命令来说是两个单词,而对wbe命令来说则是四个单词

    行级移动

    nj/n+   光标向下移动n

    nk/n-   光标向上移动n

    nh      光标向左移动n

    nk      光标向右移动1/n

    0       移动光标到当前行行首

    $       移动光标到当前行行尾

    ^       移动光标到当前行的第一个非空字符

    ngg/nG  光标移至第n行的行首

    :n      移动光标到当前文件的第n

    n|      把光标移到第n列上

    fx      将光标移动到当前行的第一个字符x

    3fx     将光标移动到当前行的第3个字符x

    tx      将光标移动到目标字符x的前一个字符上

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

    文本块移动

    (   移到当前句子的开头

    )   移到下一个句子的开头

    {   移到当前段落的开头

    }   移到当前段落的末尾

    [[  移到当前这一节的开头

    ]]  移到下一节的开头

    屏幕级移动

    zt   将当前行的位置变成屏幕顶端

    zz   将当前行的位置变成屏幕中部

    zb   将当前行的位置变成屏幕底部

    H    把光标移到屏幕最顶端一行

    M    把光标移到屏幕中间一行

    L    把光标移到屏幕最底端一行

    nH   移到屏幕倒数第n

    nL   移到屏幕第n

    g0   移动到当前屏幕行行首

    g$   移动到当前屏幕行行尾

    g^   移动到当前屏幕行第一个非空字符处

    Ctrl + f  向下翻页

    Ctrl + b  向上翻页

    Ctrl + u  向前滚动半页

    Ctrl + d  向后滚动半页

    ctrl+e    向下滚动一行

    ctrl+y    向上滚动一行

    gg   移动到文件头部

    G    移动到文件尾部

    :$   移动到最后一行

    x%   移动到某一位置( 如要移动到文件中间,就使用50%

    标记

    m{a-z}   设定当前光标位置为标记,其中,{a-z}表示任意一个小写字母;局部标记,只用于本次编辑。

    m{A-Z}   全局标记。退出Vim 重新启动,标记仍然有效。

    `{a-z}   跳转到标记位置。其中,{a-z}表示之前设定的标记的字母。

    到达标记后,可以用Ctrl+o返回原来的位置。

    {a-z}    移动到标记行的行首

    `{0-9}   回到上[2-10]次关闭vim时最后离开的位置。

    .        移动到最近编辑的位置

          移动到最近插入的位置

    '        移动到上一次跳转前的位置

    "        移动到上一次退出文件时的位置

    [        移动到上一次修改的开始处

    ]        移动到上一次修改的结尾处

    :marks              显示所有标记。

    :delmarks a b       删除标记ab

    :delmarks a-c       删除标记abc

    :delmarks a c-f     删除标记acdef

    :delmarks!          删除当前缓冲区的所有标记。

    :help mark-motions  查看帮助

    实例:

    mx,my,mz设置三个标记

    `x,`y,`z分别跳转到这三个标记

    复制剪切粘贴

    yy    复制整行(nyy或者yny ,复制n行,n为数字);

    y^    复制当前到行头的内容;

    y$    复制当前到行尾的内容;

    yw    复制一个word nyw或者ynw,复制nwordn为数字);

    yG    复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾) 

       

    d     剪切选定块到缓冲区;

    dd    剪切整行

    d^    剪切至行首

    d$    剪切至行尾

    dw    剪切一个word

    dG    剪切至档尾 

     

    p     小写p代表粘贴到光标所在行下面

    P     大写P代表粘贴到光标所在行上面

    删除

    x/d1   删除光标所在的字符

    X/dh   删除光标左边的字符

    D      删除至行尾(包括光标所在的字符)

    dd     删除光标所在的行,也是剪切

    ndd    向下删除n

    dw     删除一个单词(从光标处到空格)

    daw    无论光标在什么位置,删除光标所在的整个单词(包括空白字符)

    diw    删除整个单词文本,但是保留空格字符不删除

    d2w    删除从当前光标开始处的2个单词

    d$     删除从光标到一行末尾的整个文本

    d0     删除从光标到一行开头的所有单词

    dgg    删除从光标到文本开头

    dG     删除从光标到文本结尾

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

    修改和替换

    ~    修改光标下字符的大小写

    xp   交换光标和下一个字符

    r    替换当前光标下的字符

    R    进入到替换模式,连续取代,直到按下ESC

    撤销操作

    u      撤销上一步的操作

    Ctrl+r 恢复上一步被撤销的操作

    重复命令

    .     重复上一个命令(不会重复撤销命令)

    退出

    ZZ    保存退出

    ZQ   不保存退出

    文件跳转

    移动光标到文件路径上,然后键入gf,可以跳转到该文件。

    键入ctrl+F6可以再跳转回原文件。

    进入编辑模式

    下面的命令都可以进入编辑模式,区别是在不同位置编辑:

    i    在当前光标的前面插入字符

    a    在当前光标的后面追加字符

    o    在当前光标的下一行行首插入字符

    I    在一行的开头添加文本

    A    在一行的结尾处添加文本

    O    在光标当前行的上一行插入文本

    s    删除当前光标处的字符并进入到插入模式

    S    删除光标所在处的行,并进入到插入模式

    cw   删除从光标处到单词结尾的文本并进入编辑模式

    cb   删除从光标处到单词开头的文本并进入编辑模式

    cc   删除一整行并进入到插入模式

    进入可视化模式

    v          字符选择,会将光标经过的地方反白选择

    V          行选择,通过上下移动光标可以选中多行

    也可以通过行级光标移动操作选择多行,如通过ngg 从当前行选中到n

    Ctrl+v     矩形区域选择

    o         让光标置于被选中文本的另一头,这样就可以通过控制光标移动来决定被选文本将从何处开始,再按“o”又会让光标置于被选文本的末端。

    O         当进行矩形文本块内容的选择时,有4个角都可以改变。“o”只会把光标带到对角的位置去,使用“O”命令可以让光标在同一行的左右两个角之间移动。

    编辑模式(Insert Mode, 输入模式、插入模式)

    ctrl+n (ctrl+p),显示历史输入过的代码,可以自动补全;

    命令行模式(Command-Line, 底行模式)

    退出

    :q   退出

    :q!  强制退出,丢弃做出的修改

    :wq  保存退出

    :x   保存退出

    :e!  命令放弃所有修改并重新载入该文件的原始内容

    查找

    /string   正向查找

    ?string   反向查找

    替换

    :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

    可视模式(Visual Mode)

    可视模式是选中一块区域进行操作,包括删除,替换,复制,粘贴,改变大小写等。

    进入可视化模式:

    v          字符选择,会将光标经过的地方反白选择

    V          行选择,通过上下移动光标可以选中多行

    也可以通过行级光标移动操作选择多行,如通过ngg 从当前行选中到n

    Ctrl+v     矩形区域选择

    o         让光标置于被选中文本的另一头,这样就可以通过控制光标移动来决定被选文本将从何处开始,再按“o”又会让光标置于被选文本的末端。

    O         当进行矩形文本块内容的选择时,有4个角都可以改变。“o”只会把光标带到对角的位置去,使用“O”命令可以让光标在同一行的左右两个角之间移动。

    操作:

    d          删除/剪切反白区域

    D          删除反白区域经过的行

    y          复制反白区域

    p          将复制的反白区块,在光标所在处粘贴

    多列插入    选中多列后键入shift+i,编辑,最后键入ESC

    多列替换    选中多列后键入s,编辑,最后键入ESC

    u          将反白部分的字符全部改为小写

    U          将反白部分的字符全部改为大写

    >          将选中部分右移一个 tab 键规定的长度

    <          将选中部分左移一个 tab 键规定的长度

    VIM与系统剪贴板的复制粘贴

    在同一个vim文件内部进行复制和粘贴命令分别是y和p;

    如果要复制外部数据到vim中或者将vim中的数据复制到外部,这两个命令就无效了。

    除了使用鼠标外,还可以使用下面的命令:

    向外复制: 先通过visual模式选中内容,然后执行 "+y将vim数据复制到系统剪贴板,在vim外执行Ctrl v即可完成数据粘贴。

    从外粘贴:在normal模式下执行"*p(不是命令行模式,直接按这三个键就行)

    可以在vimrc中设置快捷键:

    vnoremap  "+y   "支持在Visual模式下,通过Ctrl+y复制到系统剪切板

    nnoremap  "*p   "支持在normal模式下,通过Ctrl+p粘贴系统剪切板

    注意Ctrl y和Ctrl p在 vim 中有特殊含义,使用以上设置后会覆盖默认设置。

    标签页(tab)、窗口(window)和缓冲区(buffer)

    缩进设置

    按键重映射

    修改配色方案

    设置代码折叠

    给begin end 配对

    vimrc通用配置说明

    插件列表

    使用vim-plug离线安装vim插件

    使用vundle在线安装vim插件

  • 相关阅读:
    IO流练习 二
    活字格性能优化技巧(2)-如何在大规模数据量的场景下提升数据访问效率
    npm和package.json
    archery集成ldap无法登陆
    【Vue】Vue的部分语法规则
    EasyNLP中文文图生成模型带你秒变艺术家
    2022/9/13总结
    Java 数据结构总结
    Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)
    Linux 命令(164)—— who 命令
  • 原文地址:https://blog.csdn.net/weixin_42639919/article/details/133626489