从实用的角度聊聊Linux下文本编辑器VIM

news2025/4/3 5:58:50

本文从实用的角度聊聊Vim的常用命令。何为实用?我举个不实用的例子大家就明白了,用vim写代码。;)

“vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。”   ——摘自百度百科

vim功能强大,但很多人写代码都不用,因为有更好的编辑代码的软件(时代进步了)。但尽管如此,依然无法掩饰vim编辑器在某些领域用处不凡,有很多配置文件用vim编辑我感觉非他莫属,下面来聊一聊vim的使用。重点讲解复制一段文本粘贴文本删除行查找字符串等这些常用的操作。

vim是vi的增强版本,在终端输入vim命令后面加上文件名即可打开文件,例如:

vim test.txt

当然文件也可以是加路径的,没问题。如果目标文件存在,则vim打开该文件,若目标文件不存在,则新建该文件。这一点上比较人性化,不错。当你打开一个文件就会有下面的界面,如下图!

其中打开文件还有几种常用的方式:

vim -R test.txt

vim 加-R,这代表以只读的模式打开文本。如果打开文本想直接定位到某行,可以如下操作:

vim test.txt +10

这代表打开test.txt文本同时定位到第10行的位置。

当你刚打开这个编辑器的时候发现当前状态是无法输入的,只可以移动光标。因为vim拥有三种模式:命令模式、插入模式和ex模式。刚打开的时候的模式为命令模式,在这个状态下,无法输入,在命令模式中按“i”键可以进入到插入模式,在这个插入模式下才进行文本输入。在插入模式中按esc可以返回命令模式。在命令模式中按“:”可以进入ex模式,在ex模式中可以保存、修改和退出。下面列一下命令模式和插入模式和ex模式的操作。首先说一句,任何模式都可以通过esc键回到命令模式。

命令模式:通常用于文本操作,例如复制粘贴一类。

i:在光标前插入文本。

o:在当前行的下面插入新行。

dd:删除正行。

u:撤销上一个操作。

y:复制选中文本。

yy :复制当前行。

n+yy:n是数字,例如,先按5,接着按yy,则是将5行内容复制。

v:进入可视模式,进入可视模式后,通过上下左右可以选出文本,之后通过y进行复制。

V:选择当前行,通过j和k进行多行选择,之后通过y进行复制。

p:粘贴。

r:替换当前关键字。

/ :查找关键字,输入/ 后面加上想查找的字符串后回车,通过n或N,会切换上一个匹配项或下一个匹配项。

?:查找字符串,和上面的“/”查找正好相反,使用方式和上面的相同,但是查找的是上一个匹配项,n或N也和上面的命令相反,n会跳到上一个匹配项,N会跳到下一个匹配项。

插入模式:

命令模式下输入“i”进入该模式,这个模式非常之简单,因为插入模式就是输入文本。如果要对文本进行粘贴操作等等,刚才我们说过按esc回到命令模式。

EX模式

:w 保存当前修改。

:q 退出。

:q! 强制退出。

:x 保存并退出。

:set number 显示行号。(可以简写为:set nu)

:! 执行一个系统命令并显示结果。例如,:!ls,ls是系统命令。

:sh 切换到终端命令行,使用ctrl+d切换回vim。

:set nohls 搜索时会有高亮字,该命令用于去除高亮字背景。

:set hls 重启搜索时的高亮字。

现在来欣赏一下吧,用vim编辑器编写的在程序界经典到不容错过的helloworld程序。

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

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

相关文章

佳能imageRUNNER 2206N基本参数及管理员密码

基本参数: 产品类型 激光数码复合机 颜色类型 黑白 涵盖功能 复印/打印/扫描 速度类型 低速 最大原稿尺寸 A3 复印/打印方式 激光静电转印方式 感光材料 OPC 显影系统 干式单组分显影 定影…

社交类 APP 设计:打造高用户粘性的界面

在当今数字化时代,社交类APP已成为人们日常生活中不可或缺的一部分。然而,随着市场竞争的加剧,如何通过设计提升用户粘性成为社交类APP成功的关键。本文将从设计的关键要素、用户界面优化、功能创新、个性化体验以及持续优化等方面&#xff0…

数据编排与Dagster:解锁现代数据管理的核心工具

在数据驱动的时代,如何高效管理复杂的数据管道、确保数据质量并实现团队协作?本文深入探讨数据编排的核心概念,解析其与传统编排器的差异,并聚焦开源工具Dagster如何以“资产为中心”的理念革新数据开发流程,助力企业构…

Jmeter的压测使用

Jmeter基础功能回顾 一、创建Jmeter脚本 1、录制新建 (1)适用群体:初学者 2、手动创建 (1)需要了解Jmeter的常用组件 元件:多个类似功能组件的容器(类似于类) 各元件作用 组件…

kubernetes》》k8s》》Deployment》》ClusterIP、LoadBalancer、Ingress 内部访问、外边访问

Nginx部署 K8s 集群内外访问服务的方式 节点 Kubernetes 集群中的服务器(指单台) 集群 Kubernetes 管理的一组服务器的集合 边界路由器 为局域网和Internet路由数据包的路由器,执行防火墙保护局域网络 集群网络 遵循Kubernetes网络模型实现集…

Transformer 通关秘籍8:词向量如何表示近义词?

上一节已经完成了 token 到词向量的转换。那么,使用转换后的词嵌入向量便可以表示 token 之间的语义了吗?便可以表示两个单词是否是近义词,是否是反义词了吗? 是的。 接下来先通过一个例子,来直观地理解一下词嵌入向…

【MVC简介-产生原因、演变历史、核心思想、组成部分、使用场景】

MVC简介 产生原因: MVC(Model-View-Controller)模式诞生于20世纪70年代,由Trygve Reenskaug在施乐帕克研究中心(Xerox PARC)为Smalltalk语言设计,目的是解决图形用户界面(GUI&…

基于NebulaGraph构建省市区乡镇街道知识图谱(二)

上次我们有讲到构建知识图谱,但是在实际使用的时候会发现某些乡镇街道丢失的问题,因为VID必须全局唯一,覆盖导致原因,另外在全国大批量导入时速度非常慢,为此,我们重新优化表结构与导入语法。 1. 表及索引…

论文浅尝 | Interactive-KBQA:基于大语言模型的多轮交互KBQA(ACL2024)

转载至:何骏昊 开放知识图谱 原文地址:论文浅尝 | Interactive-KBQA:基于大语言模型的多轮交互KBQA(ACL2024) 笔记整理:何骏昊,东南大学硕士,研究方向为语义解析 论文链接&#xff…

linux -- php 扩展之xlswriter

xlswriter - PHP 最强性能 Excel 扩展 linux 安装 完整编译安装步骤 ## 下载wget https://pecl.php.net/get/xlswriter tar -zxvf xlswriter cd xlswriterphpize # 执行配置 ./configure # 编译 make make install ./configure 如果报错,就指定配置路径 …

Dockerfile文件构建镜像Anaconda+Python教程

文章目录 前言Dockerfile 核心模块解析**一、Dockerfile基础镜像选择二、系统基础配置1、时区设置2、镜像源替换 三、系统依赖安装四、复制本地文件五、指定路径六、Anaconda环境配置1、anaconda环境安装2、配置虚拟环境3、创建conda虚拟环境4、启动和安装环境 七、完整dockerf…

本地部署大模型-web界面(ollama + open-webui)

一、安装ollama 二、安装部署open-webui 1、项目运行环境 (1)配置python环境—官方下载链接 可通过命令行直接更改python镜像源为阿里云镜像源: >pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/也可手动修…

Java虚拟机JVM知识点(已完结)

JVM内存模型 介绍下内存模型 根据JDK8的规范,我们的JVM内存模型可以拆分为:程序计数器、Java虚拟机栈、堆、元空间、本地方法栈,还有一部分叫直接内存,属于操作系统的本地内存,也是可以直接操作的。 详细解释一下 程…

【C++进阶四】vector模拟实现

目录 1.构造函数 (1)无参构造 (2)带参构造函数 (3)用迭代器构造初始化函数 (4)拷贝构造函数 2.operator= 3.operator[] 4.size() 5.capacity() 6.push_back 7.reserve 8.迭代器(vector的原生指针) 9.resize 10.pop_back 11.insert 12.erase 13.memcpy…

VUE3+Mapbox-GL 实现鼠标绘制矩形功能的详细代码和讲解

以下是如何使用 Mapbox GL JS 实现鼠标绘制矩形功能的详细代码和讲解。Mapbox GL JS 是一个强大的 JavaScript 库,可以用来创建交互式地图。下面将通过监听鼠标事件并动态更新地图图层来实现这一功能。 实现步骤 初始化地图 在 HTML 文件中引入 Mapbox GL JS 库&…

《筋斗云的K8s容器化迁移》

点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 文章目录 **第一章:斗战胜佛的延迟焦虑****第二章:微服务化的紧箍咒****第三章:混沌中的流量劫持****第四章:量子筋斗的终极形态****终章&…

基于SpringBoot的“考研学习分享平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“考研学习分享平台”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体功能结构图 局部E-R图 系统首页界面 …

Web3.0隐私计算与云手机的结合

Web3.0隐私计算与云手机的结合 Web3.0隐私计算与云手机的结合,标志着从“数据垄断”向“数据自主”的范式转变。通过技术互补,两者能够构建更安全、高效且用户主导的数字生态。尽管面临技术整合和成本挑战,但随着区块链、AI和分布式存储的成…

Linux上位机开发实践(超越MPP去开发产品)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于芯片厂商来说,肯定希望客户的应用和自己的芯片绑定地越紧密越好。最好就是,他们自己成为客户的独家供应商。但是对于嵌…

SpringBean模块(二)bean初始化(2)和容器初始化顺序的比较--引入ApplicationContextInitializer

前面介绍了获取容器可以让spring bean实现ApplicationContextAware,实际也是初始化执行了setApplicationContext接口, 初始化接口还可以借助一些注解或者spring bean的初始化方法,那么他们的执行顺序是什么样的呢? 一、验证&…