Windows程序员学习Linux环境下VI(VIM)编辑器的使用方法

news2025/1/12 5:02:39

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Windows程序员如何学习Linux环境知识。由于很多程序在Windows环境下开发好后,还要部署到Linux服务器上去,所以作为Windows程序员有必要学习Linux环境的知识。

VI 是Linux下功能强大的编辑器,类似于Windows下的记事本,它是由UNIX下传统的文本编辑器VI发展而来的。VIM是VI的增强版,有彩色和高亮等特性,这对于文本编辑有很大的帮助。作为Linux下基本的编辑工具,VIM的功能很多。

打开linux系统,在任意文件夹下,或者说X-window下,在终端中输入命令“vim”,按回车键,就会出现初始界面。

这就表示进入VIM编辑器了。如果在Linux的命令符下输入“vim”,也能进入VIM。只要一个命令,就可以很容易地进入VIM的操作界面,退出VIM则不一样,首先要按Esc键,回车后进入命令行模式,然后输入“:”,此时光标会停留在最下面的一行,再输入“q”,最后回车就可以退出。但这是基本的退出,其他情况会在下面具体介绍。

一般情况下,VIM可以分为3种模式,即一般模式(命令模式)、编辑模式(插入模式)和底行模式。 3种模式的相互转换如图。

1.一般模式。一进入 VIM就是处于一般模式(命令模式),该模式下只能输入指令,不能输入文字。这些指令可能是让光标移动的指令,也可能是删除指令或取代指令。

2.编辑模式。输入“i”就会进入编辑模式(插入模式),此时在状命令模式态列会有INSERT字样。在该模式下才可以输入文字,按Esc键又会回到命令模式。

3.底行模式。输入“:”就会进入底行模式,此时左下角会有一个冒号,等待输入命令。按Esc键可以返回命令模式。

  

VIM命令模式详细操作

1.进入插入模式

  i:光标前插入,在光标左侧输入正文。

  I:在光标所在行的开头输入正文。

  a:光标后插入,在光标右侧输入正文。

  A:在光标所在行的末尾输入正文。

  o:在光标所在行的下一行增添新行。

  O:在光标所在行的上一行增添新行。

2.移动光标

  hjkl:左、下、上、右。

  Ctrl+B:在文件中向上移动一页(相当于PageUp键)。

  Ctrl+F:在文件中向下移动一页(相当于PageDown键)。

  G:移到文件最后。

  H:将光标移到屏幕的最上行(Highest)。

  nH:将光标移到屏幕的第n行。

M:将光标移到屏幕的中间(Middle)。

  L:将光标移到屏幕的最下行(Lowest)。

  nL:将光标移到屏幕的倒数第n行。

  w:在指定行内右移光标,到下一个字的开头。

  e:在指定行内右移光标,到下一个字的末尾。

  b:在指定行内左移光标,到前一个字的开头。

  0:数字0,左移光标,到本行的开头。

  $:右移光标,到本行的末尾。

  ^:移动光标,到本行的第一个非空字符。

3.删除

  x:删除光标所指向的当前字符。

  nx:删除光标所指向的前n个字符。

  :1,#d:删除行1至行#的文字。

  X:删除光标前面一个字符。

  D:删除至行尾。

  dw:删除光标右侧的字。

  ndw:删除光标右侧的n个字。

  db:删除光标左侧的字。

  ndb:删除光标左侧的n个字。

  dd:删除光标所在行。

  ndd:删除n行内容。

4.更改

  cw:更改光标处之字到此单词字尾处。

  c#w:如c3w表示更改3个单词。

  cc:修改行。

5.取代

  r:取代光标处字符。

  R:取代字符直到按Esc键为止。

6.复制和粘贴

  yw:复制光标处之字到字尾至缓冲区。

  yy:复制光标所在行至缓冲区。

  #yy:如5yy,复制光标所在之处以下5行至缓冲区

  P:把缓冲区的资料粘贴在所在行之后。

  p:把缓冲区的资料粘贴在所在行之前。

7.撤销

  u:undo,复原至上一动作。

8.重复上一个命令

  . :重复上一个命令。

VIM编辑模式详细操作

在命令行模式中讲到了如何从命令行进入编辑模式的操作,而且要进入VIM的编辑模式就必须通过命令行进入。在进入了VIM的编辑模式后,用户就可以对打开的文件进行编辑操作,尤其现在的VIM已经支持鼠标操作,使用起来就更加方便。

VIM的底行模式详细操作

VIM的底行模式也叫末行模式,就是在界面最底部进行命令的输入,底行模式一般用来执行保存和退出等任务。只要在命令行模式下输入冒号,就可以进入底行模式。VIM底行模式的基本操作介绍如下。

1.退出命令

  :wq或:x:先保存再退出VIM。

  :w或:w filename:保存/保存为 filename名的文件。

  :q:退出(如果文件被修改会有提示)。

  :q!或:quit:不保存退出VIM。

  :wq!:强制保存,并退出。

2.显示和取消行号

  :set nu:显示行号。

  :set nonu:不显示行号。

3.字符串搜索

  :/str:正向搜索,将光标移到下一个包含字符串str的行,按n可往下继续找。

  :?str:反向搜索,将光标移到上一个包含字符串str的行,按n可往上继续找。

:/str/w file:正向搜索,并将第一个包含字符串 str的行写入 file文件。

  :/strl/,str2/w file:正向搜索,并将包含字符串strl的行至包含字符串 str2的行写入 file文件。

4.删除正文

  :d:删除光标所在行。

  :3 d:删除3行。

  :.,$ d:删除当前行至正文的末尾。

  :/str1/,/str2/d:删除从字符串 str1到str2的所有行。

5.恢复文件

  :recover:恢复文件。

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/388315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么KT6368A双模蓝牙芯片焊到板子上,没反应没收到芯片TX上电返回信息呢

目录 一、问题简介 为什么我把KT6368A芯片焊到板子上面,没有收到芯片TX的脚上电返回信息呢,而KT6368A芯片的2脚一直是2点多v的电压,换了好几个芯片都是这样 二、详细说明 一、问题简介 为什么我把KT6368A芯片焊到板子上面,没有…

QWidgetTable获取选中多行数据

QWidgetTable获取选中的多行数据获取选中行的行编号和打印指定第几列功能快捷键插入链接与图片创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流…

buu [NPUCTF2020]这是什么觅 1

题目描述: 就一个这种文件,用记事本打开后: 题目分析: 打开后就一串看不懂的东西,想想这个东西曾经在 010editor 或 winhex中出现过(右端)既然如此那么我们就用它打开,得到&#…

使用 JaCoCo 生成测试覆盖率报告

0、为什么要生成测试覆盖率报告 在我们实际的工作中,当完成程序的开发后,需要提交给测试人员进行测试,经过测试人员测试后,代码才能上线到生产环境。 有个问题是:怎么能证明程序得到了充分的测试,程序中所…

线程池和ThreadLocal详解

线程池和ThreadLocal详解线程池池化模式:线程池里的线程数量设定为多少比较合适?添加线程规则:实现原理:线程池实现任务复用的原理线程池状态:Executors 创线程池工具类手动创建(更推荐):自动创…

高码率QPSK调制解调方案(FPGA实现篇)

在前面的章节中,已经讲过QPSK调制的方案和Matlab算法仿真,在本篇中,主要讲解基于FPGA的高速QPSK调制的实现。根据前面提到的技术指标,本系统传输的数据速率为500Mbps,中频为720MHz,因此,传统的串行QPSK调制已经不合适在FPGA中实现,需采用全数字的并行方式进行调制,具体…

电商API是什么?为什么要用?主要应用场景有哪些?

电商API是什么?API是application programming interface(应用程序接口)的简称,实际上是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码&#x…

强强联合,再强的英伟达NVIDIA也不落俗套

强强联合,全球科技领域永恒的话题【科技明说 | 每日看点】前些天,我看到GPU领域的英伟达(Nvidia)与微软(Microsoft)做了一项十年期的云计算协议,起初我以为微软Microsoft Azure与英伟达GPU方面有所合作,其实不然&#…

微小目标识别研究(1)——白酒杂质识别

文章目录研究项目简介基于机器视觉技术的白酒杂质检测系统研究(大概浏览)研究背景国内外研究现状和发展趋势国内国外总结白酒杂质检测算法YOLO V3算法K近邻算法滤波处理动态范围增强形态学图像处理运动目标提取数据集制作数据增强基于机器视觉的液体药品…

学习笔记 —— 基于C加速的Python高效计算 (Cython pybind11)

目录引言Cython示例介绍第一阶段优化第二阶段优化Cython Annotation tool优化方法第三阶段优化比对下 JIT的Numba总结pybind11LinksIntroductionImplementationImplementation CmakecytpesCython & pybind11 性能比较TODO Implementation Cmake --pybind11 Cython & py…

Linux SPI 驱动实验

目录 一、Linux 下 SPI 驱动框架简介 1、SPI 主机驱动 2、SPI 设备驱动 SPI 设备数据收发处理流程 3、SPI 设备和驱动匹配过程 二、添加SPI 设备信息 1、添加 ICM20608 所使用的 IO 2、 在 ecspi3 节点追加 icm20608 子节点 三、编写 ICM20608 驱动 1、修改makefile​…

深度学习目标检测ui界面-交通标志检测识别

深度学习目标检测ui界面-交通标志检测识别 为了将算法封装起来,博主尝试了实验pyqt5的上位机界面进行封装,其中遇到了一些坑举给大家避开。这里加载的训练模型参考之前写的博客: 自动驾驶目标检测项目实战(一)—基于深度学习框架yolov的交通…

C++ 二级指针的理解

指针一直很抽象,不是很容易理解,尤其是二级指针。有天路上,脑子里突然想起二级指针,并开始思考什么是二级指针,经过分析和调试验证,对二级指针有了进一步的认识。故写下此篇。 一级指针 假设变量 a、p 的…

消息队列 rabbitmq 学习

RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数…

[YOLO] yolov4 博客笔记

在有了yolov3的基础上,yolov4的网络结构还是很容易看懂的。 这篇博客写的整个yolov4的网络概况 【经典论文解读】YOLOv4 目标检测https://blog.csdn.net/qq_41204464/article/details/119673960?ops_request_misc%257B%2522request%255Fid%2522%253A%25221677916…

SpringBoot一行代码实现文件上传20个平台!少写代码到极致!

又是做好人好事的一天,有个小可爱私下问我有没有好用的springboot文件上传工具,这不巧了嘛,正好我私藏了一个好东西,顺便给小伙伴们也分享一下,demo地址放在文末了。文件上传在平常不过的一个功能,做后端开…

SpringBoot (三) 整合数据库访问 jdbcTemplate、MyBatis

哈喽,大家好,我是有勇气的牛排(全网同名)🐮🐮🐮 有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。 Spring Data了解下&#xff1…

实习日记_C#——Day2

运算符重载 通过关键字operator后跟运算符的符号来定义。 public static Box operator (Box b, Box c) {Box box new Box();box.height b.height c.height;return box; }Box box1 new Box(1); Box box2 new Box(2); Box box3 new Box(); bo3 box1 box2;接口&#xff…

基于灵动 MM32 微控制器的便携式血氧仪方案

基于灵动 MM32 微控制器的便携式血氧仪: - Cortex-M0() 最高主频 72MHz 可实现血氧饱和度信号采集、算法操作和 LED 显示操作 - 高性能的 1Msps 12b ADC 能对光电采样结果进行大数据量的暂存和处理,提高采样的效率并有助于对结果做高精度的计算 - 100…

排序中常见的一些指标

1、错误率与精度 错误率与精度是分类任务中最常用的两种性能度量,错误率是指分类错误的样本占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。 错误率: 精度: 2、准确率/召回率/FScore True Positive(真正例, TP)&…