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

什么是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;让你能一步一步开始使用它。 一、…...

【Unity3D插件】Unity3D插件之天气系统/日夜系统插件-UniStorm

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 一、前言 1.0136537.8&#xff0c;1.023651377.4&#xff0c;每天进步一点点&#xff0c;一年后就差了几十倍的差距&#xff0c;加油吧少年。 UniStorm是一款强大的动态昼夜天气系统&…...

AIGC时代的内容安全:AI检测技术如何应对新型风险挑战?

在数字时代&#xff0c;互联网内容以文本、图像、音频和视频等形式呈现爆发式增长&#xff0c;深刻塑造了信息传播的格局。然而&#xff0c;内容的快速传播也带来了严峻挑战&#xff1a;违法信息&#xff08;如涉黄、涉政&#xff09;、虚假广告、网络暴力等内容不仅威胁用户体…...

SAGAR线上网页程序生成准随机结构(SQS)

SAGAR线上网页程序地址 http://sagar.compphys.cn/sagar 页面最上方默认使用8个原子的Si为基础结构。 打开网页 选择C1模块 在下方填入结构信息&#xff0c;以及掺杂入原子和数量 这里则设置掺杂入4个C原子&#xff0c;然后点击submit&#xff0c;则会自动生成并让你下载一根压…...

Wi-Fi网络角色及功能详解

在 Wi-Fi 网络中&#xff0c;不同的角色和组件协同工作以实现无线通信。以下是 Wi-Fi 中的主要角色及其功能&#xff1a; 1. 基础设施模式&#xff08;Infrastructure Mode&#xff09; 这是最常见的 Wi-Fi 网络架构&#xff0c;包含以下核心角色&#xff1a; 接入点&#xff…...

18.three官方示例+编辑器+AI快速学习webgl_buffergeometry_points_interleaved

本实例主要讲解内容 这个Three.js示例展示了如何使用BufferGeometry和Points对象创建高效的粒子系统。通过共享内存缓冲区和交错存储顶点数据&#xff0c;实现了50万个粒子的流畅渲染&#xff0c;并为每个粒子设置基于位置的颜色。 核心技术包括&#xff1a; 使用ArrayBuffe…...

Oracle 19c 静默安装

文章目录 环境介绍安装包下载准备工作配置 yum 源安装依赖包创建用户和用户组创建必要目录关闭 SELinux配置内核参数配置资源限制配置环境变量 Oracle 19c 安装解压缩编辑相应文件执行静默安装配置监听静默创建数据库 数据库维护连接数据库 环境介绍 操作系统为 CentOS 7.9 O…...

vscode 默认环境路径

1.下面放在项目根目录上&#xff1a; .vscode/settings.json 2.settings.json内容&#xff1a; {"python.analysis.extraPaths": ["${workspaceFolder}"],"python.defaultInterpreterPath": "/shared_disk/users/lbg/envs/py310_see3d/b…...

电力系统静态安全因素与动态安全因素的区别及具体分类

电力系统的安全分析分为静态安全和动态安全两类。静态安全分析关注系统在稳态或小扰动下的安全裕度&#xff0c;动态安全分析则关注系统在大扰动或暂态过程中的稳定能力。 一、静态安全因素 频率静态安全 因素&#xff1a; 发电与负荷的静态平衡&#xff1a;需保证稳态下的发电…...

arduinoIDE核心库更新导致的ESP32开发板神秘接口更换和三方库冲突

ESP32开发遇到的问题的解决记录贴 arduinoIDE核心库更新导致的ESP32开发板神秘接口更换和三方库冲突情况描述其余解决方法&#xff08;网上查的&#xff0c;未验证&#xff09;&#xff1a; arduinoIDE核心库更新导致的ESP32开发板神秘接口更换和三方库冲突 情况描述 当我将a…...

MCU开启浮点计算FPU

FPU 测试 1. FPU 简介2. 协处理器控制寄存器&#xff08;CPACR&#xff09;3. 开启FPU4. 验证FPU&#xff08;Julia 分形实验&#xff09; 1. FPU 简介 FPU 即浮点运算单元&#xff08;Float Point Unit&#xff09;。浮点运算&#xff0c;对于定点 CPU&#xff08;没有 FPU 的…...

vue3+three 搭建平面上滚动旋转的几何体

嗨&#xff0c;我是小路。今天主要和大家分享的主题是“vue3three 搭建平面上滚动旋转的几何体”。 在现代前端开发中&#xff0c;结合 Vue 3 的响应式能力和 Three.js 的强大 3D 渲染能力&#xff0c;可以轻松构建出令人惊叹的交互式三维场景。本文将带你一步步实现一…...

《Python星球日记》 第59天:生成对抗网络(GAN)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、引言二、GAN的基本原理1. 天才的创意:生成器与判别器的博弈过程2. 训练流程与目标函数三、常见GAN变体1. DCGAN (深度卷积生成对抗网络)2.…...

用户态到内核态:Linux信号传递的九重门(二)

1. 保存信号 1.1. 信号其他相关常见概念 实际执⾏信号的处理动作称为信号递达(Delivery)。 信号从产⽣到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞 (Block )某个信号。 被阻塞的信号产⽣时将保持在未决状态,直到进程解除对此信号的阻塞,才执⾏递达的动作。 1.…...

【深度学习-Day 9】机器学习核心概念入门:监督、无监督与强化学习全解析

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

android特许权限调试

新aosp中新应用无权限&#xff0c;但需要正常运行&#xff0c;来排查权限问题 ro.control_privapp_permissionslog这样做可确保设备保持工作状态&#xff0c;同时仍然提供违规行为列表。错误消息格式如下&#xff1a; PackageManager: Privileged permission {PERMISSION_NAM…...

如何避免Java中的ConcurrentModificationException

引言 在Java开发中&#xff0c;操作集合&#xff08;如List、Set、Map&#xff09;时&#xff0c;许多开发者都遇到过ConcurrentModificationException。这个异常通常出现在遍历集合的同时尝试修改其结构&#xff08;如添加或删除元素&#xff09;。本文将深入探讨这一异常的根…...

5月12日复盘-RNN

5月12日复盘 二、RNN 模型 1.先导 1.1 为什么需要循环神经网络 RNN ​ 上图是一幅全连接神经网络图&#xff0c;我们可以看到输入层-隐藏层-输出层&#xff0c;他们每一层之间是相互独立地&#xff0c;(框框里面代表同一层)&#xff0c;每一次输入生成一个节点&#xff0c;同…...

linux小主机搭建自己的nas(二)docker卸载navidrome

测试的时候安装了一个音乐播放器在root下面&#xff0c;现在先给他删掉 停止并删除容器 docker ps -a | grep navidrome# 停止并删除容器&#xff08;替换 YOUR_CONTAINER_NAME 为实际名称&#xff09; docker stop YOUR_CONTAINER_NAME && docker rm YOUR_CONTAINER…...

.NET 在鸿蒙系统上的适配现状

目录 .NET 在鸿蒙系统上的适配现状 鸿蒙系统对虚拟机的限制与.NET的适配挑战 NativeAOT 在鸿蒙系统中的适配原理与实现方式 已知问题与解决方案&#xff1a;鸿蒙系统中的 syscall 限制 鸿蒙系统适配中的技术难点与解决方案 跨平台编译的挑战与应对策略 依赖库管理与兼容…...

01-centos离线升级至almalinux

官网链接官方代码调整&#xff1a; 1. vi repositories/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py with mounting.BindMount(sourceuserspace_dir, targetos.path.join(context.base_dir, install_root_dir.lstrip(/))):_restore_persi…...

Python 处理图像并生成 JSONL 元数据文件 - 固定text版本

Python 处理图像并生成 JSONL 元数据文件 - 固定text版本 flyfish JSONL&#xff08;JSON Lines&#xff09;简介 JSONL&#xff08;JSON Lines&#xff0c;也称为 newline-delimited JSON&#xff09;是一种轻量级的数据序列化格式&#xff0c;由一系列独立的 JSON 对象组成…...

uniapp使用npm下载

uniapp的项目在使用HBuilder X创建时是不会有node_modules文件夹的&#xff0c;如下图所示&#xff1a; 但是uni-app不管基于哪个框架&#xff0c;它内部一定是有node.js的&#xff0c;否则没有办法去实现框架层面的一些东西&#xff0c;只是说它略微有点差异。具体差异表现在…...

前端面试每日三题 - Day 31

这是我为准备前端/全栈开发工程师面试整理的第30天每日三题练习&#xff1a; ✅ 题目1&#xff1a;WebAssembly前端深度实践指南 核心优势对比 维度JavaScriptWebAssembly解析速度需要解析编译预编译二进制执行性能动态类型较慢静态类型接近原生内存管理自动垃圾回收手动内存…...

通义千问席卷日本!开源界“卷王”阿里通义千问成为日本AI发展新基石

据日本经济新闻&#xff08;NIKKEI&#xff09;报道&#xff0c;通义千问已成为日本AI开发的新基础&#xff0c;其影响力正逐步扩大&#xff0c;深刻改变着日本AI产业的格局。 同时&#xff0c;日本经济新闻将通义千问Qwen2.5-Max列为全球AI模型综合评测第六名&#xff0c;不仅…...

01 安装CANoe

文章目录 0、Introduction1、Install CANoe1.1、Unlock Package1.2、Kick autorun1.3、Install CANoe1.4、Wait Download1.5、Restart application1.6、Vector CANoe Installation1.7、Installation Successfully1.8、Open CANoe 2、Install Drivers2.1、Unlock Package2.2、Ki…...

AutoDL租用服务器教程

在跑ai模型的时候&#xff0c;容易遇到算力不够的情况。此时便需要租用服务器。autodl是个较为便宜的服务器租用平台&#xff0c;h20仅需七点几元每小时。下面是简单的介绍。 打开网站AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL&#xff0c;并登录账号 登录后&#xff…...

【人工智能-agent】--Dify中MCP工具存数据到MySQL

本文记录的工作如下&#xff1a; 自定义MCP工具&#xff0c;爬取我的钢铁网数据爬取的数据插值处理自定义MCP工具&#xff0c;把爬取到的数据&#xff08;str&#xff09;存入本地excel表格中自定义MCP工具&#xff0c;把爬取到的数据&#xff08;str&#xff09;存入本地MySQ…...

ctfshow——web入门351~356

SSRF没有出网的部分 web入门351 $ch curl_init($url); 作用&#xff1a;初始化一个 cURL 会话&#xff0c;并设置目标 URL。解释&#xff1a; curl_init($url) 创建一个新的 cURL 资源&#xff0c;并将其与 $url 关联。这里的 $url 是用户提供的&#xff0c;因此目标地址完全…...

堆复习(C语言版)

目录 1.树的相关概念&#xff1a; 2.堆的实现 3.TopK问题 4.总结 1.树的相关概念&#xff1a; 1.结点的度&#xff1a;一个结点含有的子树&#xff08;孩子&#xff09;个数。 A的度为6 2.叶结点or终端结点&#xff1a;度为0的结点。 J、K、L、H、I 都是叶子结点 3.非终端结…...

解决LangChain4j报错HTTP/1.1 header parser received no bytes

问题描述 当使用langchain4j-open-ai调用自己部署的大模型服务时报错&#xff1a; public static void main(String[] args) {OpenAiChatModel model OpenAiChatModel.builder().apiKey("none").modelName("qwen2.5-instruct").baseUrl("http://19…...

深入解析MySQL联合查询(UNION):案例与实战技巧

在数据库操作中&#xff0c;查询是最常用的操作之一。MySQL提供了强大的查询功能&#xff0c;联合查询&#xff08;UNION&#xff09;是其中非常有用的一项操作。联合查询可以将多个查询结果合并成一个结果集&#xff0c;使得从不同来源的数据整合变得更加简单高效。本文将详细…...

[计算机科学#14]:数据结构

【核知坊】&#xff1a;释放青春想象&#xff0c;码动全新视野。 我们希望使用精简的信息传达知识的骨架&#xff0c;启发创造者开启创造之路&#xff01;&#xff01;&#xff01; 内容摘要&#xff1a;数据结构是计算机科学中的核心概念&#xff0c;用于…...

【计算机网络】HTTP 协议

HTTP是什么&#xff1f; HTTP 全称是“超文本传输协议”&#xff0c;是互联网上应用最广泛的应用层协议&#xff0c;用于客户端和服务器之间的通信。 HTTP 的实现在 HTTP 3.0之前都是基于传输层的 TCP 实现的&#xff0c; HTTP 3.0 改为了基于 UDP 实现&#xff0c;但是现在市…...

原生的 XMLHttpRequest 和基于 jQuery 的 $.ajax 方法的异同之处以及使用场景

近期参与一个项目的开发&#xff0c;发现项目中的ajax请求有两种不同的写法&#xff0c;查询了下两种写法的异同之处以及使用场景。 下面将从以下两段简单代码进行异同之处的分析及使用场景的介绍&#xff1a; // 写法一&#xff1a; var xhr new XMLHttpRequest(); xhr.open…...

横向移动(上)

横向移动&#xff08;上&#xff09; 横向移动指的是攻击者在内网中获得初始访问权限之后&#xff0c;通过相关技术扩大敏感数据和高价值资产权限的行为 常见的横向移动的方式 1.通过web漏洞 2.通过远程桌面 3.通过账号密码 4.通过不安全的配置 5.通过系统漏洞 利用远控…...

关于 js:7. 模块化、构建与工具链

一、模块系统&#xff1a;CommonJS、ESM、UMD 模块系统的目标&#xff1a; 将代码拆分为独立的逻辑单元&#xff08;模块&#xff09;&#xff0c;实现封装、复用、依赖管理。 在 Web 前端/Node 中&#xff0c;因为 JavaScript 起初没有模块机制&#xff0c;因此出现了多个模…...

一次IPA被破解后的教训(附Ipa Guard等混淆工具实测)

一行代码的疏忽&#xff0c;一个默认的类名&#xff0c;一个未混淆的资源路径&#xff0c;都可能成为攻击者入侵的入口。 背景&#xff1a;一次“不值一提”的上线&#xff0c;成了代价惨重的经验 故事的起点很简单&#xff1a;我们给销售部门做了一款小型内部演示 App&#x…...

麒麟系统安装.net core环境变量

本文主要记录在麒麟系统上安装.net core的运行环境&#xff0c;这里使用的是麒麟V10桌面版&#xff0c;后续测试服务器到了之后再使用服务器版进行安装测试。 环境安装 下载 这里由于是桌面版&#xff0c;我直接使用浏览器下的包&#xff0c;下完之后在终端中安装。 安装 1…...

如何使用 React Hooks 替代类组件的生命周期方法?

文章目录 1. 引言2. useEffect 概述3. 模拟类组件的生命周期方法3.1 模拟 componentDidMount3.2 模拟 componentDidUpdate3.3 模拟 componentWillUnmount 4. 多个 useEffect 的使用5. 注意事项6. 总结 1. 引言 在 React 16.8 版本之前&#xff0c;开发者主要通过类组件&#x…...

windows 在安装 Ubuntu-20.04 显示操作超时解决办法

1. 问题概述与原因分析 在我们用下面命令安装 Ubuntu-20.04 时系统显示操作超时&#xff1a; wsl --install -d Ubuntu-20.04大概率是没打开 Windows 虚拟机监控程序平台&#xff0c;可以在控制面板–>程序和功能里面打开 2. 解决办法与步骤 解决方式如下&#xff1a; 我…...

Spring Boot中Redis序列化配置详解

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 引言 在使用Spring Boot集成Redis时&#xff0c;序列化方式的选择直接影响数据存储的效率和系统兼容性。默认的JDK序列化存在可读性差、存储空间大等问题&am…...

OpenCV进阶操作:光流估计

文章目录 前言一、光流估计1、光流估计是什么&#xff1f;2、光流估计的前提&#xff1f;1&#xff09;亮度恒定2&#xff09;小运动3&#xff09;空间一致 3、OpenCV中的经典光流算法1&#xff09;Lucas-Kanade方法&#xff08;稀疏光流&#xff09;2&#xff09; Farneback方…...

2025年渗透测试面试题总结-渗透测试红队面试八(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 渗透测试红队面试八 二百一十一、常见中间件解析漏洞利用方式 二百一十二、MySQL用户密码存储与加密 …...

前端面试高频50个问题,解答

以下是前端面试中常见的50个高频问题及其简要解答&#xff1a; HTML HTML5 有哪些新特性&#xff1f; 语义化标签&#xff08;如 <header>、<footer>&#xff09;、多媒体支持&#xff08;如 <audio>、<video>&#xff09;、本地存储&#xff08;如 l…...

Elasticsearch架构原理

1、Elasticsearch的节点类型 1.1 Master节点 在Elasticsearch启动时&#xff0c;会选举出来一个Master节点。当某个节点启动后&#xff0c;然后 使用Zen Discovery机制找到集群中的其他节点&#xff0c;并建立连接。 discovery.seed_hosts: ["192.168.21.130", &qu…...

前端面试宝典---webpack面试题

webpack 的 tree shaking 的原理 Webpack 的 Tree Shaking 过程主要包含以下步骤&#xff1a; 模块依赖分析&#xff1a;Webpack 首先构建一个完整的模块依赖图&#xff0c;确定每个模块之间的依赖关系。导出值分析&#xff1a;通过分析模块之间的 import 和 export&#xff…...

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践 一、Tailwind CSS 配置 1. 安装依赖 npm install tailwindcssnpm:tailwindcss/postcss7-compat tailwindcss/postcss7-compat postcss^7 autoprefixer^92. 创建配置文件 npx tailwindcss init3. 创建样式文件 在…...

hiveserver2与beeline进行远程连接hive配置及遇到的问题

1、hiveserver2 参与用户模拟功能&#xff0c;因为开启后才能保证各用户之间的权限隔离。 1.1、配置 $HADOOP_HOME/etc/hadoop/core-site.xml <!--配置所有节点的root用户都可作为代理用户--> <property><name>hadoop.proxyuser.root.hosts</name>&…...

单词短语0512

当然可以&#xff0c;下面是“opportunity”在考研英语中的常用意思和高频短语&#xff0c;采用大字体展示&#xff0c;便于记忆&#xff1a; ✅ opportunity 的考研常用意思&#xff1a; &#x1f449; 机会&#xff0c;良机 表示有利的时机或条件&#xff0c;尤指成功的可能…...