美文网首页Linux我用 LinuxLinux学习之路
Vim的使用技巧---世上最好用的编辑器

Vim的使用技巧---世上最好用的编辑器

作者: olaH | 来源:发表于2018-08-08 21:10 被阅读67次

    愿把每一件事做好

    vim是一个模式化的编辑器,它一共有三种模式,编辑模式(命令模式)、输入模式、末行模式。
    三种模式之间的切换如下图:


    vim.png

    从图中可以看出,可以在编辑模式下可以随意切换到输入模式和末行模式,而输入模式和末行模式只能切换回编辑模式(命令模式)。

    编辑模式(命令模式):

    当使用vim编辑文件时默认是在编辑模式下,按zz可以从编辑模式下退出vim,编辑模式的操作如下:

    Motion Command

    j :光标向下移动,一次移动一行。
    k:光标向上移动,一次移动一行。
    h:光标向左移动。
    l:光标向右移动。
    w:将光标移至下一个单词的词首
    e:将光标移至当前或下一个单词的词尾
    b:将光标移至当前或前一个单词的词首
    0:将光标移至行首(绝对行首)
    ^:将光标移至行首的第一个非空白字符
    $:绝对行尾
    G:将光标移至最后一行
    gg:将光标移至第一行
    Ctrl+f:向下翻一页
    Ctrl+b:向上翻一页
    Ctrl+d:向下翻半页
    Ctrl+u:向上翻半页

    数字+[motion] 可以实现更快捷的跳转例如:

    #h:光标向左移动#位
    #j :光标向下移动#行
    #k:光标向上移动#行
    #l:光标向右移动#行
    #w:自光标所在位置单词起,向后移动到第#个单词的词首
    #e:自光标所在位置单词起,向后移动到第#个单词的词尾
    #b:自光标所在位置单词起,向前移动到第#个单词的词尾
    #G:将光标移至第#行

    Edit Command

    i:在当前光标所在字符的前面,转为输入模式
    a:在当前光标所在字符的后面,转为输入模式
    o:在当前光标所在行的下方,新建一行,并转为输入模式
    I:在当前光标所在行的行首,转换为输入模式
    A:在当前光标所在行的行尾,转换为输入模式
    O:在当前光标所在行的上方,新建一行,并转为输入模式
    .:重复前一次编辑操作
    x:删除光标处字符
    r:替换光标处字符
    R:替换模式,相当于windows的insert模式
    dd:删除一行
    yy:复制一行
    p:将此前删除或者复制了的文字粘贴到当前光标上一行。
    P:将此前删除或者复制了的文字粘贴到当前光标下一行。
    c:同d命令,只是删除后进入输入模式。
    u:撤销上一次操作
    Ctrl+r:撤销上一次撤销
    v:可视化操作,按字符选取
    V:可视化操作,按行选取

    数字+[edit]+[motion] 可以实现更快捷的操作例如:

    #x:删除自光标起向后第#个字符。
    #dw:删除自光标起第#个单词,光标位于第#+1个单词词首
    #de:删除自光标起第#个单词,光标位于第#个单词词尾
    #db:删除光标所在单词以及前#-1个单词 共#个单词
    #dd:删除包括当前光标所在行在内的#行
    #d$:删除光标至行尾的所有字符
    #d^:删除光标至行首第一个非空白字符的所有字符
    #d0:删除光标至绝对行首的所有字符

    输入模式 :

    进入输入模式就可以对文件进行编辑,按ESC可以回退到编辑模式(命令模式)。

    末行模式 :

    在编辑模式下按:可以切换到末行模式,末行模式的操作如下:

    General Command

    :q 不保存退出
    :wq 保存退出
    :x 保存退出
    :q! 不保存退出 强行
    :w 保存
    :w 路径 :将文件另存到另一个文件
    :w! 强行保存 (管理员)
    :r 路径 :把文件读入当前光标位置
    :! COMMAND:可执行shell命令

    Motion Command

    :#:输入行号,回车即可跳转到第#行
    :StartADD,EndADDd:删除从StartADD开始至EndADD的所有文字;d表示删除
    :StartADD,EndADDw 路径:把从StartADD开始至EndADD的所有文字另存到另一个文件中去;w表示写

    其中,StartADD和EndADD可以被替换为下面几种通配符

    . :表示当前行
    $ :表示最后一行
    +#:向下的#行
    $-1:倒数第二行

    例如:.,$d 表示删除从当前行起到最后一行。.,+2d 表示删除包括当前行以及向下的两行。

    Search Command

    /PATTREN:顺序遍历
    ?PATTERN:倒序遍历
    n:下一个匹配项
    N:上一个匹配项

    Replace Command

    :StartADD,EndADDs @PATTERN@string@gi:表示查找从StartADD开始至EndADD中所有匹配的项,并把它替换为string;g表示全部替换(默认只替换第一次匹配到的项),i表示忽略大小写
    可以把StartADD,EndADD替换为%,表示全文搜索替换

    Configuration Command

    set nu :显示行号
    set nonu:取消行号显示
    set ic :显示忽略或区分大小写字符
    set ai:设定自动缩进
    set noai:取消设定自动缩进
    set hlsearch:查找到的文本高亮显示
    set nohlsearch:取消高亮显示查找到的文本
    syntax on :语法高亮

    上面的配置只对当前打开的vim生效,关闭之后再此打开又恢复到原样,如果想一直生效,可以去/etc/vimrc或者~/.vimrc(没有可新建)文件里进行配置

    打开文件

    打开一个文件

    vim +# :打开文件,并定位光标于第#行。
    vim + :打开文件,并定位光标于最后一行。
    vim + /PATTERN :打开文件,并定位光标于第一次被PATTERN匹配到的行的行首。这里PATTERN指的是正则表达式。

    打开多个文件

    vim [option] FILE1 FILE2 FILE3..

    -o:水平分割显示文件
    -O:垂直分割显示文件
    Ctrl+w+方向键可在分屏模式下切换光标

    如果不加参数打开多个文件
    在末行模式下可进行下列操作
    :next 切换至下一个文件
    :prev 切换至前一个文件
    :last 切换至最后一个文件
    :first 切换至第一个文件
    :qa 全部退出
    Ctrl+w+s: 水平拆分窗口显示

    Ctrl+w+v: 垂直拆分窗口显示

    是不是感觉命令很多,不太容易记?哈哈哈,反复练习就很快能记住了。加油!!!

    相关文章

      网友评论

      • Bana:感觉一个鼠标做的事,搞成这么多按键,都是大佬
        Bana:@olaH 这倒是事实
        olaH:当操作这些命令变成肌肉记忆以后,比鼠标还快!

      本文标题:Vim的使用技巧---世上最好用的编辑器

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