VIM 操作记录

作者: orientlu | 来源:发表于2016-06-11 13:50 被阅读732次

    @(linux 编程)[vim, 技能, VIM, 开发技能, 工具使用]

    使用vim 大概有2年,但是感觉一直停留在刚入门。这几天幡然醒悟自己的开发环境和开发技能如此落后,可恨的是还停滞不前许久,因此决定发愤图强,改变他。
    --- lcd
    vim 神之编辑器 哈哈哈

    本文记录, vim 入门后使用进阶


    说明 :

    命令格式 xxx表示在Nornal 模式下键盘直接输入
    命令格式 : xxx表示在命令行模式下输入
    命令格式 C_x表示键盘 ctrl + x

    日常操作

    个人感觉满足90%的需求

    Nornal 模式 下光标快速移动

    操作 效果
    0 到行首
    ^ 到本行第一个非空位置
    $ 到行尾
    g_ 到本行最后一个非空位置
    * 当前单词下一个位置 (n向下继续查找)
    # 当前单词上一个位置 (N向上继续查找)
    % 移动到当前括号匹配的位置
    :/xxx 向下查找xxx 词(?向上查找)
    NG 到第N行
    gg 到第一行
    G 到最后一个行
    ' ’ (两个单引号) 上一个位置
    w 按单词跳动 , W (按blank划分跳动)
    e 单词尾 , E (按blank划分跳动)
    fx 到当前行下一个为x的字符
    tx 到当前行 x 前的一个字符

    进入Insert 模式 快速开始输入

    操作 效果
    i 在光标前面插入
    I 行首非空字符前插入
    a 在光标后面插入
    A 行末非空字符后插入
    o 在下一行首插入
    O 在上一行首插入
    cw 删除当前单词,进入插入模式

    拷贝黏贴那几个命令

    操作 效果
    p 黏贴
    yy 复制当前行
    yw 复制光标到单词结束
    y^ 复制光标到最前一个非空字符
    y$ 复制光标到最后一个非空字符
    2yy 复制当前行开始的2行
    2y 复制当前行和后续2行

    其他组合操作类似

    操作撤销和恢复

    • u 撤销操作
    • C_r 恢复操作

    文件打开保存退出切换

    操作 效果
    : e xx 打开文件
    : saveas xx 另存为
    : E 查看目录
    : ls 查看缓冲区,打开的文件
    : buffer x : ls 后可以直接打开对应的文件 编号x
    : bn/ : bp vim xx xx 多个文件的时候,切换

    操作的快速重复

    • 快速重复操作 : 小数点 .
    • N[cmd] : 执行 cmd N 次(p, dd, x..)

    区域选择

    选择指定符号 (", ', ), }, ]) 区域内的内容
    举个例子 : [ a + cda [daff ] ], 当前光标在 [daff] 范围

    操作 选中
    v i ] [ a + cda [daff] ]
    v a ] [ a + cda [daff ] ] (包括符号)
    v 2i ] [ a + cda [daff]]
    v 2a ] [ a + cda [daff ]]

    ** 数字 表示向外第几层,默认1,当前层**

    块操作

    C_v 进入块操作-- 局部。

    • 整块注释
    void fun(void)
    {
        printf("fun %s", __FUN__);
    }
            
    //void fun(void)
    //{
    //printf("fun %s", __FUN__);
    //}
    

    光标定位void 位前,按 C_v, 然后光标向下拖动(hjkl..),选择注释范围,大写I进入插入模式,输入//,
    ESC退出,所有行都会被注释。

    • 整块缩进
      同上,选中块列首, C_> 或者 C_< 进行缩进(选中后输入数字可以设定缩进个数)
      V/v 块操作— 整行选择
      键盘v, 选中操作的块区域。
      • = : 代码自动缩进(多层次)
      • J : 选中区域连接为一行

    宏录制

    st=>start: qa : q开始记录,a是保存的寄存器
    end=>end: end
    op=>operation: 一系列操作, 诸如yy,ddd
    opq=>operation: q : 停止记录
    opu=>operation: @a : 调用录制的宏 
    opu2=>operation: @@ 调用最近录制的宏
    opu3=>operation: 3@a 执行a中保存的宏3次
    st->op->opq->opu->opu2->opu3->end
    

    分屏操作

    • 终端打开命令
    $vim -On file file2 #大写O垂直分屏打开文件
    $vim -on file file2 #小写水平打开
    # n 表示分屏数,直接n等于文件个数, 如果n小于文件,按顺序打开前面的n个,如果大于,打开空编辑页面
    
    • 分屏快捷操作
      C_w + hjkl 或者方向键移动光标
      C_w + HJKL 移动分屏 (太多分频使用容易混乱)
      C_w + c 关闭当前分屏
      C_w + q 关闭当前分屏,如果最后一个,退出vim

    • 编辑器命令行分屏设置 : :split / :vsplit + 文件

    • 打开分屏后,可以设置同步滚动 : :set scb

    • 关闭同步滚动 : :set noscb

    标签定位

    • 打标签
      光标移动到需要标记的位置, 键盘 mx
      (x 代表 26 个字母,指代存储位置)*

    • 跳到标签位置
      键盘 ````x ```
      (`是tab上的那个点)*
      :marks 得知目前所有标签的列表。

    • 标签作用域
      小写字母,作用当前文档
      大写字母,作用编辑的各个文档之间 (同一个buffer)
      数字,可作用前面十次编辑的文档之间。

    数字的用法比较特殊,'0 是回到前一次编辑文档中离开前的最后位置,'1 则是回到前第二次编辑文档最后离开的位置,依此类推。该功能是vim自动标记,請 :h viminfo-file-marks。viminfo 關掉,就沒這個功能了! 所谓前次指的是前次启动的 vim。


    没插件也能IDE ? --- 可以可以

    分屏浏览目录打开

    操作 效果
    :He 在下面分屏打开目录 (:He!在上面))
    :Ve 在左边分屏打开目录 (:Ve!在右边)
    1465059837288.png

    Tab 分页浏览目录打开

    操作 效果
    :Te 在新页打开目录
    :tabs 查看打开的情况
    gt 跳到下一页 (T上一页)
    x gt 直接跳到指定页 i
    :tabclose i 关闭i 页,没指定关闭当前
    :bufdo tab split 把buffer中的文件全部转为tab

    vim启动直接以页的形式打开文件

    vim -p xx.c aa.c 
    
    1465059909964.png

    保存打开几个tab 或者设置各种参数的会话

    操作 效果
    : mksession path_name.vim 保存当前建立的会话窗口
    vim -S path_name.vim 打开保存的会话
    : qa / : wqa 退出当前会

    关键字补全快捷键

    以下,在Insert 模式进行操作

    单词补全

    输入单词一部分后,C_n, 自动补全一个。如果这个补全对象不对,C_p,回退补全,方向键选择实际需要的选项。

    其他补全

    C_X 的前提下, 如下快捷键对应功能 :

    输入 功能
    C_D 宏定义补全
    C_L 行补全
    C_F 文件名补全(补全目录下文件的名称)
    C_I 关键字补全
    C_V 表达式补全
    C_] Tag 补全
    1465060071930.png

    quickfix 功能

    编译出错调试

    当前目录下包含makefile , 在vim 命令中执行:make,如果编译出现错误,执行结束后回车,在命令行中执行: cw打开窗口查看信息。: cl 可以直接列出所有错误信息; : cp跳到上一个错误, : cn跳到下一个错误。

    信息查找

    在vim 下查找 XXX 宏在哪里出现,命令行下输入 :

    : grep -r --include="*.[ch]" XXX  ./
    

    命令递归查找当前目录下的 *.c 和 *.h 文件中包含XXX宏。查找后,通过命令 :cw 查看。

    快速打开光标所指文件

    • Normal 模式下, 键盘gf
    • 退回, C_o
    • 打开文件存在buffer中,参看buffer使用。

    其他加速操作

    操作 效果
    dtx 删除内容直到遇到x
    ga 查看光标处的ASSII码
    g8 查看光标处的UTF-8码
    guu(Vu) 当前行全部变为小写
    gUU(VU) 当前行全部变为大写
    :r ![cmd] 执行shell 命令并把结果黏贴到文本
    • 写一段python代码,选中后,执行 : !python,结果黏贴在文本,替换了源代码

    参考

    酷壳--简明 Vim 练级攻略
    无插件Vim编程技巧
    大家来学vim

    相关文章

      网友评论

      本文标题:VIM 操作记录

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