【Linux 】开发利器:深度探索 Vim 编辑器的无限可能

news2024/9/20 16:23:39
🔥 个人主页:大耳朵土土垚
🔥 所属专栏:Linux系统编程

这里将会不定期更新有关Linux的内容,欢迎大家点赞,收藏,评论🥳🥳🎉🎉🎉

文章目录

  • 1. vim的基本概念
  • 2. vim的基本操作
  • 3. vim正常模式命令集
  • 4. vim底行模式命令集
  • 5. vim的简单配置
  • 6. 结语

1. vim的基本概念

  Vim是一款强大的文本编辑器,常用于在终端环境下编辑文本文件。Vim有多种工作模式,包括普通模式、插入模式、可视模式等12种模式。其中,我们需要掌握三种最常用的模式,分别是命令模式(Normal mode)、插入模式(Insert mode)和底行模式(last line mode)。

  • 正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode下。

  • 插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

  • 底行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。

2. vim的基本操作

1)进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

vim [文件名]

有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字

如下图所示:

在这里插入图片描述

使用vim打开test.c文件,进入正常模式:

在这里插入图片描述

这时想要退出就必须输入shift+;也就是切换到底行模式,在底行输入q回车才能退出:

在这里插入图片描述

2)三种模式切换

  1. 【正常模式】切换至【插入模式】:a/i/o
  • 输入a:在当前光标的后一位置进入插入模式
  • 输入i:在当前光标处进入插入模式
  • 输入o:在当前光标处新起一行进入插入模式
  1. 【插入模式】切换至【正常模式】:Esc
     目前处于插入模式,就只能一直输入文字,要想回到正常模式可以按一下Esc键,如果想进入底行模式也只能先转回正常模式,再通过正常模式切换至底行模式。

  2. 【正常模式】切换至【底行模式】:shift + ;

其实就是输入:

 退出vim及保存文件,在底行模式下输入:

  • w (保存当前文件)
  • q(不保存直接退出vim)
  • wq (存盘并退出vim)
  • q! (不存盘强制退出vim)
  • wq!(强制保存并退出vim)

  1. 【底行模式】切换至【正常模式】:Esc
     如果想从底行模式进入插入模式也只能先转回正常模式,再通过正常模式切换至插入模式。

三种模式切换示意图如下:

在这里插入图片描述


3. vim正常模式命令集

【移动光标】
  1)按「h」:将光标往左移动
  2)按「 j」:将光标往下移动
  3)按「k」:将光标往上移动
  4)按「l」:将光标往右移动

在正常模式下vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格

  5)按「Shift+g」:移动到文章的最后
  6)按「 $ 」:移动到光标所在行的“行尾”
  7)按「^」:移动到光标所在行的“行首”
  8)按「w」:光标跳到下个字的开头
  9)按「e」:光标跳到下个字的字尾
 10)按「b」:光标回到上个字的开头
 11)按「#l」:光标移到该行的第#个位置,如:5l,56l
 12)按[gg]:进入到文本开始
 13)按「n+Enter」:当前光标向下移动n行

【翻页】
 1)按「ctrl」+「b」:屏幕往“后”移动一页
 2)按「ctrl」+「f」:屏幕往“前”移动一页
 3)按「ctrl」+「u」:屏幕往“后”移动半页
 4)按「ctrl」+「d」:屏幕往“前”移动半页

【删除】
 1)「x」:每按一次,删除光标所在位置的一个字符
 2)「#x」:例如,「6x」表示删除光标所在位置的后面(包含自己在内的)6个字符
 3)「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
 4)「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
 5)「dd」:删除光标所在行
 6)「#dd」:从光标所在行开始删除#行

【复制】
 1)「yw」:将光标所在之处到字尾的字符复制到缓冲区中
 2)「#yw」:复制#个字到缓冲区
 3)「yy」:复制光标所在行到缓冲区
 4)「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字
 5)「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能

【替换】
 1)「r」:替换光标所在处的字符
 2)「R」:替换光标所到之处的字符,直到按下「ESC」键为止

【撤销】
 1)「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复
 2)「ctrl + r」: 撤销的恢复

【更改】
 1)「cw」:更改光标所在处的字到字尾处
 2)「c#w」:例如,「c3w」表示更改3个字

【大小写切换】
 1)按「~」:完成光标所在位置字符的大小写切换
 2)按「n~」:完成光标所在位置开始往后的n个字符的大小写切换

【跳至指定行】
 1)「ctrl」+「g」列出光标所在行的行号
 2)「#G」:例如,「15G」,表示移动光标至文章的第15行行首

【注释/取消注释选中行】
 1)按下Ctrl+v、上下移动选中行、按下Shift+i、输入注释符号//、按下Esc即可多行注释
 2)按下Ctrl+v、上下移动选中行、按下d即可取消注释

4. vim底行模式命令集

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

【行号设置】
 1)「set nu」:显示行号
 2)「set nonu」:取消行号

【跳转】
 1)「#」:跳到文件中第#行

【查找字符】
 1)「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止
 2)「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止

在Vim中,?和/都用于查找字符。它们的区别在于:

  • 使用?:按下?后,你需要在命令行中输入你想要查找的字符(或字符串),然后按下回车键。Vim会从当前光标位置开始向上查找与输入匹配的内容。
  • 使用/:按下/后,你需要在命令行中输入你想要查找的字符(或字符串),然后按下回车键。Vim会从当前光标位置开始向下查找与输入匹配的内容。

【保存退出】
 1)「w」:保存文件
 2)「q」:退出vim,如果无法离开vim,可在「q」后面跟一个「!」表示强制退出
 3)「wq」:保存退出

【分屏指令】
 1)「vs 文件名」:实现多文件的编辑
 2)「Ctrl+w+w」:光标在多屏幕下进行切换

【执行指令】
 1)「!+指令」:在不退出vim的情况下,可以在指令前面加上「!」就可以执行Linux的指令,例如查看目录、编译当前代码等


5. vim的简单配置

1)配置文件的位置
  在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效:
在这里插入图片描述

  而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,就创建一个,然后我们就可以在自己目录下的vimrc文件中加入需要的配置🥳🥳

例如下图在普通用户tutu目录下没有存在.vimrc文件,所以如果我们想自己配置vim,就需要手动创建一个:

在这里插入图片描述


2)常用配置选项
【设置语法高亮】: syntax on
【显示行号】: set nu
【设置缩进的空格数为4】: set shiftwidth=4

例如:

我们使用vim打开刚刚创建的.vimrc文件,然后在插入模式下输入set nu显示行号,并保存退出:

在这里插入图片描述

当我们使用vim打开test.c文件时:

在这里插入图片描述

发现配置行号后再使用vim打开test.c文件就显示出了行号,大家也可以根据自己的喜欢进行个性化配置

以下是一些常见的Vim配置指令:

  1. 设置颜色主题:在.vimrc文件中添加如下指令:

    colorscheme <主题名称>
    

    可以在.vim目录下的colors目录中找到可用的主题文件。

  2. 设置缩进:在.vimrc文件中添加如下指令:

    set tabstop=<缩进宽度>
    set shiftwidth=<缩进宽度>
    set expandtab
    

    这个例子将缩进宽度设置为4,将Tab键转换为空格,使得Tab键按下时插入的是4个空格。

  3. 设置行号:在.vimrc文件中添加如下指令:

    set number
    

    这个指令会在每一行前显示行号。

  4. 设置自动补全:在.vimrc文件中添加如下指令:

    set completeopt=menuone,longest
    

    这个指令将打开自动补全菜单,当有多个候选项时,会自动显示菜单。

  5. 设置搜索高亮:在.vimrc文件中添加如下指令:

    set hlsearch
    

    这个指令会在搜索时高亮显示匹配的文本。

  6. 设置语法高亮:在.vimrc文件中添加如下指令:

    syntax on
    

    这个指令会启用语法高亮功能。

  7. 设置文件编码:在.vimrc文件中添加如下指令:

    set encoding=utf-8
    

    这个例子将文件编码设置为UTF-8。

请注意,在修改.vimrc文件后,需要重新启动Vim或者重新加载配置文件才能生效。可以使用如下命令重新加载.vimrc文件:

:source ~/.vimrc

6. 结语

  Vim有非常丰富的功能,可以根据具体需求进行扩展和定制。初学者可能需要一些时间来适应Vim的操作方式,但一旦掌握了Vim的一些基本操作,它将成为你在终端环境下高效编辑文本的利器。

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

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

相关文章

NC65使用UAP客开主子单据以及NC65常见的开发技术(超级详细附带图和源码)

NC65使用UAP客开主子单据以及NC65单据相关的开发技术&#xff08;超级详细附带图和源码&#xff09; 本篇主要讲述使用UAP开发工具客开主子单据包括&#xff1a;创建项目发布、创建发布元数据、生成主子单据、以及相关报错和打补丁。在单据相关技术主要包括&#xff1a;增加空按…

物流管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;员工管理&#xff0c;部门管理&#xff0c;物品分类管理&#xff0c;物流公司管理&#xff0c;物流信息管理&#xff0c;配送信息管理 微信端账号功能包括&#xff1a;系统首页&a…

半导体器件制造5G智能工厂数字孪生物联平台,推进制造业数字化转型

半导体器件制造行业作为高科技领域的核心驱动力&#xff0c;正积极探索和实践以5G智能工厂数字孪生平台为核心的新型制造模式。这一创新不仅极大地提升了生产效率与质量&#xff0c;更为制造业的未来发展绘制了一幅智能化、网络化的宏伟蓝图。 在半导体器件制造5G智能工厂中&a…

python 山峦图

效果&#xff1a; 代码&#xff1a; import matplotlib.pyplot as plt import numpy as npdef mountain_plot(data_dict, colorsNone):if colors is None:colors get_colors_from_map(len(data_dict), "Spectral")x list(data_dict.keys())# Y轴位置y_positions …

某锂电厂房项目密集母线槽上红外测温的案例分享

1 行业背景 在政策和技术推动下&#xff0c;锂电产业迅速发展&#xff0c;产业规模持续扩大&#xff0c;同时对供电设备的可靠性要求提高。密集型母线槽作为厂房重要电力传输设备若出现触头温升过高&#xff0c;可能导致停电甚至烧毁等故障&#xff0c;会对生产线安全和企业效…

Java反序列化漏洞分析

相关学习资料# http://www.freebuf.com/vuls/90840.htmlhttps://security.tencent.com/index.php/blog/msg/97http://www.tuicool.com/articles/ZvMbInehttp://www.freebuf.com/vuls/86566.htmlhttp://sec.chinabyte.com/435/13618435.shtmlhttp://www.myhack58.com/Article/ht…

【Qt笔记】QTabWidget控件详解

目录 引言 一、基本功能 二、核心属性 2.1 标签页管理 2.2 标签位置 2.3 标签形状 2.4 标签可关闭性 2.5 标签可移动性 三、信号与槽 四、高级功能 4.1 动态添加和删除标签页 4.2 自定义标签页的关闭按钮行为 4.3 标签页的上下文菜单 五、样式设置 六、应用示例…

git使用“保姆级”教程1——简介及配置项设置

一、git介绍 Git是一个开源的分布式版本控制系统&#xff0c;用于&#xff1a;敏捷高效地处理任何或小或大的项目。Git 是Linus Torvalds 为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。版本控制&#xff1a; 版本控制&#xff08;Revision control&#xff…

鸿蒙环境服务端签名直传文件到OSS

本文介绍如何在鸿蒙环境下将文件上传到OSS。 背景信息 鸿蒙环境是当下比较流行的操作环境&#xff0c;与服务端签名直传的原理类似&#xff0c;鸿蒙环境上传文件到OSS是利用OSS提供的PutObject接口来实现文件上传到OSS。关于PutObject的详细介绍&#xff0c;请参见PutObject。…

大厂常问的MySQL事务隔离到底怎么回答

什么是事务 事务就是一组原子性的SQL查询&#xff0c;或者说一个独立的工作单元。事务内的语句&#xff0c;要么全部执行成功&#xff0c;要么全部执行失败。 关于事务银行系统的应用是解释事务必要性的一个经典例子。 假设一个银行的数据库有两张表&#xff1a;支票表&#x…

OpenAI o1大模型:提示词工程已死

OpenAI 最近发布了最新大模型 o1&#xff0c;通过强化学习训练来执行复杂的推理任务&#xff0c;o1 在多项基准测试中展现了博士级别的推理能力&#xff0c;甚至在某些情况下可以与人类专家相媲美。 当你使用 o1 的时候&#xff0c;会发现文档中多了一项提示词建议。 翻译一下&…

OBB-最小外接矩形包围框-原理-代码实现

前言 定义&#xff1a;OBB是相对于物体方向对齐的包围盒&#xff0c;不再局限于坐标轴对齐&#xff0c;因此包围点云时更加紧密。优点&#xff1a;能够更好地贴合物体形状&#xff0c;减少空白区域。缺点&#xff1a;计算较为复杂&#xff0c;需要计算物体的主方向&#xff0c…

二叉树的遍历【C++】

对于二叉树系列的题&#xff0c;必须要会遍历二叉树。 遍历的有&#xff1a;深度优先&#xff1a;前序、中序、后序&#xff0c;广度优先&#xff1a;层序遍历 什么序是指处理根节点在哪个位置&#xff0c;比如前序是指处理节点顺序&#xff1a;根左右。 接下来要说明的是&…

深入浅出Docker

1. Docker引擎 Docker引擎是用来运行和管理容器的核心软件。通常人们会简单的将其指代为Docker或Docker平台。 基于开放容器计划&#xff08;OCI&#xff09;相关的标准要求&#xff0c;Docker引擎采用了模块化的设计原则&#xff0c;其组件是可替换的。 Docker引擎由如下主…

从理论到实践:全面指导企业实现数字化转型的战略路径

全球企业数字化转型的必然性 在全球范围内&#xff0c;数字化转型成为了企业战略中的核心命题。随着云计算、大数据、人工智能等新兴技术的快速发展&#xff0c;企业的运营模式、管理体系及客户体验正在发生深刻的变革。数字技术不仅为企业带来了新的商业机会&#xff0c;还使…

【Elasticsearch】-图片向量化存储

需要结合深度学习模型 1、pom依赖 注意结尾的webp-imageio 包&#xff0c;用于解决ImageIO.read读取部分图片返回为null的问题 <dependency><groupId>org.openpnp</groupId><artifactId>opencv</artifactId><version>4.7.0-0</versio…

【2025】中医药健康管理小程序(安卓原生开发+用户+管理员)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

海报制作哪个软件好?这些在线工具不容错过

国庆节的脚步越来越近&#xff0c;不少公司正计划利用这个时机开展一些特别的庆典活动。 在这些活动中&#xff0c;海报作为一种传统的宣传方式&#xff0c;仍然是不可或缺的。但在制作海报时&#xff0c;我们可能会遇到创意瓶颈、时间限制或者预算约束等问题。 幸运的是&…

高棉语翻译神器上线!中柬互译,OCR识别,语音翻译一应俱全,《柬埔寨语翻译通》App

全新的高棉语翻译神器已经正式上架&#xff01; 无论你是安卓还是iOS用户&#xff0c;现在都可以轻松开始使用&#xff0c;开启你的翻译之旅&#xff01; 这款应用不仅仅是一个简单的翻译工具&#xff0c;它还支持中文与高棉语的双向翻译。翻译结果可以语音播放&#xff0c;翻…

AI服务器是什么?为什么要用AI服务器?

AI服务器的定义 AI服务器是一种专门为人工智能应用设计的服务器&#xff0c;它采用异构形式的硬件架构&#xff0c;通常搭载GPU、FPGA、ASIC等加速芯片&#xff0c;利用CPU与加速芯片的组合来满足高吞吐量互联的需求&#xff0c;为自然语言处理、计算机视觉、机器学习等人工智…