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

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

我是荔园微风,作为一名在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深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

相关文章:

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

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

react入门篇

react入门篇前言一、目标二、项目环境三、实现过程(干货满满💥💥💥)1.创建react项目2.arco design UI库3.路由模块化4. 状态管理zustand5. axios6. 路由守卫前言 提示:这里可以添加本文要记录的大概内容&a…...

阿赵的MaxScript学习笔记分享九《可编辑多面体的操作》

大家好,我是阿赵。这是MaxScript学习笔记分享的第九篇,可编辑多面体的操作。不知不觉写了这么多篇了,应该还有几篇就写完了。自己给自己加一下油。 在3DsMax里面如果需要建模,一般使用到的塌陷方式有3种,可编辑的网格、…...

【Redis场景5】集群秒杀优化-分布式锁

集群环境下的秒杀问题 前序 【Redis场景1】用户登录注册 【Redis场景2】缓存更新策略(双写一致) 【Redis场景3】缓存穿透、击穿问题 【Redis场景拓展】秒杀问题-全局唯一ID生成策略 【Redis场景4】单机环境下秒杀问题 在单机环境下的并发问题,我们可以使用相关…...

transformer目标检测开山之作detr

1. 将一个batch的图片输入backone获得feature。 (2,c,w,h)先输入resnet50中,得到(2,2048,w,h)。虽然这里channel不是256,但是在输入e…...

双指针法|位运算|离散化|区间合并

目录 双指针算法 位运算 离散化 序列合并 双指针算法 题目描述&#xff1a;1.输入n个单词&#xff0c;每个单词在输入的时候按空格隔开&#xff0c;之后打印出每个单词且换行 #include<iostream> #include <string>using namespace std; int main() {strin…...

Rockchip Android13 GKI开发指南

Rockchip Android13 GKI开发指南 文章目录Rockchip Android13 GKI开发指南GKI介绍Google upstream kernel下载及编译Rockchip SDK中GKI相关目录介绍Rockchip GKI编译代码修改编译固件烧写KO编译及修改添加新的模块驱动的方法调试ko方法开机log确认uboot阶段Android阶段KO加载KO…...

手把手教你原生JavaScript打造丝滑流畅的轮播图,让你的网站瞬间提升用户体验!

简介 轮播图是网页设计中常见的交互组件之一&#xff0c;用于展示多张图片或内容&#xff0c;让用户能够方便地浏览、切换和选择。本文将介绍如何使用原生 JavaScript 手写一个简单的轮播图&#xff0c;并且通过代码解释实现细节。 目录 简介 HTML 结构 CSS 样式 JavaScr…...

git常用基本操作

克隆远程代码更新本地代码 git clone <-b | -branch> [branch name] [repository URL] git pull #拉取远程仓库代码&#xff0c;更新本地仓库 git merge <branch-name> #合并目标分支 建立本地仓库分支 git branch #查看当…...

剑指 Offer —— 数组和字符串

文章目录剑指 Offer 04. 二维数组中的查找代码实现解题方案 思路算法步骤剑指 Offer 05. 替换空格题目描述代码实现解题方案 思路算法步骤剑指 Offer 11. 旋转数组的最小数字 - 解决方案题目描述剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中&#xff1a; 每…...

Java 字符编码

编码&#xff1a;数据存储进计算机中需要转换为二进制存储&#xff0c;这个过程就是编码。 解码&#xff1a;计算机读取数据并展示在页面上&#xff0c;需要将二进制转换为人类语言的过程&#xff0c;叫做解码。 乱码&#xff1a;如果编码和解码时使用的码表不一样&#xff0c;…...

ubuntu-9-安装chrony时间同步

使用chrony搭建时间同步服务器 [Linux系列]Chrony时间同步服务器 配置chrony服务&#xff0c;实现服务器时间自动同步 linux上内网环境配置NTP时间同步详解 经验体会&#xff1a;解决Ubuntu 18.04Windows双系统时间不同步的问题 1 时间同步 我们知道一台电脑主机&#xff0c;…...

CMMI流程规范—服务与维护

服务与维护&#xff08;Service and Maintenance, SM&#xff09;是指产品销售之后的客户服务和产品维护。客户服务和产品维护的宗旨就是提高客户对产品以及对开发方的满意度。服务与维护过程域是SPP模型的重要组成部分。本规范阐述了服务与维护过程域的两个主要规程&#xff1…...

【蓝桥杯集训12】DFS(3 / 5)

目录 842. 排列数字 - DFS按位置枚举 843. n-皇后问题 - DFS按行枚举 165. 小猫爬山 - DFS枚举小猫 1209. 带分数 - DFS 3502. 不同路径数 - 842. 排列数字 - DFS按位置枚举 活动 - AcWing 题目&#xff1a; 给你一个整数n 要求将1~n的所有排列情况列出 比如&#xff1a…...

Elasticsearch:构建自动补全功能 - Autocomplete

什么是自动补全&#xff08;autocomplete&#xff09;功能呢&#xff1f;我们举一个很常见的例子。 每当你去谷歌并开始打字时&#xff0c;就会出现一个下拉列表&#xff0c;其中列出了建议。 这些建议与查询相关并帮助用户完成查询。 Autocomplete 正如维基百科所说的&#xf…...

One UI 5.1 更新来了

之前一直在关注One UI 5.0里提到的视频通话背景功能模块&#xff0c;结果5.0版本推送的时候没有引入&#xff0c;有先行者计划博主说是5.1里肯定会有的&#xff1b;前一两天One UI 5.1更新来了&#xff0c;然而该功能还是没有引入&#xff0c;表示很遗憾&#xff1b;本次更新新…...

Python学习笔记11:文件

文件 打开文件 函数open的参数mode的最常见取值 值描述‘r’读取模式&#xff08;默认值&#xff09;‘w’写入模式‘x’独占写入模式‘a’附加模式‘b’二进制模式&#xff08;与其他模式结合使用&#xff09;‘t’文本模式&#xff08;默认值&#xff0c;与其他模式结合使…...

django-filter的使用

django-filter是一个通用的、可重用的应用程序&#xff0c;它可以减轻视图代码的编写工作量。具体来说&#xff0c;它允许用户根据模型的字段筛选查询集&#xff0c;并显示表单让他们这样做。 安装 pip install django-filter快速开始 在settings.py中添加如下配置: INSTAL…...

时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)

时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络) 目录时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)预测效果基本介绍程序设计参考资料预测效果 基本介绍 MATLAB实现IWO…...

【C++】string的成员函数、成员常量和非成员函数

目录 string 1. string的成员函数 1.1 构造、析构和赋值运算符重载 1.1.1 构造函数 1.1.2 析构函数 1.1.3 赋值运算符重载 1.2 迭代器 1.3 容量 1.4 元素访问 1.4.1 遍历方法 1.5 修改器 1.6 字符串操作 2. string的成员常量 3. string的非成员函数 string 以下…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...