Linux中的Vim文本编辑器

news/2024/9/16 8:29:43/ 标签: linux, vim, 运维

Linux中的Vim是一个非常强大的文本编辑器,它提供了丰富的命令来支持各种文本编辑操作。以下是一个Vim常用命令的详细总结,涵盖了基本操作、编辑命令、移动光标、查找替换、保存退出等多个方面。

一、基本操作

  1. 启动Vim

    • vim:直接启动Vim编辑器。
    • vim filename:打开或创建文件并启动Vim进行编辑。
  2. 模式切换

    • Vim有三种主要模式:正常模式(Normal Mode)、插入模式(Insert Mode)和命令行模式(Command-line Mode)。

      • 正常模式:默认模式,用于执行大多数命令。
      • 插入模式:用于输入文本。
      • 命令行模式:用于执行保存、退出等命令。
    • 切换模式:

      • 从正常模式到插入模式:i(在当前位置插入)、I(在当前行首插入)、a(在当前位置后插入)、A(在当前行尾插入)、o(在当前行下新开一行插入)等。
      • 从插入模式到正常模式:按Esc键。

二、编辑命令

  1. 复制和粘贴

    • 复制:yy(复制当前行)、y$(复制至行尾)、yw(复制一个单词)、yG(复制到文件末尾)等。
    • 粘贴:p(在光标后粘贴)、P(在光标前粘贴)。
  2. 删除

    • x:删除当前字符。
    • X:删除前一个字符(等价于dh)。
    • dd:删除当前行。
    • Dd$:删除从当前光标位置到行尾的所有字符。
    • dw:删除一个单词。
  3. 撤销和重做

    • u:撤销上一次操作。
    • Ctrl + r:重做上一次撤销的操作。

三、移动光标

  1. 基本移动

    • h:左移一个字符。
    • j:下移一行。
    • k:上移一行。
    • l:右移一个字符。
  2. 单词间移动

    • w:向前移动到下一个单词的开头。
    • e:向前移动到下一个单词的末尾。
    • b:向后移动到上一个单词的开头。
  3. 行内移动

    • 0(数字零):移动到行首。
    • ^:移动到行首的第一个非空白字符。
    • $:移动到行尾。
  4. 页面移动

    • Ctrl + f:向下滚动一页。
    • Ctrl + b:向上滚动一页。
    • Ctrl + d:向下滚动半页。
    • Ctrl + u:向上滚动半页。
  5. 文件内移动

    • gg:移动到文件的第一行。
    • G:移动到文件的最后一行。
    • :n(n为行号):移动到文件的第n行。

四、查找和替换

  1. 查找

    • /text:向前查找text。
    • ?text:向后查找text。
    • n:查找下一个匹配项。
    • N:查找上一个匹配项。
  2. 替换

    • :s/old/new/:将当前行的第一个old替换为new。
    • :s/old/new/g:将当前行的所有old替换为new。
    • :%s/old/new/g:将文件中的所有old替换为new。

五、保存和退出

  1. 保存

    • :w:保存当前文件。
    • :w filename:将当前文件另存为filename。
  2. 退出

    • :q:如果文件未修改,则退出Vim。
    • :q!:强制退出Vim,不保存任何修改。
    • :wqZZ:保存并退出Vim。

六、其他常用命令

  1. 分屏操作

    • :split:sp:水平分割窗口。
    • :vsplit:vsp:垂直分割窗口。
    • Ctrl + w + w:在分屏间切换。
  2. 设置

    • :set nu:显示行号。
    • :set nonu:不显示行号。
    • :set hlsearch:高亮显示搜索结果。
    • :set nohlsearch:关闭高亮显示。
  3. 录制宏

    • qa:开始录制宏a。
    • …(执行一系列命令)
    • q:结束录制。
    • @a:执行宏a。
  4. 执行外部命令

    • :!command:在Vim中执行外部命令。

七、高级技巧

  1. 多文件编辑

    • vim file1 file2:同时打开多个文件。
    • :next:n:切换到下一个文件。
    • :prev:p:切换到上一个文件。
    • :first:切换到第一个文件。
    • :last:切换到最后一个文件。
  2. 文本对象操作

    • Vim支持多种文本对象,如iw(内部单词)、aw(一个单词)、ip(内部段落)等,可以与删除、复制等命令结合使用。
  3. 可视模式

    • 在正常模式下,按v进入可视模式,按V进入可视行模式,按Ctrl + v进入可视块模式。在可视模式下,可以选择文本块并执行删除、复制等操作。

以上就是Vim编辑器的一些常用命令和高级技巧。Vim的功能非常强大,这里只是列举了一部分常用的命令和技巧。通过不断的学习和实践,你可以逐渐掌握Vim的更多高级功能和技巧,从而提高你的文本编辑效率。


http://www.ppmy.cn/news/1522512.html

相关文章

Rust模块std::thread

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学,之一 -CSDN博客 Rust到底值不值得学,之二-CSDN博客 Rust多线程编程概述-CSDN博客 12.…

4 路由模式

路由模式 逻辑图 如果我们将生产环境的日志进行处理,而日志是分等级的,我们就按照 error waring info三个等级来讲解 一个消费者是处理【所有】(info,error,warning)的日志,用于做数据仓库&am…

简说目前市面上最流行的“AI Agentic”

背景 当吴恩达在布道完著名的Agent设计模式后 他于不久后又引领了AI界的开发们开始关注另一种高级开发模式,即"Agentic",吴恩达多次反复强调:“Agentic是比Agent更具未来”。 那么什么是Agentic呢? 什么是AI Agentic…

新换了电脑,电脑里常用的6款软件,下载回来继续用

新换了电脑,准备把之前电脑里常用的几款软件都下载回来继续用,独乐乐不如众乐乐,分享一下~ 1、Listen 1 一款开源、免费的音乐播放器,它能够整合多个主流音乐平台的资源,包括网易云音乐、QQ音乐、酷狗音乐、酷我音乐、…

[SWPUCTF 2021 新生赛]web方向(一到六题) 解题思路,实操解析,解题软件使用,解题方法教程

题目来源 NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。https://www.nssctf.cn/problem [SWPUCTF 2021 新生赛]gift_F12 这个题目简单打开后是一个网页 我们一般按F12或者是右键查…

WorkPlus安全即时通讯:端到端加密开启信息保密新时代

在数字化时代,信息的保密性和安全性变得越发重要。企业和个人需要确保他们的敏感信息和机密通讯不会落入黑客或第三方的手中。为了满足这一需求,WorkPlus安全即时通讯平台应运而生。作为一款拥有端到端加密功能的通讯平台,WorkPlus着重于保护…

小米Vela:端侧AI推理框架

小米Vela是小米公司基于开源实时操作系统NuttX打造的物联网嵌入式软件平台。该平台旨在为各种物联网硬件提供统一的软件服务,支持丰富的组件和易用的框架,以打通碎片化的物联网应用场景。2024年8月在“开源中国开源世界”大会,小米对外公开超…

python 解析数据后保存到excel

openpyxl 特点: 支持读写Excel 2010 xlsx/xlsm/xltx/xltm文件格式。可以操作Excel的几乎所有功能,如样式、图表、图片等。适用于复杂的Excel操作,例如公式、数据验证和条件格式。社区支持较好,文档比较完善。 优点: 功…

MyBatis入门 – 动态SQL

MyBatis入门 – 动态SQL 1.动态SQL介绍 1.1 什么是动态SQL 在原先的JDBC中,开发者需要根据业务的不同要求手动拼接SQL语句,不仅增加开发的复杂度,同时也降低开发效率。而动态SQL则能够根据不同业务场景动态构建查询。动态SQL一般是根据用户…

Java网络编程入门

在现代软件开发中,网络编程是一项不可或缺的技能。Java提供了强大的网络编程支持,使得开发者能够轻松地创建网络应用程序。今天将介绍Java中的网络编程基础,重点讲解Socket和ServerSocket类的使用。 什么是Socket? Socket是网络通…

android系统源码12 修改默认桌面壁纸--SRO方式

1、aosp12修改默认桌面壁纸 代码路径 :frameworks\base\core\res\res\drawable-nodpi 替换成自己的图片即可,不过需要覆盖所有目录下的图片。 由于是静态修改,则需要make一下,重新编译。 2、方法二Overlay方式 由于上述方法有…

[动态规划] 删除并获得点数

给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] 1 的元素。 开始你拥有 0 个点数。返回你能通过这些操…

vue3缺陷

Vue 3 的一些缺陷包括: 1. 兼容性问题:由于 Vue 3 使用了新的响应式系统,与 Vue 2 的代码不兼容。这意味着在迁移现有项目时需要进行一些改动。 2. 学习曲线:Vue 3 引入了一些新的概念和 API,相对于 Vue 2 有一定的学习…

如何利用AI优化知识中台的用户体验

引言 在数字化时代,知识中台作为企业知识管理与服务的重要载体,其用户体验的优劣直接关乎到信息的有效传递、员工的学习效率及企业的整体创新能力。随着人工智能(AI)技术的飞速发展,将AI融入知识中台的设计与优化中&a…

Linux系统高效进程控制的实战技巧

Linux系统高效进程控制的实战技巧 Linux是一种开源的Unix-like操作系统内核,由林纳斯托瓦兹(Linus Torvalds)于1991年首次发布。Linux以其稳定性、安全性和灵活性而著称,广泛应用于服务器、桌面、嵌入式系统等多个领域。在Linux系…

使用Docker快速安装和运行Elasticsearch

Elasticsearch 是一个基于 Lucene 构建的开源搜索引擎,它提供了分布式、多租户能力的全文搜索引擎,具有 HTTP web 接口和无模式的 JSON 文档。在本文中,我们将介绍如何使用 Docker 快速安装和运行 Elasticsearch。 为什么使用 Docker 安装 E…

redis中使用lua脚本

1、现实问题 1.redis采用单线程架构,可以保证单个命令的原子性,但是无法保证一组命令在高并发场景下的原子性。例如: 在串行场景下:A和B的值肯定都是3在并发场景下:A和B的值可能在0-6之间。 2.极限情况下1&#xff1…

Qt Widget核心属性

文章目录 前言enabledgeometrywindowTitlewindowIconwindowOpacitycursorfonttoolTipfocusPolicystyleSheet 前言 Qt中的各种控件,都是继承自QWidget类,了解这个类的属性方法之后,后续的控件也通用 enabled enabled描述了一个控件是否处于…

文件包含PHP伪协议利用方法

1.file://协议 使⽤: file:// ⽂件的绝对路径和⽂件名 2.php?cmdfile://D:\phpstudy_pro\WWW\123.txt 2.php://filter协议 ⽤途:常⽤于读取⽂件 / 源码 2.php?cmdphp://filter/readconvert.base64-encode/resource1.php 3.php://input协议 步骤一&…

【C++拓展(一)】后端开发常用的技术栈

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 C拓展 1. 前言2. 语言层面3. 设计模式层面4. 开…