zoukankan      html  css  js  c++  java
  • 我的vim使用心得

     欢迎转载,转载请务必注明出处:http://blog.csdn.net/alading2009/article/details/39853773  


        vim是vi的增强版,即Vi IMproved,号称Linux下的编辑利器,用了一段时间,的确犀利。下面记录一下我的一些使用心得。


    1、欲练此功,必先。。。了解几种模式啦

         使用vim之前,先简单了解一下几种常用的模式,即Normal、Insert、Command、Visual,我们所有的操作都将在这几种模式下完成。正常使用vim打开文件,默认进入Normal模式;在Normal模式键入i,进入Insert模式;Normal模式键入冒号(:),进入Command模式;Normal模式下键入v,进入Visual模式。模式间切换(除了某些命令执行后会自动切换外),可按esc先进入Normal模式,再切换进入需要的模式。如下图所示:


        各个模式下可完成的操作不同,只有把各个模式贯通起来,才能把vim的强大之处发挥出来。看过《武状元苏乞儿》吗?把前十七掌融会贯通,才能一气呵成地使出威力最大的第十八掌。


    2、先说Normal模式下的一些操作


    操作 效果
    D 从光标处删除到行末
    y$ 从光标处复制到行末
    P 粘贴至当前行上面
    p 粘贴至当前行下面
    np 粘贴n次
    d$ 剪切当前光标处到行尾
    d^ 剪切当前光标处到行首
    dd 剪切当前行
    dj 剪切当前行的上一行
    dk 剪切当前行的下一行
    ndd 剪切当前行开始往下的n行
    dw 剪切当前单词
    dG 从当前行剪切到文件尾
    yw 复制当前单词
    yy 复制当前行
    nyy 复制当前行开始往下的n行
    cc 剪切当前行,并进入Insert模式
    ncc 剪切n行,并进入Insert模式
    ^ 光标跳至行首
    $ 光标跳至行尾
    gg 光标跳至文件尾
    G 光标跳至文件头
    w 以单词为单位向右移动
    nw 向右移动n个单词的距离
    b 以单词为单位向左移动
    nb 向左移动n个单词的距离
    gUw 将光标所在单词变为大写
    guw 将光标所在单词变为小写
    gUU 将光标所在行变为大写
    M 将光标跳至屏幕中间行
    L 将光标跳至屏幕底行
    H 将光标跳至屏幕头行
    u 撤销前一步操作
    Ctrl+r 重做前一步操作
    h 以字符为单位向左移动
    l 以字符为单位向右移动
    k 光标上移一行
    j 光标下移一行
    o 在当前行的下一行插入一行空行,然后进入Insert模式
    O 在当前行的上一行插入一行空行,然后进入Insert模式
    % 匹配括号移动
    (比如光标停在{处,这时通过该操作可以移动到与该花括号匹配的}处,很有用的一个功能)
    * 匹配光标当前所在的单词,移动到下一个匹配处
    # 匹配光标当前所在的单词,移动到上一个匹配处
    i 进入Insert模式
    v 进入Visual模式
    : 进入Command模式
    / 进入Command模式的向上搜索
    ? 进入Command模式的向上搜索


        Normal模式下常用的操作以上基本都包括了,别看那么多,在实际使用过程中,每次上手几个,逐渐就熟悉了,熟能生巧嘛。而且常用的也就那么几个。



    3、Insert模式没啥好说的,接下来咱就进入Command模式,这个模式好玩,列下我的常用操作


    操作 效果
    :w 保存更改
    :q 退出
    :q! 强制退出,不保存更改
    :wq 保存更改,然后退出
    :x 同:wq
    :saveas <path/file> 文件另存为
    :sp file 上下分割,新开一个文件(即上下分屏显示)
    :vsp file 左右分割,新开一个文件
    :set nu 显示行号
    :set nonu 不显示行号
    :s/pattern1/pattern2/ 将当前行中从左往右第一个匹配上pattern1模式的字符串替换为pattern2
    :s/pattern1/pattern2/g 将当前行中所有匹配上pattern1模式的字符串替换为pattern2
    :n1,n2s/pattern1/pattern2/g 将从n1行到n2行中所有匹配上pattern1模式的字符串替换为pattern2
    :n1,n2s#pattern1#pattern2#g 实现的功能同上一行,要点在于当模式中包含/时,可以使用#作分隔符,代替/,以避免冲突,当然也可以选用其他字符作为分隔符代替/
    :.,n2s/pattern1/pattern2/g 将从当前行到第n2行中所有匹配上pattern1模式的字符串替换为pattern2
    :n1,$s/pattern1/pattern2/g 将从n1行到结尾行中所有匹配上pattern1模式的字符串替换为pattern2
    :n1,+2s/pattern1/pattern2/g 将从n1行到n1+2行中所有匹配上pattern1模式的字符串替换为pattern2
    :s/^/#/ 在当前行的行首添加#,在编写bash脚本时,可以方便地注释多行
    :%s/pattern1/pattern2/g 将文件中所有匹配pattern1的字符串替换为pattern2
    :/pattern 光标向下搜索匹配pattern模式的字符串,n移动到下一个匹配处,N移动到上一个匹配处
    :?pattern 光标向上搜索匹配pattern模式的字符串,n移动到下一个匹配处,N移动到上一个匹配处
    :5 光标跳到第5行
    :+2 光标往下跳2行
    :-2 光标往上跳2行
    :n1,n2d 删除n1到n2行
       

        很有用,特别是替换,跳行,分屏这些。



    4、Visual模式,用的不多,简要列一下


    操作 效果
    d 剪切选中部分
    D 剪切选中行
    v 复制选中部分
    c 剪切选中部分,并进入Insert模式
    C 剪切选中行,并进入Insert模式



    5、补充


    操作 效果
    vim -O2 file1 file2 同时打开2个文件,并垂直分屏
    vim -o2 file1 file2 同时打开2个文件,并水平分屏
    vim file1 file2 打开2个文件,:bn切换到下一个,:bf切换到上一个
    Ctrl+w l 切换到右屏(Normal模式下)
    Ctrl+w h 切换到左屏
    Ctrl+w k 切换到上屏
    Ctrl+wj 切换到下屏
    Ctrl+wL 当前屏向右移动
    Ctrl+w H 当前屏向左移动
    Ctrl+w K 当前屏向上移动
    Ctrl+w J 当前屏向下移动


        觉得不够的话,可以看下这两个链接:

        大牛的:http://coolshell.cn/articles/5426.html

        这个讲了个map,没用过,可以试试:http://haoxiang.org/2011/09/vim-modes-and-mappin/

       

        要是还觉得不过瘾的话,那就请在终端命令行输入vimtutor,对着帮助文档自己撸吧。


    欢迎转载,转载请务必注明出处:http://blog.csdn.net/alading2009/article/details/39853773


  • 相关阅读:
    Windows Live Writer Testing
    基于本地文件系统的LocalDB
    【笔记】动画显示窗体
    winform无边框窗口拖动
    关于js的内存机制
    flex-basis
    Cookie、session和localStorage、以及sessionStorage之间的区别
    关于报文
    关于http与https Tcp的三次握手四次握手
    关于前后端分离与不分离
  • 原文地址:https://www.cnblogs.com/read-the-spring-and-autumn-annals-in-night/p/12042003.html
Copyright © 2011-2022 走看看