VIM复习及再学习笔记


1. 跳转:
    CTRL-I  跳转到下一个光标位置,与相同
    CTRL-O  跳转到上一个光标位置

2. 使用多个寄存器
   ["x]p
   ["x]y
   使用x号寄存器.x可以是字母或数字.

3. 以Word为单位的移动
    w/W ->
    b/B <-

    e/E ->
    ge/gE <-

    w与e的区别:w移动到词首,e移动到词尾
    大写与小写的区别:大写对于边界的判断更少,移动得更远.

4. 以"行"为单位的移动
    ^ 移动行首第一个非空格的字符

5. 向上向下滚动半屏
    CTRL-D
    CTRL-U

6. 将当前行置于屏幕中间/顶部/底部
    zz/zt/zb

7. 文本对象
    aw iw 光标位置所在的一个单词
    as is 光标位置所在的一个句子
    aw: A Word  包含单词后的空格
    iw: Inner Word 不包含单词后的空格
8. 多窗口编辑
    :new    创建一个水平的新窗口
    :vnew   创建一个垂直的新窗口
    :close  关闭当前窗口

    CTRL-W (hjkltb) 在窗口间移动

    CTRL-W (HJKL) 移动当前窗口

    vim -o 1.txt 2.txt 3.txt 使用多个窗口打开文件
    如果已经在vim中,可以用:all 或者:vertical all横向或纵向平铺窗口

9. 寄存器操作
    "*与"+ 寄存器代表系统剪贴板, 仅在gvim里有效.
    宏也是保存在寄存器中,可以以文本形式编辑它
    对大写寄存器的编辑就是对小写寄存器内容的追加

10. 命令作用范围
    . 代表当前行, $ 代表最后一行
    也可以增加偏移量,比如
        :.+3,$-5
    如用"mt"来标记一个范围的开始, "mb"标 记它的结束. 然后就可以这样指定这个范围:(包括标记本身所在的行)
        :'t,'b
    Visual模式的开始与结束也是一个标记,即'<和'>

11. 以数字指定行数
    如果你已经知道要使命令使用于几行内容, 可以直接按下这个数字, 然后按":". 比如, 按下"5:", 你会看到:
        :.,.+4

12. Visual Block的操作
    在多行的行尾追加
        选中Visual Block后按下$A
        如果只是按下A,则不是行尾而是BLOCK后面
    水平移动文本块
        选中文本块后按下>,会使文本块右移一个shiftwidth
        左移可以按<,但是如果没有空白区域,左移不会成功.
    连接多行内容
        选中文本块后按下J.如果要保留每行前后的空格,可以用gJ.

13. 读写部分文件
    插入一个文件的内容到当前文件
        :read a.txt     当前行
        :$read a.txt    最后一行
        :0read a.txt    第一行
    向另一个文件中追加内容
        :.write >>a.txt   追加当前行

14. 输入外部程序的结果
    :[range]!{program}
    将外部程序的运行结果替换到range的位置.
    如果是对当前行操作,可以直接输入!!,显示为:
    :.!date     在当前行插入时间

15. 重绘屏幕
    CTRL-L

16. 使用vimdiff
    启动比较:
        命令行中:   vimdiff 1.txt 2.txt
        在vim中:      [vertical] diffsplit 2.txt
        使用patch:  [vertical] diffpatch 1.txt.diff
    同步滚动:
        :set scrollbind
        :set noscrollbind
    跳到不同处:
        ]c  下一个不同,前面可以加数字
        [c  上一个不同
    同步文本
        dp:  diff put 复制到另一侧  
        do:  diff obtain 从另一侧复制
    折叠
        zo: 打开折叠
        zc: 关闭折叠

17. 在替换中匹配部分字符
    例如:替换ABCDEFG_12345中的12345为54321
        :s/ABCDEFG_/zs12345/ze/54321/g
        /zs /ze 表示替换内容的开始和结束

18. 忽略搜索结果为空的错误,用于宏中:
    :s/a/b/ge   最后的e忽略错误

19. 反序排列几行内容
    :'t+1,.g/^/m 't 将标记为t的一行后至当前行的内容反序

20. 显示字数
    g CTRL-g


你可能感兴趣的:(学习笔记)