当前位置: 首页 > news >正文

从零学起VIM

前言

笔者早年刚入行的时候就接触过Vim,当时还是真正的菜鸟,带我的师父是一个华为骨干员工,犹记得他给我指导如何保存并关闭文本:按Esc,然后输入:wq。还记得自己打开Vim编辑器,一个字符都敲不进去,然后问旁边的同事(此人年纪轻轻,但是擅长linux,我们都叫他XX大佬),他邪魅一笑说“i”,我第一反应就是他故意逗我玩,然后他认真地说“你没有听错,就是键盘上的i”。为何时隔多年我还记得这两件微不足道的小事?原因就是初次接触Vim留给我深刻的印象:神秘感!

讲真,这几年的工作中,我很少用Vim,可能是因为大多使用Windows操作系统。但是后来涉足跨平台开发,甚至是嵌入式,就发现这东西还必须得会!因此,决定来个“朝花夕拾”。考虑到网上类似的教程非常之多,如果仅仅复制粘贴这些文字和命令,那么会非常枯燥无味,人们是不喜欢缺乏灵魂的事物的!你看,纵使我早年接触过Vim,但是因为用进废退,目前凭直觉能想起来的命令就是上述的那两个小故事。每次真的要用,还要在网上搜索一番。

下面我会以一个小白的心态重新认识这个“老朋友”,尽量符合婴儿认识事物的这个过程。

一、Vim安装

运行

OK

下一步

我接受,下一步

下一步

下一步

改安装路径,安装

完成

二、常用命令实践

1.复现小故事情节

新建空文本

鼠标右键,用Vim编辑

按“i”,下面出现”—插入—"字样,然后键入”hello”,再按“Esc”(切换模式,用于执行命令),敲入我师父传授的“:wq”,则成功写入和保存文本!

2.删除字符,删除整行,删除单词

按“x”删除了Hello的首字母H,按”dd”删除了第一行整行,按“dw”删除了单词This。

3.复制粘贴与剪切粘贴

按“yy”复制第一行,用↓键将光标移动到底端,按“p”进行粘贴;接着用↑键将光标移动到第2行,按”dd”剪切该行,用↓键将光标移动到底端,按“p”进行粘贴。

4.跳转移动光标

按“gg”移动到文档开始,按大写”G”移动到文档末尾,按“:3”移动到第三行,由此可以看出行号是从1开始编码而非从0编码。 

5.撤销与重做

光标放到文档开头,按“dd”删除第一行,按“u”撤销删除,按”Ctrl+r”再此删除,按“u”再次撤销删除。

6.块选择

光标放到文档开头,按“v”选择字符,按→和←键选择多字符,再次把光标放到文档开头,按“Ctrl+v”选择块字符,按↓和→选择块区域。

7.设置行号

输入“:set nu”设置行号,输入“set nonu”取消行号。

8.查找替换

输入“:%s/vim/VIM”,全文搜索小写的vim将其全部替换为大写的VIM。

9.拓展 

    0:移动到行首;

    $:移动到行尾;

    ndd:删除n行(包括当前行在内)

    a:在光标后插入;

    o:在当前行下方插入新行;

    O:在当前行上方插入新行;

    :split、:vsplit:分别水平和垂直分割窗口;

    Ctrl + w、Ctrl + w:在窗口之间切换;

    :w:保存文件;

    :q:退出;

    :q!:强制退出,不保存更改。

    三、总结

    vim的命令繁多,但常用的无非就是复制粘贴删除等,能用到查找替换应付常规操作已经足够了。对于笔者而言,把所有命令全死记硬背无疑是一种灾难,提纲挈领,举一反三才能把知识学活。另外,舍弃或许是另一种拥有,比如h/j/k/l可控制左/下/上/右,但总觉得没有方向键用着直观。因此,实践中潜移默化的记忆是最有效的,本文仅作抛砖引玉之用。 

    http://www.lryc.cn/news/571973.html

    相关文章:

  1. 解决sql查询中in查询项过多时很慢的问题
  2. django 获取 filter后的某一个属性的list
  3. 【Java学习笔记】Java绘图基础
  4. 【学习笔记】2.2 Encoder-Decoder
  5. Neo4j 入门到精通(Cypher语言详解)
  6. 湖北理元理律师事务所小微企业债务重组方案:司法与经营的共生逻辑
  7. b站视频如何下载到电脑上
  8. jupter 如何修改文件位置
  9. 【AI Study】第四天,Pandas(8)- 最佳实践
  10. 湖北理元理律师事务所债务优化模型:法律与生活的平衡之道
  11. 《汇编语言:基于X86处理器》第2章 x86处理器架构
  12. 《仿盒马》app开发技术分享--未完成订单列表展示逻辑优化(61)
  13. 机器学习常用评估指标
  14. springboot使用nacos注册中心、配置中心的例子
  15. C/Fortran多核并行计算
  16. (LeetCode 面试经典 150 题 ) 26. 删除有序数组中的重复项 (双指针)
  17. A 股无风不起浪!金融吸血科技
  18. 黑马python(八)
  19. 利用 Nginx 实现灰度环境的 H5 应用发布策略
  20. 将iOS上架流程融入DevOps体系:从CI构建到App Store发布的完整实践
  21. 嵌入式之硬件学习(三)通信方式、串口通信
  22. PostgreSQL的扩展autoinc
  23. Mac 安装 VMware Fusion
  24. YOLOv11改进系列---Conv篇---2024最新深度可分卷积与多尺度卷积结合的模块MSCB助力yolov11有效涨点
  25. macos电脑本地搭建mistral-7b大模型出现4-bit量化和缓存不足问题的记录
  26. 蓝牙版本演进史:从 1.0 到 5.4 的技术突破 —— 面试高频考点与历年真题详解
  27. C#List的join查询
  28. Uniapp 中 onShow 与 onLoad 的执行时机解析
  29. 【JAVA】的SPI机制
  30. new()和new[]有什么区别?