Vim 编辑器学习笔记

文章目录

  • Vim 编辑器学习笔记
    • 1. Vi/Vim 的发展历史简介
    • 2. Vim 的三种操作模式
    • 3. 光标移动命令
    • 4. 常用编辑操作命令
      • 底行模式常用命令
        • 文件操作
        • 显示行号
        • 查找与替换
      • 命令模式常用命令
        • 删除
        • 复制与粘贴
        • 撤销与重做
        • **可视模式**
    • 5. 分屏操作
    • 6. 进阶学习与插件管理

Vim 编辑器学习笔记

1. Vi/Vim 的发展历史简介

  • vi 编辑器由比尔·乔伊(Bill Joy)在 1976 年为 UNIX 系统开发,最早应用于 BSD UNIX 系统。
  • vi 以其轻量、快速和功能丰富的特点,迅速成为 UNIX 和类 UNIX 系统(如 Linux)用户的常用编辑工具。
  • 1988 年,布莱姆·穆伦纳尔(Bram Moolenaar)在 vi 的基础上创建了 vim,即 “Vi IMproved”。
  • vim 增加了多级撤销、语法高亮、插件系统、图形界面等功能,成为现代化的文本编辑器。
  • 如今,vim 被广泛用于代码编写、服务器配置和日志管理,是程序员和系统管理员的首选工具之一。

2. Vim 的三种操作模式

  • 命令模式:这是 vim 的默认模式,用于执行删除、复制、粘贴等快捷操作。按 Esc 键可以随时返回命令模式。
  • 插入模式:用于直接编辑文本。按 iao 等键从命令模式进入插入模式,在插入模式下可以输入内容。
  • 底行模式:用于输入文件操作命令(如保存、退出、查找等)。按 : 即可进入底行模式,然后在底部输入命令(例如 :wq 保存并退出)。

进入插入模式的快捷键

  • i:在光标所在位置进入插入模式
  • a:在光标后面进入插入模式
  • o:在光标的下一行进入插入模式
  • O:在光标的上一行进入插入模式
  • I:在光标所在行的行首进入插入模式
  • A:在光标所在行的行尾进入插入模式

3. 光标移动命令

  • h:光标左移
  • j:光标下移
  • k:光标上移
  • l:光标右移
  • 0:移动到行首
  • $:移动到行尾
  • w:移动到下一个单词的开头
  • b:移动到上一个单词的开头
  • e:移动到下一个单词的结尾
  • gg:快速移动到文件开头
  • G:快速移动到文件末尾

4. 常用编辑操作命令

底行模式常用命令

文件操作
  • :w filename:将文件以指定文件名 filename 保存。
  • :w /tmp/aaa.txt:将当前文件另存为 /tmp/aaa.txt
  • :wq:x:保存并退出文件。
  • :q!:强制退出,不保存修改。
  • :w !sudo tee % > /dev/null:强制保存只读文件。
显示行号
  • :set nu:显示行号。
  • :set nonu:取消行号显示。
查找与替换
  • :10:跳转到第 10 行。
  • :s/old/new/:在当前行中替换第一个匹配的 oldnew
  • :3s/sbin/nice/:在第 3 行替换 sbinnice
  • :1,5 s/nologin/soso/:在第 1 到 5 行替换 nologinsoso
  • :%s/bin/soso/:在文件中每行替换第一个 binsoso
  • :%s/sbin/nice/g:在文件中每行替换所有 sbinnice

    说明:% 表示整个文件,g 表示行内所有匹配项。


命令模式常用命令

删除
  • dd:删除当前行。
  • ndddnd:从当前行开始删除 n 行。
  • dgg:从光标位置删除到文件开头。
  • dG:从光标位置删除到文件末尾。
  • x:删除当前光标处的一个字符。
复制与粘贴
  • y:复制选定的文本块到缓冲区。
  • yy:复制当前行。
  • nyyyny:从当前行开始复制 n 行。
  • ygg:从当前光标位置复制到文件开头。
  • yG:从当前光标位置复制到文件末尾。
  • p:在光标位置粘贴缓冲区内容。
撤销与重做
  • u:撤销上一个操作。
  • Ctrl+r:重做上一个被撤销的操作。
可视模式
  • v:进入可视字符模式,选择文本块。
  • Shift+v:进入可视行模式,选择整行。
  • Ctrl+v:进入可视块模式,选择矩形区域(适合列选择)。

三种可视模式的区别

  • v(可视字符模式):按字符逐个选择文本,适用于需要按字符操作的场景,例如删除或修改单个字符。

  • Shift+v(可视行模式):选择整行文本,适用于需要按行操作的场景,例如删除、复制或移动整行内容。

  • Ctrl+v(可视块模式):选择一个矩形区域(列选择),适用于需要选择多行特定列的场景,特别在多行同时插入、删除或修改列内容时非常有用。


5. 分屏操作

  • :split filename:水平分屏打开 filename
  • :vsplit filename:垂直分屏打开 filename
  • Ctrl+w, w:在分屏窗口间切换
  • Ctrl+w, q:关闭当前分屏窗口
  • Ctrl+w, =:等比调整所有分屏窗口的大小

6. 进阶学习与插件管理

  • vim 支持丰富的插件系统,可以通过插件实现代码自动补全、Git 集成、文件树管理等功能。
  • 推荐使用 vim-plugVundle 等插件管理工具,方便地安装和管理插件。
  • vim 的其他高级功能包括宏录制、正则替换、语法高亮和自定义快捷键,能够进一步提升编辑效率和体验。

通过掌握以上基础命令,可以快速进入 vim 的高效编辑世界。

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

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

相关文章

力扣515:在每个树行中找最大值

给定一棵二叉树的根节点 root &#xff0c;请找出该二叉树中每一层的最大值。 示例1&#xff1a; 输入: root [1,3,2,5,3,null,9] 输出: [1,3,9]示例2&#xff1a; 输入: root [1,2,3] 输出: [1,3]提示&#xff1a; 二叉树的节点个数的范围是 [0,104]-231 < Node.val &l…

<项目代码>YOLOv8 番茄识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined

VUE_PROD_HYDRATION_MISMATCH_DETAILS 未明确定义。您正在运行 Vue 的 esm-bundler 构建&#xff0c;它期望这些编译时功能标志通过捆绑器配置全局注入&#xff0c;以便在生产捆绑包中获得更好的tree-shaking优化。 Vue.js应用程序正在使用ESM&#xff08;ECMAScript模块&#…

香港海洋投资发展有限公司:描绘海洋牧场未来蓝图,打造全球海洋经济标杆

在浩瀚无垠的蓝色海域中&#xff0c;香港海洋投资发展有限公司&#xff08;以下简称“香港海洋投资”&#xff09;正以其卓越的领导力和深厚的实力&#xff0c;引领着海洋经济的新一轮发展浪潮。近年来&#xff0c;公司倾力打造的海洋牧场项目&#xff0c;不仅成为了企业发展的…

《FreeRTOS列表和列表项篇》

FreeRTOS列表和列表项 1. 什么是列表和列表项&#xff1f;1.1 列表list1.2 列表项list item 2. 列表和列表项的初始化2.1 列表的初始化2.2 列表项的初始化 3. 列表项的插入4. 列表项末尾插入5. 列表项的删除6. 列表的遍历 列表和列表项是FreeRTOS的一个数据结构&#xff0c;是F…

MySQL进阶-索引的组合索引

练习题目 题目链接难度SQL进阶-索引的组合索引★★★☆☆ SQL思路 SQL进阶-索引的组合索引 初始化数据 drop table if exists user_profile; CREATE TABLE user_profile ( id int NOT NULL, device_id int NOT NULL, gender varchar(14) NOT NULL, age int , university va…

【iStat Menus for MacBook状态栏菜单系统监控工具--安装教程【简单操作,随时了解电脑情况】

Mac分享吧 文章目录 iStat Menus for MacBook状态栏菜单系统监控软件 效果图展示一、iStat Menus 状态栏菜单系统监控软件 Mac电脑版——v6.73(1240)1️⃣&#xff1a;下载软件2️⃣&#xff1a;安装软件3️⃣&#xff1a;软件自定义配置 安装完成&#xff01;&#xff01;&am…

netmap.js:基于浏览器的网络发现工具

netmap.js是一款基于浏览器&#xff0c;用于提供主机发现和端口扫描功能的网络发现工具。 netmap.js的执行速度也非常的快&#xff0c;由于其使用了es6-promise-pool&#xff0c;因此它可以有效地运行浏览器允许的最大并发连接数。 动机 由于我正需要一个基于浏览器的端口扫…

mapbox进阶技巧

1、filter过滤&#xff0c;使用过滤&#xff0c;可以根据不同条件展示我们想要展示的数据 代码示例&#xff1a;核心代码&#xff0c;根据点的size是否满足条件进行展示 filter: [<, size, 30] <!DOCTYPE html> <html lang"en"><head><me…

计算机网络 (2)计算机网络的类别

计算机网络的类别繁多&#xff0c;根据不同的分类原则&#xff0c;可以得到各种不同类型的计算机网络。 一、按覆盖范围分类 局域网&#xff08;LAN&#xff09;&#xff1a; 定义&#xff1a;局域网是一种在小区域内使用的&#xff0c;由多台计算机组成的网络。覆盖范围&#…

实战OpenCV之文字识别

基础入门 文字识别技术,也称为光学字符识别(Optical Character Recognition,OCR),是一种让计算机能够“读取”图像中的文字,并将其转化为可编辑文本的技术。这项技术在许多领域都有广泛的应用,包括但不限于:图片文字识别、文档管理、自动化数据输入、历史文献数字化。 …

【Qt】Qt在窗口中加载Web界面的方法汇总

1、Qt WebEngine 1)Qt版本:Qt5.4以上; 2)平台要求(https://doc.qt.io/archives/qt-5.9/qtwebengine-platform-notes.html): 例如:Windows下只能使用 MSVC 编译器,不支持MinGW编译器,会报错(: error: Unknown module(s) in QT: webenginewidgets) 并且不能用在Qt编…

modbus协议 Mthings模拟器使用

进制转换 HEX 16进制 (0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F表示0-15) dec 10进制 n(16进制) -> 10 abcd.efg(n) d*n^0 c*n^1 b*n^2 a*n^3 e*n^-1 f*n^-2 g*n^-3&#xff08;10&#xff09; 10 -> n(16进制) Modbus基础概念 高位为NUM_H&…

飞腾平台Arm NN软件栈安装使用指南

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力&#xff0c;聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域&#xff0c;包含了应用使能套件、软件仓库、软件支持、软件适…

基于JavaSpringboot个人博客

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA 数据库&#xf…

鸿蒙next ui安全区域适配(刘海屏、摄像头挖空等)

目录 相关api 团结引擎对于鸿蒙的适配已经做了安全区域的适配,也考虑到了刘海屏和摄像机挖孔的情况,在团结引擎内可以直接使用Screen.safeArea 相关api

吴恩达Prompt Engineering(2/9): Guidelines for Prompting

目录 Principals of Prompting Principle 1 Tactic 1: Tactic 2: Ask for structured output Tactic 3: Check whether conditions are satisfied / Check assumptions required to do the task Tactic 4: Few-Shot prompting, Give successful examples of completing tas…

【GPTs】Gif-PT:DALL·E制作创意动图与精灵动画

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af;Gif-PT主要功能适用场景优点缺点 &#x1f4af;小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; 使用Dalle生成用户请求的精灵图动画&#…

JMeter初体验:从入门到入门的性能测试之旅

一、关于性能测试 1、性能测试概述 性能测试是一种非功能测试&#xff0c;旨在评估系统在不同负载条件下的性能表现。它包括负载测试、压力测试、稳定性测试和基准测试等。性能测试的目的是确保系统在预期的负载下能够正常运行&#xff0c;并满足用户对响应时间、吞吐量和其他…

MongoDB新版本安装配置教程(7.0.15版本-zip下载)

找了半天MongoDB新版本怎么解决没有mongo命令,都没有很好的解决方法 现在分享一下: 首先下载: 然后手动创建 data 和 log 两个文件夹 然后再系统变量配置环境变量 在data的目录下&#xff0c;创建一个db文件 然后:在bin目录下cmd执行: mongod --dbpath D:\MongoDB\data\db …