• vim命令


    前言

    用了几年vim,但是有些命令少用后便会忘记,时常需要百度,干脆在这里累积,方便直接查找。

    使用utools辅助。

    便捷唯快不破。

    下面键入的命令在实际使用时混合搭配使用,慢慢摸索即可。

    原文:李柱明博客

    vim简要知识

    vim键盘简图


    该图源自百度,很久前的笔记了,没有追查

    vim模式

    1. 普通模式:Vim 启动后的默认模式,用来移动光标、删除文本、覆盖输入文本、恢复操作、粘贴文本等等。
    2. 插入模式:输入 iao 进入插入模式,在这个模式下敲击键盘会往文字缓冲区增加文字,相当于普通编辑器的编辑模式。
    3. 可视模式:选择文本,可以行选、块选和依次选择,选择后可以进行复制、删除、排序等操作。
    4. 命令模式:执行内部和外部命令,通过:/?:!可以进入命令模式,分别对应的是:执行内部命令、向上或向下搜索、执行外部命令。

    vim日常操作

    以下描述,默认情况都是在普通模式下的键入。

    只描述本人日常使用的,一切少用和不常见的可以参考上图或百度。

    光标移动

    上下左右:

    普通模式和可视模式下,使用h(←)、j(↓)、k(↑)、l(→)实现。

    如果需要在插入模式下实现光标移动,可以在vimrc文件配置上添加以下配置热键映射(入门的同学忽略这个)

    • 个人习惯键盘默认的上下左右键。

    单词方式移动光标(不区分大小写):

    • b/B:前一个单词词首。
    • e/E:下一个单词词尾。
    • w/W:下一个单词词首。

    行指定字符:

    • fx:搜索光标后字符x并跳转。
    • Fx:搜索光标前字符x并跳转。

    行首行尾:

    • homeend键:行首尾。虽然不属于vim范畴,但是作者也经常使用。特别是搭配shift键用来选中文本。
    • ^$,也是行首尾。
    • |(是shift+\得出的,不是英文字母I):行首。

    句和段:

    • ():上一句和下一句。
    • {}:上一段和下一段。

    文件某个位置:

    • gg:文件头。
    • G:文件末。
    • ngg:跳转到第n行,n为数字。

    跳到函数首尾:

    []都是以每个函数的首尾括号为基准。

    相同方向跳到函数左括号(开头)。

    相反方向跳到函数右括号(尾部)。

    第一个方向决定前后,第二个方向决定首尾。

    前面还可以添加数字n,表示n个。

    n不填时默认为1。

    n[[:前n个 前:(

    n[]:前n个 后:)

    n]]:后n个 前:(

    n][:后n个 后:)

    ctrl+T:回到上一个光标位置。

    屏幕移动

    主要是浏览代码时使用。

    翻页:

    • ctrl+b:上一页。(Backward)
    • ctrl+f:下一页。(Forward)
    • ctrl+u:上半一页。(up)
    • ctrl+d:下半一页。(down)

    当前屏光标位置:

    • H:当前屏顶。(High)
    • M:当前屏中。(Middle)
    • L:当前屏底。(Low)

    光标滚屏:

    • zt:光标代码滚到屏顶。(top)
    • zz:光标代码滚到屏中。
    • zb:光标代码滚到屏底。
    • ctrl+e:前滚一行。
    • ctrl+y:后滚一行。

    文本修改

    进入插入模式:

    • i:在光标所在位置插入。
    • I:在行首插入。
    • a:在在光标后插入。
    • A:在行尾插入。
    • o:在光标所在位置的下一行插入。
    • O:在光标所在位置的上一行插入。

    删除:

    x:删除字符。

    • x:删除当前字符。
    • nx:删除包括当前字符后的n个字符。
    • X:删除光标前一个字符。
    • nX:删除当前光标前的n个字符。

    d:需要配合使用。

    • dd:删除整行。

    • ndd:删除n行。

    • 因为d是删除操作,需要搭配其它键使用,其删除就是删除到后面键入命令后光标的位置如:

      • dfx:从光标起删除到本行后面第一个字符x的位置。
      • diw:删除光标所在单词。
      • 还有dwdbd end键等等都可以自由发挥。

    dix和dax的使用,是删除x内部和删除包括x的内部:

    • di}:就是删除光标所在的{}内部所有内容。
    • da}:相对di}da}{}也删除。
    • 其x可以搭配:wsp"}]等等辅助字符,实际用到时再了解。

    diw删除一个单词示例:

    di)删除()内容示例:

    df(删除到( :

    复制粘贴

    y:复制。

    • 搭配v键入可视模式后选中文本,键入y就是复制选中的文本了。
    • yy:复制当前行。
    • nyy:当前行起,复制n行。
    • y搭配贯标移动指令进行复制。
    • y搭配wsp"}]等等辅助字符使用。
    • 注意:前面的删除是删除后带赋值作用的。

    p:粘贴。

    yi{复制p粘贴{}内容示例:

    撤销:

    • u:撤销上一个操作。

    vim可视模式

    v

    v:进入可视模式。即是选中文本。

    搭配光标移动使用,这个比较简单。

    高级点的就是搭配wsp"}]等等辅助字符使用。

    再搭配yd这些指令使用。实现复制、删除功能。

    ctrl+v

    • ctrl+v:进入可视模式
    • ctrl+v+%:选中大括号
    • ctrl+v+I:行列插入

    配合光标移动相关命令使用。如在多行尾部修改:

    重复技巧

    Vim 对很多简单操作已经定义了重复键:

    • ;:重复最近的字符查找(f、t等)操作。
    • ,:重复最近的字符查找操作,反方向。
    • n:重复最近的字符串查找操作(/和?)。(vscode中直接/进入命令搜索字符串)
    • N:重复最近的字符串查找操作(/和?),反方向。(vscode中直接/进入命令搜索字符串)
    • .:重复执行最近的修改操作。

    多窗口

    多个窗口操作同一个文件。

    :sp:水平分屏。(split)

    :vs:垂直分屏。(vsplit)

    注意,部分功能渲染在vscode可能失效,练习的同学转linux下的vim。

    操作下面处理前先键入ctrl+w

    主要:

    • 加方向键(h、j、k、l、等等)可以在窗口之间跳转
    • w:跳转到下一个(往右和往下)窗口,如果已经是右下角的窗口,则跳转到左上角的窗口
    • W:跳转到上一个(往左和往上)窗口,如果已经是左上角的窗口,则跳转到右下角的窗口
    • n:new:打开一个新窗口
    • c:close:关闭当前窗口;当前窗口如果已经是最后一个则无效
    • q:quit:退出当前窗口,当最后一个窗口退出时则退出 Vim
    • o:only:只保留当前窗口,关闭其他所有窗口
    • s:split:作用相同,把当前窗口横向一分为二
    • v:vsplit:作用相同,把当前窗口纵向一分为二
    • =:使得所有窗口大小相同(当调整过终端或图形界面 Vim 的窗口大小后特别有用)

    了解:

    • _:设置窗口高度,命令前的数字表示高度行数,默认为纵向占满(想专心编辑某个文件时很有用)
    • |:设置窗口宽度,命令前的数字表示宽度列数,默认为横向占满
    • +:增加窗口的高度,命令前的数字表示需要增加的行数,默认为 1
    • -:减少窗口的高度,命令前的数字表示需要减少的行数,默认为 1
    • >:增加窗口的宽度,命令前的数字表示需要增加的列数,默认为 1
    • <lt>(提醒,我们用表示“<”键)减少窗口的宽度,命令前的数字表示需要增加的列数,默认为 1。

    简单示例:

    更便捷

    自己定制键入。


    __EOF__

  • 本文作者: 李柱明
  • 本文链接: https://www.cnblogs.com/lizhuming/p/16949700.html
  • 关于博主: 嵌入式从业者。RTOS、Linux lwip mbedtls...
  • 版权声明: 版权归博主所有
  • 声援博主: 学习笔记分享
  • 相关阅读:
    zabbix第三方邮箱警告配置
    推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
    10.Oracle的同义词与序列
    来自北大算法课的Leetcode题解:72. 编辑距离
    FFmpeg——使用Canvas录制视频尚存问题的解决方案
    Centos8部署LNMP架构
    平行港口:智慧绿色时代下港口工业智联网新形态与体系结构
    产品代码都给你看了,可别再说不会DDD(二):DDD概念大白话
    如何快速识别图片中的文字?建议使用者两种方法
    三对角矩阵原理及C++实现
  • 原文地址:https://www.cnblogs.com/lizhuming/p/16949700.html