vim使用指南

🏝️专栏:计算机操作系统
🌅主页:猫咪-9527-CSDN博客 

“欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。”

目录

 一、Vim 的基本概念

1.Vim 的主要模式:

1.1普通模式 (Normal Mode)

1.2插入模式 (Insert Mode)

1.3命令模式 (Command Mode)

二、Vim 的基础操作

1. 文件打开与关闭

2. 普通模式操作

2.1 光标移动

2.1.1单字符移动

2.1.2括号匹配跳转

2.1.3屏幕滚动

2.1.4行内移动

2.1.5单词移动

2.2 文本删除

2.3 文本复制与粘贴

2.4 撤销与重做

2.5 替换

3. 插入模式操作

4. 命令模式操作

4.1 文件操作

4.2 搜索与替换

4.2.1搜索

4.2.2替换

5. 高级操作

5.1 多文件编辑

5.2 分屏

三、vim的配置


 一、Vim 的基本概念

        Vim 是一种强大的文本编辑器,支持模式化编辑。它主要通过 模式切换快捷键操作 来高效地编辑文本。

1.Vim 的主要模式

1.1普通模式 (Normal Mode)

操作:默认模式,进入 Vim 时即处于该模式,按 Esc 回到普通模式

作用:用于文件浏览、文本导航、删除、复制粘贴等操作。

1.2插入模式 (Insert Mode)

作用:用于文本输入。

操作:在普通模式下按 ia 进入,按 Esc 退出。

1.3命令模式 (Command Mode)

作用:用于执行保存、退出、搜索、替换等命令。

操作:在普通模式下按 : 进入,命令执行后会返回普通模式。


二、Vim 的基础操作

1. 文件打开与关闭

        打开文件

vim [文件名]

        例如:

vim text.c

2. 普通模式操作

普通模式是 Vim 最核心的模式,用于导航、删除、复制粘贴等操作。

2.1 光标移动

2.1.1单字符移动
  • h:向左移动一个字符。
  • l:向右移动一个字符。
  • j:向下移动一行。
  • k:向上移动一行。


2.1.2括号匹配跳转
  • %:在匹配的括号间跳转(适用于 ()[]{} 等结构)。

2.1.3屏幕滚动
  • Ctrl + d:向下滚动半屏。
  • Ctrl + u:向上滚动半屏。
  • Ctrl + f:向下滚动一屏。
  • Ctrl + b:向上滚动一屏。
  • :n:跳到第 n 行(如输入 :10 跳到第 10 行)。
  • gg:跳到文件的开头。
  • G:跳到文件的结尾。

2.1.4行内移动
  • 0:移动到当前行的行首。
  • ^:移动到行首第一个非空字符。
  • $:移动到行尾。

2.1.5单词移动
  • w:跳到下一个单词的开头。
  • e:跳到当前单词的结尾,或下一个单词的结尾。
  • b:跳到前一个单词的开头。
2.2 文本删除
  • x:删除当前字符。
  • dd:删除当前行。
  • dw:删除从光标位置到单词末尾。
  • d$:删除从光标位置到行尾。
  • d0:删除从光标位置到行首。
  • dgg:删除从光标到文件开头。
  • dG:删除从光标到文件结尾。
2.3 文本复制与粘贴
  • yy:复制当前行。
  • y:复制选定区域(可与可视模式结合)。
  • yw:复制从光标到单词末尾。
  • y$:复制从光标到行尾。
  • p:粘贴到光标后。
  • P:粘贴到光标前。
2.4 撤销与重做
  • u:撤销上一步操作。
  • Ctrl + r:重做撤销操作。
2.5 替换
  • r+单个字母:用 单个字母 替换当前字符。
  • R:进入替换模式,覆盖原文字。

3. 插入模式操作

在普通模式下,按以下键进入插入模式:

  • i:从光标前进入插入模式。
  • I:从行首进入插入模式。
  • a:从光标后进入插入模式。
  • A:从行尾进入插入模式。
  • o:在当前行下插入新行并进入插入模式。
  • O:在当前行上插入新行并进入插入模式。
  • 退出插入模式:按 Esc

4. 命令模式操作

在普通模式下,按 : 进入命令模式,可执行以下命令:

4.1 文件操作
  • :w 保存文件。
  • :q 退出文件。
  • :wq 保存并退出。
  • :q! 强制退出。
  • :sav new_filename 另存为。
4.2 搜索与替换
4.2.1搜索
  • /text:向下搜索 text
  • ?text:向上搜索 text
  • n:跳到下一个匹配项。
  • N:跳到上一个匹配项。
4.2.2替换
  • :s/old/new/:将当前行的第一个 old 替换为 new
  • :s/old/new/g:将当前行的所有 old 替换为 new
  • :%s/old/new/g:将整个文件中的 old 替换为 new
  • :%s/old/new/gc:替换前逐一确认。

5. 高级操作

5.1 多文件编辑
  • 打开多个文件:
    vim file1 file2 file3
    
  • 文件切换:

    • :n:下一个文件。

    • :prev:上一个文件。

    • :ls:列出已打开的文件。

    • :b n:切换到编号为 n 的文件。

5.2 分屏
  • 垂直分屏::vsplit filename

  • 水平分屏::split filename

  • 分屏切换:

    • Ctrl + w + h:切换到左侧窗口。

    • Ctrl + w + l:切换到右侧窗口。

    • Ctrl + w + j:切换到下方窗口。

    • Ctrl + w + k:切换到上方窗口。


三、vim的配置

详细请看:vim的配置

编辑 ~/.vimrc 文件可自定义 Vim。例如:

set number        " 显示行号
syntax on         " 开启语法高亮
set tabstop=4     " 设置 Tab 宽度为 4
set shiftwidth=4  " 设置自动缩进宽度为 4
set expandtab     " 用空格代替 Tab

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web开发(一)HTML5

Web开发(一)HTML5 写在前面 参考黑马程序员前端Web教程做的笔记,主要是想后面自己搭建网页玩。 这部分是前端HTML5CSS3移动web视频教程的HTML5部分。主要涉及到HTML的基础语法。 HTML基础 标签定义 HTML定义 HTML(HyperText Markup Lan…

软件设计大致步骤

由于近期在做软件架构设计,这里总结下大致的设计流程 软件设计流程 1 首先要先写系统架构图,将该功能在整个系统的位置以及和大致的内部模块划分 2 然后写内部的结构图,讲内部的各个子系统,模块,组件之间的关系和调用…

Hadoop3.x 万字解析,从入门到剖析源码

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

UML系列之Rational Rose笔记九:组件图

一、新建组件图 二、组件图成品展示 三、工作台介绍 最主要的还是这个component组件; 然后还有这几个,正常是用不到的;基本的使用第四部分介绍一下: 四、基本使用示例 这些,主要是运用package还有package specifica…

RabbitMQ 高可用方案:原理、构建与运维全解析

文章目录 前言:1 集群方案的原理2 RabbitMQ高可用集群相关概念2.1 设计集群的目的2.2 集群配置方式2.3 节点类型 3 集群架构3.1 为什么使用集群3.2 集群的特点3.3 集群异常处理3.4 普通集群模式3.5 镜像集群模式 前言: 在实际生产中,RabbitM…

React Fiber框架中的Render渲染阶段——workLoop(performUnitOfWork【beginWork与completeWork】)

触发渲染过程——renderRoot renderRoot 是一个函数,用于触发渲染工作。它通常会调用并递归地执行一系列的渲染任务,直到完成整个更新过程。这个过程包括执行 Fiber 树中的 beginWork 和 completeWork,以及渲染新状态或 DOM。 function ren…

一体机cell服务器更换内存步骤

一体机cell服务器更换内存步骤: #1、确认grdidisk状态 cellcli -e list griddisk attribute name,asmmodestatus,asmdeactivationoutcome #2、offline griddisk cellcli -e alter griddisk all inactive #3、确认全部offline后进行关机操作 shutdown -h now #4、开…

uni-app编写微信小程序使用uni-popup搭配uni-popup-dialog组件在ios自动弹出键盘。

uni-popup-dialog 对话框 将 uni-popup 的type属性改为 dialog&#xff0c;并引入对应组件即可使用对话框 &#xff0c;该组件不支持单独使用 示例 <button click"open">打开弹窗</button> <uni-popup ref"popup" type"dialog"…

SYS_OP_MAP_NONNULL NULL的等值比较

无意在数据库中发现了这个操作SYS_OP_MAP_NONNULL。 SYS_OP_MAP_NONNULL应该不是数据库中的对象&#xff0c;因为在DBA_OBJECTS中根本找不到它&#xff0c;而在STANDARD和DBMS_STANDARD包中也找不到函数说明。 SQL> SELECT * 2 FROM DBA_OBJECTS 3 WHERE OBJECT_NAME…

基于Java的百度AOI数据解析与转换的实现方法

目录 前言 一、AOI数据结构简介 1、官网的实例接口 2、响应参数介绍 二、Java对AOI数据的解析 1、数据解析流程图 2、数据解析实现 3、AOI数据解析成果 三、总结 前言 在当今信息化社会&#xff0c;地理信息数据在城市规划、交通管理、商业选址等领域扮演着越来越重要的…

深度学习中的学习率调度器(scheduler)分析并作图查看各方法差异

文章目录 1. 指数衰减调度器&#xff08;Exponential Decay Scheduler&#xff09;工作原理适用场景实现示例 2. 余弦退火调度器&#xff08;Cosine Annealing Scheduler&#xff09;工作原理适用场景实现示例 3. 步长衰减调度器&#xff08;Step Decay Scheduler&#xff09;工…

IPSEC实验

实验要求 某小型企业为扩大网络规模&#xff0c;设立分公司&#xff0c;今日要求分公司能够访问主公司对应的资源&#xff0c;为此很是苦恼 为满足其跨区域访问对端网络的要求&#xff0c;现要求使用IPSEC搭建隧道使得分公司能够与主公司通讯 实验拓扑 该公司与分公司拓扑大…

[c语言日寄]精英怪:三子棋(tic-tac-toe)3命慢通[附免费源码]

哈喽盆友们&#xff0c;今天带来《c语言》游戏中[三子棋boss]速通教程&#xff01;我们的目标是一边编写博文&#xff0c;一边快速用c语言实现三子棋游戏。准备好瓜子&#xff0c;我们计时开始&#xff01; 前期规划 在速通中&#xff0c;我们必须要有清晰的前期规划&#xf…

TensorFlow DAY3: 高阶 API(Keras,Estimator)(完)

TensorFlow 作为深度学习框架&#xff0c;当然是为了帮助我们更便捷地构建神经网络。所以&#xff0c;本次实验将会了解如何使用 TensorFlow 来构建神经网络&#xff0c;并学会 TensorFlow 构建神经网络的重要函数和方法。 知识点 Keras 顺序模型Keras 函数模型Keras 模型存储…

数据结构(Java版)第九期:LinkedList与链表

专栏&#xff1a;数据结构(Java版) 个人主页&#xff1a;手握风云 目录 一、LinkedList的模拟实现 1.1. 头插法 1.2. 尾插法 1.3. 插入中间节点 1.4. 删除某个节点 1.5. 删除所有为key的元素 二、LinkedList的使用 2.1. 什么是LinkedList 2.2. LinkedList的使⽤ 三、…

ubuntu18.04开发环境下samba服务器的搭建

嵌入式linux的发展很快&#xff0c;最近准备在一个新项目上采用新一代的linux核心板&#xff0c;发现linux内核的版本已经更新到5.4以上甚至6.0以上&#xff1b;之前常用的linux内核版本是2.6.4&#xff0c;虽然在某些项目上还能用但是明显跟不上时代的步伐了&#xff0c;所以要…

【优先算法】滑动窗口--(结合例题讲解解题思路)(C++)

目录 1. 例题1&#xff1a;最大连续1的个数 1.1 解题思路 1.2代码实现 1.3 错误示范如下&#xff1a;我最开始写了一种&#xff0c;但是解答错误&#xff0c;请看&#xff0c;给大家做个参考 2. 将 x 减到 0 的最小操作数 2.1解题思路 2.2代码实现 1. 例题1&#xff…

数据结构二叉树-C语言

数据结构二叉树-C语言 1.树1.1树的概念与结构1.2树的相关术语1.3树的表示1.4树形结构实际运用场景 2.二叉树2.1概念与结构2.2特殊的二叉树2.2.1满二叉树2.2.2完全二叉树 2.3二叉树存储结构2.3.1顺序结构2.3.2链式结构 3.实现顺序结构的二叉树4.实现链式结构二叉树4.1前中后序遍…

Qt/C++进程间通信:QSharedMemory 使用详解(附演示Demo)

在开发跨进程应用程序时&#xff0c;进程间通信&#xff08;IPC&#xff09;是一个关键问题。Qt 框架提供了多种 IPC 技术&#xff0c;其中 QSharedMemory 是一种高效的共享内存方式&#xff0c;可以实现多个进程之间快速交换数据。本文将详细讲解 QSharedMemory 的概念、用法及…

【vue3项目使用 animate动画效果】

vue3项目使用 animate动画效果 前言一、下载或安装npm 安装 二、引入组件三、复制使用四、完整使用演示总结 前言 提示&#xff1a;干货篇&#xff0c;不废话&#xff0c;点赞收藏&#xff0c;用到会后好找藕~ 点击这里&#xff0c;直接看官网哦 &#x1f449; 官网地址&#…