IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Vim 日积月累

    onlyice发表于 2015-07-28 10:31:06
    love 0

    写这篇文章的目的是,将日常学习到的 Vim 知识积累起来,同时不停地优化和重构知识结构,以更好地学习 Vim。

    配置相关

    1
    set nocompatible
    " 设置成与 Vi 不兼容的模式,使得 Vim 的很多高级特性可以使用

    Windows 下默认的用户自定义 Vim 文件夹是 $USERPROFILE\vimfiles ,可以通过 set rtp? 命令来查看得知。要保持与 *nix 一致的自定义 Vim 文件夹,则需要在 .vimrc 里添加 set rtp+=~\.vim 。

    使用 set {option}? 获得当前选项的设置情况,使用 set {option}! 将该选项的值取反(只能用到 boolean 值的选项上)。如 set compatible?,set showcmd!。

    :scriptnames 检查 Vim 载入了哪些配置文件和插件等。

    帮助系统

    1
    $ vimtutor
    " 30 分钟的 Vim 入门教程
    
    :help
    " 帮助目录首页 (help.txt)
    
    :help {subject}
    " 关于某个主题的帮助,如 :help deleting ,个人觉得没什么用
    
    :help {command}
    " 关于正常模式下某命令的相关内容,如 :help x
    
    :help index
    " 给出一系列 Vim 命令的列表
    
    :help CTRL-A
    " 正常模式下的快捷键操作
    
    :help i_CTRL-H
    " 插入模式下的快捷键操作
    
    :help v_u
    " 可视模式下的快捷键操作
    
    :help c_<Up>
    " 命令行编辑模式下的快键键操作
    
    :help :quit
    " Vim 命令行模式命令
    
    :help -t
    " Vim 启动时命令行参数
    
    :help 'textwidth'
    " 选项帮助

    不确定需要的帮助内容是什么的时候,可以使用 Ctrl-D 查询匹配的条目。如输入 :help word 时按 CTRL-D 就可以出现所有包含 word 的条目名。

    基本操作

    正常模式下:

    1
    h, j, k, l - 移动光标
    i - 在当前光标入插入
    a - 在当前光标后插入
    A - 在行末插入
    x - 删除当前位置的字符
    X - 删除当前位置的前一个字符
    c{motion} - 改变某一段内容
    C - 改变当前位置到行末的内容
    s - 改变当前位置的内容
    S - 改变当前行的内容
    d{motion} - 删除某些内容
    D - 删除当前位置到行末的内容,等同于 d$
    o - 在当前位置的下一行开新行
    O - 在当前位置开新行
    p - 相当于 o 但是不进入插入模式
    P - 相当于 O 但是不进入插入模式
    u - 撤消上一个改变内容的操作(包括U)
    U - 撤消对当前行的所有操作
    CTRL-R - 重做上一次 u 命令带来的改变
    r - 替换当前字符
    R - 进入替换模式
    p - 在当前位置粘贴
    P - 在当前位置之前粘贴
    % - 光标跳转到配对的括号处

    移动

    1
    w - 移动到下面一个单词的第一个字母
    e - 移动到下面一个单词的最后一个字母
    ge - 移动到上面一个单词的最后一个字母
    b - 移动到上面一个单词的第一个字母
    
    W, E, gE, B 跟 w, e, ge, b 的效果不一样:
           ge      b          w                             e
           <-     <-         --->                          --->
    This is-a line, with special/separated/words (and some more). 
       <----- <-----         -------------------->         ----->
         gE      B                     W                     E
    
    $ 或 <End> - 移动到行末
    ^ 或 <Home> - 移动到行初
    
    " find
    f<char> - 行内查找字符并跳转至下一个
    F<char> - 行内查找字符并跳转到上一个
    
    " to
    t<char> - 效果同 f ,但是光标停在找到的字符的前一格
    T<char> - 效果同 F ,但是光标停在找到的字符的后一格
    
    [count]G - 跳转到某行
    G - 跳转到文件末
    gg - 跳转到文件首
    CTRL-G - 显示光标位置
    50% - 跳转到文件 50% 处
    
    H - 跳转到屏幕最上一行 (home)
    M - 跳转到屏幕中间 (middle)
    L - 跳转到屏幕最下一行 (last)
    
    CTRL-D - 向下移动半屏 (down)
    CTRL-U - 向上移动半屏 (up)
    CTRL-Y - 屏幕向下滚动一行 (scroll down)
    CTRL-E - 屏幕向上滚动一行 (scroll up)
    CTRL-F - 向下移动一屏 (forward)
    CTRL-B - 向上移动一屏 (backward)
    
    zz - 将当前行置于屏幕中间
    zt - 将当前行置于屏幕最上
    zb - 将当前行置于屏幕最下
    
    :set number - 显示行号
    :set ruler - 屏幕右下角显示当前位置的行列数

    搜索

    1
    /pattern - 正向搜索
    ?word - 反向搜索
    n - 下一个匹配
    N - 上一个匹配
    # - 搜索当前位置的单词
    /the\> - 搜索以 the 结尾的单词,\> 表示结尾
    /\<the - 搜索以 the 开头的单词,\< 表示开头
    
    :set ignorecase - 设置搜索时不区分大小写
    :set hlsearch - 设置搜索结果高亮
    :nohlsearch - 本次搜索结果不高亮,不影响下次搜索

    搜索过的 pattern 会被 Vim 记忆下来,如 /one 搜索过后,输入 /o<Up> 会出现 /one ,即可以匹配搜索 pattern 的词首。



沪ICP备19023445号-2号
友情链接