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

什么是Vim

Vim可是Linux中最强大、最受欢迎的文本编辑器之一,很多程序员、系统管理员都离不开它。要说清楚Vim的各种功能和用法,似乎有点长,但我会尽量用简单通俗的方式,把Vim的核心知识讲清楚,让你能一步一步开始使用它。

一、什么是Vim?

  • Vim,全名“Vi IMproved”,就是“改良版的Vi”。
  • Vi 是Unix/Linux系统中最经典的文本编辑器,非常基础,但操作复杂且强大。
  • Vim 在Vi的基础上加入了很多新功能,让编辑变得更方便、更强大。

简单说:Vim就是一个超级强大的文本编辑工具,你可以用它写代码、修改配置文件、编辑各种文本内容。


二、如何启动Vim?

在终端(命令行)输入:

vim

会打开一个空白的文件(新文件)或者你指定的文件,比如: 

vim filename.txt

三、Vim的两大基本模式

Vim比普通文本编辑器有点特别,它有两大主要操作模式

1. 普通模式(Normal mode)

也叫命令模式,类似浏览状态,你可以用各种键盘命令操作文本(删除、复制、粘贴、保存等)。

2. 插入模式(Insert mode)

用来编辑文本,可以像普通编辑器一样打字。

切换方式

  • 启动时默认在普通模式。
  • 想输入文本,按 i(insert)进入 插入模式。
  • 输入完毕后,按 Esc 返回普通模式。

四、Vim的基本操作(通俗版)

1. 进入文件

  • vim filename:打开文件
  • 空文件可以直接编辑新内容

2. 基本的文本插入

  • 在普通模式:按 i 进入插入模式
  • 你可以打字了,比如“Hello World”
  • 输入完毕,按 Esc 返回普通模式

3. 保存/退出

  • 在普通模式:
    • 输入 :w 代表“write”(保存)
    • 输入 :q 代表“quit”(退出)
    • 一起写::wq 或 ZZ 也可以(保存并退出)
    • 不保存退出::q!

4. 移动光标

  • h:左
  • l:右
  • j:下
  • k:上
  • 其实也可以用方向键,但用hjkl更方便(键位相似于游戏方向键)

5. 删除文本

  • x:删除光标所在字符
  • dd:删除整行
  • dw:删除单词

6. 复制粘贴

  • yy:复制(yank)整行
  • p:粘贴到光标后面
  • u:撤销刚刚的操作

五、Vim的常用操作(详细一点)

操作说明快捷键
进入插入模式输入文本i
退出插入/普通模式按 EscEsc
保存当前文件保存操作:w
退出Vim(不保存)退出不保存:q!
保存并退出保存后退出:wq 或 ZZ
移动光标在普通模式下hjkl
复制整行yy(“yank”)
粘贴p(在光标后粘贴)
删除操作xdddw
撤销操作u
重做操作Ctrl + r
搜索文本/<关键词>(向前搜索)
替换(当前行):s/旧文本/新文本/
进入命令行窗口: 显示命令

六、Vim的高级技巧(让你变大神)

1. 复制多行

在普通模式下:

  • V 进入可视行选择(Visual Line mode)
  • 移动光标选择多行
  • y 复制全部选中的内容

2. 粘贴到指定位置

  • 复制后,可以在其他地方用 p

3. 查找和替换

假设你想把所有“foo”改成“bar”:

:%s/foo/bar/g

这会在整个文件里替换所有“foo”。

4. 自动缩进

用:

gg=G

可以自动格式化整个文件(所有代码缩进)。

5. 复制到系统粘贴板(在支持的环境)

"+y         # 复制到系统粘贴板
"+p         # 粘贴系统粘贴板内容

:部分Vim版本需要支持clipboard功能。


七、Vim配置(个性化设置)

Vim可以通过配置文件~/.vimrc来自定义:

例如:

set nocompatible        " 关闭兼容模式,启用现代特性
syntax on               " 开启语法高亮
set number              " 显示行号
set cindent             " 自动缩进
set tabstop=4           " 制表符宽度4
set expandtab           " 将Tab变空格

这样可以让Vim变得更符合你的习惯。


八、总结:如何逐步学习Vim

  1. 了解基本操作:进入文件、插入文本、保存退出
  2. 熟练移动光标和删除操作
  3. 学习搜索、替换和复制粘贴
  4. 尝试配置文件,个性化Vim
  5. 多练习,逐步熟悉操作

九、鼓励的话

刚开始用Vim可能会觉得有点“生硬”,但坚持用几天,你会发现它的效率远远超过普通编辑器。其实,Vim的强大在于它的“命令”让你快速操作文本,一旦掌握,写代码、编辑配置会变得非常轻松。

相关文章:

什么是Vim

Vim可是Linux中最强大、最受欢迎的文本编辑器之一&#xff0c;很多程序员、系统管理员都离不开它。要说清楚Vim的各种功能和用法&#xff0c;似乎有点长&#xff0c;但我会尽量用简单通俗的方式&#xff0c;把Vim的核心知识讲清楚&#xff0c;让你能一步一步开始使用它。 一、…...

QT5.14安装以及新建基础项目

进入qt中文网站&#xff1a;Qt | 软件开发全周期的各阶段工具 额&#xff0c;考虑新手可能还是找不到&#xff0c;我就分享一下我下载的的吧 通过网盘分享的文件&#xff1a;qt-opensource-windows-x86-5.14.2.exe 链接:https://pan.baidu.com/s/1yQTRp-b_ISje5B3UWb7Apw?pw…...

Java Spring MVC -01

SpringMVC 是一种基于 的实现 MVC 设计模式的请求驱动类型的轻量级 Web 框架&#xff0c;属于 Spring FrameWork 的后续产品&#xff0c;已经融合在 Spring Web Flow 中。 First:SpringMVC-01-SpringMVC 概述 SpringMVC 是 Spring 框架的一个模块&#xff0c;用于构建 Web 应…...

KV cache 缓存与量化:加速大型语言模型推理的关键技术

引言 在大型语言模型&#xff08;LLM&#xff09;的推理过程中&#xff0c;KV 缓存&#xff08;Key-Value Cache&#xff09; 是一项至关重要的优化技术。自回归生成&#xff08;如逐 token 生成文本&#xff09;的特性决定了模型需要反复利用历史token的注意力计算结果&#…...

视频编解码学习十一之视频原始数据

一、视频未编码前的原始数据是怎样的&#xff1f; 视频在未编码前的原始数据被称为 原始视频数据&#xff08;Raw Video Data&#xff09;&#xff0c;主要是按照帧&#xff08;Frame&#xff09;来组织的图像序列。每一帧本质上就是一张图片&#xff0c;通常采用某种颜色格式…...

[Java实战]Spring Boot 3 整合 Apache Shiro(二十一)

[Java实战]Spring Boot 3 整合 Apache Shiro&#xff08;二十一&#xff09; 引言 在复杂的业务系统中&#xff0c;安全控制&#xff08;认证、授权、加密&#xff09;是核心需求。相比于 Spring Security 的重量级设计&#xff0c;Apache Shiro 凭借其简洁的 API 和灵活的扩…...

Cursor 编辑器 的 高级使用技巧与创意玩法

以下是针对 Cursor 编辑器 的 高级使用技巧与创意玩法 深度解析,涵盖代码生成优化、工作流定制、隐藏功能等层面,助你将 AI 辅助编程效率提升至新高度: 一、代码生成进阶技巧 1. 精准控制生成粒度 行级控制: 在代码行内用 // > 指定生成方向(替代模糊注释)def merge_…...

mysql性能提升方法大汇总

前言 最近在开发自己的小程序的时候&#xff0c;由于业务功能对系统性能的要求很高&#xff0c;系统性能损耗又主要在mysql上&#xff0c;而业务功能的数据表很多&#xff0c;单表数据量也很大&#xff0c;又涉及到很多场景的数据查询&#xff0c;所以我针对mysql调用做了优化…...

C++标准流详解:cin/cout的绑定机制与cerr/clog的缓冲差异

在C中&#xff0c;标准错误流&#xff08;cerr&#xff09;、标准日志流&#xff08;clog&#xff09;与标准输入输出流&#xff08;cin/cout&#xff09;的行为差异主要体现在缓冲机制和绑定关系上。以下是详细解释&#xff0c;并结合cin和cout的关联性进行对比分析&#xff1…...

BlockMesh Ai项目 监控节点部署教程

项目介绍 BlockMesh 是一个创新、开放且安全的网络&#xff0c;允许用户轻松地将多余的带宽货币化。 它为用户提供了被动获利并参与人工智能数据层、在线隐私、开源和区块链行业前沿的绝佳机会。 此教程为Linux系统教程 教程开始 首先到这里注册账号&#xff0c;注册后保存…...

【Bluedroid】蓝牙 HID DEVICE 初始化流程源码解析

本文深入剖析Android蓝牙协议栈中HID设备&#xff08;BT-HD&#xff09;服务的初始化与启用流程&#xff0c;从接口初始化、服务掩码管理、服务请求路由到属性回调通知&#xff0c;完整展现蓝牙HID服务激活的技术路径。通过代码逻辑梳理&#xff0c;揭示服务启用的核心机制&…...

iOS创建Certificate证书、制作p12证书流程

一、创建Certificates 1、第一步得先在苹果电脑上创建一个.certSigningRequest的文件。首先打开钥匙串&#xff0c;使用快捷键【command空格】——输入【钥匙串】回车&#xff08;找不到就搜一下钥匙串访问使用手册&#xff09; 2、然后在苹果电脑的左上角菜单栏选择【钥匙串…...

curl发送数据不为null,但是后端接收到为null

curl -X POST http://localhost:8080/xiaozhi/test --header "Content-Type: application/json" -d "{\"age\":123}"经过检查发现注解导入错误 正确的应该是 import org.springframework.web.bind.annotation.RequestBody;...

blazor与硬件通信实现案例

在网页接入硬件交互通信方案这篇博客中,曾经提到了网页中接入各种硬件操作的方法,即通过Windows Service作为指令的中转,并建立websocket通信连接,进而实现接入硬件的各种操作。这篇博客就以实际的案例来讲解具体怎么实现。 一、建立Windows Service项目 比如我就建立了一…...

Linux下mysql的安装与远程链接

linux安装mysql 01下载依赖&#xff1a; 找到网址/download下&#xff1a; 最下面MySQL Community&#xff08;mysql社区版&#xff09; 选择MySQL Community Server 选择对应的mysql版本 操作系统版本选择 根据操作系统的版本选择具体版本号 下载离线版本 安装包详情 0…...

esp32硬件支持AT指令

步骤1&#xff1a;下载AT固件 从乐鑫官网或Git鑫GitHub仓库&#xff08;https://github.com/espressif/esp-at&#xff09;获取对应ESP32型号的AT固件&#xff08;如ESP32-AT.bin&#xff09;。 步骤2&#xff1a;安装烧录工具 使用 esptool.py&#xff08;命令行工具&#…...

【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)

题意 需要维护 n n n \times n nn 平面上的整点&#xff0c;每个点 ( x , y ) (x, y) (x,y) 有权值 V ( x , y ) V(x, y) V(x,y)&#xff0c;初始都为 0 0 0。 同时给定 n n n 次修改操作&#xff0c;每次修改给出 x 1 , x 2 , y 1 , y 2 , v x_1, x_2, y_1, y_2, v x…...

C++中的虚表和虚表指针的原理和示例

一、基本概念 1. 什么是虚函数&#xff08;virtual function&#xff09;&#xff1f; 虚函数是用 virtual 关键字修饰的成员函数&#xff0c;支持运行时多态&#xff08;dynamic polymorphism&#xff09;。通过基类指针或引用调用派生类重写的函数。 class Base { public:…...

qemu热迁移后内存占用突增问题

1.问题描述 虚拟机配置了memoryBackingmemfd的情况下&#xff0c;热迁移虚拟机后&#xff0c;在目的节点 qemu-kvm 进程占用 rss 会突增很多。 如果去掉这个配置没这个现象。 <memoryBacking><source typememfd/> </memoryBacking>2.问题现象 2.1 不配置…...

鸿蒙 Core File Kit(文件基础服务)之简单使用文件

查看常用的沙箱目录 应用沙箱文件访问关系图 应用文件目录结构图 查看常用的沙箱目录 Entry Component struct Index {build() {Button(查看常用的沙箱目录).onClick(_>{let ctx getContext() // UI下只能使用这个方法&#xff0c;不能 this.contextconsole.log(--应用缓存…...

AI 检测原创论文:技术迷思与教育本质的悖论思考

当高校将 AI 写作检测工具作为学术诚信的 "电子判官"&#xff0c;一场由技术理性引发的教育异化正在悄然上演。GPT-4 检测工具将人类创作的论文误判为 AI 生成的概率高达 23%&#xff08;斯坦福大学 2024 年研究数据&#xff09;&#xff0c;这种 "以 AI 制 AI&…...

基于Qt的app开发第七天

写在前面 笔者是大一下计科生&#xff0c;标题这个项目是笔者这个学期的课设&#xff0c;与学长共创&#xff0c;我负责客户端部分&#xff0c;现在已经实现了待办板块的新建、修改。 这个项目目前已经走上正轨了&#xff0c;博主也实现了主要功能的从无到有&#xff…...

目标检测任务常用脚本1——将YOLO格式的数据集转换成VOC格式的数据集

在目标检测任务中&#xff0c;不同框架使用的标注格式各不相同。常见的框架中&#xff0c;YOLO 使用 .txt 文件进行标注&#xff0c;而 PASCAL VOC 则使用 .xml 文件。如果你需要将一个 YOLO 格式的数据集转换为 VOC 格式以便适配其他模型&#xff0c;本文提供了一个结构清晰、…...

NLTK库: 数据集3-分类与标注语料(Categorized and Tagged Corpora)

NLTK库: 数据集3-分类与标注语料&#xff08;Categorized and Tagged Corpora&#xff09; 1.二分类语料 主要是电影语料&#xff0c;和情绪(积极消极、主观客观)有关&#xff0c;有以下2个语料&#xff1a; 1.1 movie_reviews: IMDb 影评 IMDb&#xff08;Internet Movie …...

uni-app学习笔记五-vue3响应式基础

一.使用ref定义响应式变量 在组合式 API 中&#xff0c;推荐使用 ref() 函数来声明响应式状态&#xff0c;ref() 接收参数&#xff0c;并将其包裹在一个带有 .value 属性的 ref 对象中返回 示例代码&#xff1a; <template> <view>{{ num1 }}</view><vi…...

ElasticSeach快速上手笔记-入门篇

由来 Elasticsearch 是一个基于 Apache Lucene 构建的分布式、高扩展、近实时的搜索与数据分析引擎&#xff0c;能够高效处理结构化和非结构化数据的全文检索及复杂分析 搜索&#xff0c;即用户在平台如百度进行输入关键词&#xff0c;由后端给出搜索结果数据进行返回&#x…...

eward hacking 问题 强化学习钻空子

Reward Hacking的本质是目标对齐&#xff08;Goal Alignment&#xff09;失败 “Reward hacking”&#xff08;奖励黑客&#xff09;是强化学习或AI系统中常见的问题&#xff0c;通俗地说就是&#xff1a; AI模型“钻空子”&#xff0c;用投机取巧的方式来拿高分&#xff0c;而…...

uniapp开发4--实现耗时操作的加载动画效果

下面是使用 Vue 组件的方式&#xff0c;在 uni-app 中封装耗时操作的加载动画效果及全屏遮罩层的组件的示例。 组件结构&#xff1a; components/loading.vue: 组件文件&#xff0c;包含 HTML 结构、样式和 JS 逻辑。 代码&#xff1a; <template><view class&…...

《ffplay 读线程与解码线程分析:从初始化到 seek 操作,对比视频与音频解码的差异》

1 read-thread 1.1 初始化部分 1.分配. avformat_alloc_context 创建上下⽂ ic avformat_alloc_context();if (!ic) {av_log(NULL, AV_LOG_FATAL, "Could not allocate context.\n");ret AVERROR(ENOMEM);goto fail;}2 ic->interrupt_callback.callback deco…...

MySQL推荐书单:从入门到精通

给大家介绍一些 MySQL 从入门到精通的经典书单&#xff0c;可以基于不同学习阶段的需求进行选择。 入门 MySQL必知必会 这本书继承了《SQL必知必会》的优点&#xff0c;专门针对 MySQL 用户&#xff0c;没有过多阐述数据库基础理论&#xff0c;而是紧贴实战&#xff0c;直接从…...