十分钟掌握 Vim 编辑器核心功能

十分钟掌握 Vim 编辑器核心功能


在这里插入图片描述


文章目录

    • 十分钟掌握 Vim 编辑器核心功能
    • 👨‍🏫内容一:前言【Vim是什么】
    • 👨‍🔬内容二:Vim 常用模式
    • 👨‍🚀内容三:基本操作
    • 👨‍💻内容四:标准操作
    • 👨‍⚖️内容五:高级操作
    • 🙆‍♂️内容六:Vim 配置
    • 🙇内容七:小结


👨‍🏫内容一:前言【Vim是什么】


👉相信不论是前端还是后台多多少少都需要上到服务器上做一些操作,改改配置文件等,大多数 Linux 服务器默认都安装了 Vim 文本编辑器,因此如果还不会 Vim 的话,可能会被同事“耻笑”。
👉如果本文对你有所帮助,请点个👍 吧。

Vim是什么?
Vim 是从 vi 发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。
在这里插入图片描述

🌸🌸🌸🌷🌷🌷💐💐💐🌷🌷🌷🌸🌸🌸

👨‍🔬内容二:Vim 常用模式


  • 交互模式
  • 插入模式
  • 命令模式

1️⃣交互模式
👉交互模式也称为正常模式,这是 Vim 的默认模式,每次运行 Vim 程序的时候,就会进入这个模式。
👉例如执行 vim name.txt 则会进入交互模式。
🎋交互模式特征:

  • 在这个模式下,你不能输入文本;
  • 它可以让我们在文本间移动,删除一行文本,复制黏贴文本,跳转到指定行,撤销操作,等等。

2️⃣插入模式
👉这个模式是我们熟悉的文本编辑器的模式,就是可以输入任何你想输入的内容。进入这个模式有几种方法,最常用的方法是按字母键 i ( i、I、a、A、o、O 都可以进入插入模式,只是所处的位置不同),退出这种模式,只需要按下 Esc 键。

  • i, I 进入输入模式 Insert mode :i 为“从目前光标所在处输入”, I 为“在目前所在行的第一个非空格符处开始输入”;
  • a, A 进入输入模式 Insert mode :a 为“从目前光标所在的下一个字符处开始输入”, A 为“从光标所在行的最后一个字符处开始输入”;
  • o, O 进入输入模式 Insert mode :o 为“在目前光标所在的下一行处输入新的一行”;O 为在目前光标所在处的上一行输入新的一行。

3️⃣命令模式
👉命令模式也称为底线命令模式,这个模式下可以运行一些命令例如“退出”,“保存”,等动作。
👉也可以用这个模式来激活一些 Vim 配置,例如语法高亮,显示行号,等。甚至还可以发送一些命令给终端命令行,例如 ls、cp 。
👉为了进入命令模式,首先要进入交互模式,再按下冒号键。用一张图表示三种模式如何切换:👇
在这里插入图片描述

🐾🐾🐾🐾🐾🐾🐾🐾🐾🐾🐾🐾

👨‍🚀内容三:基本操作


🎃打开 Vim
👉在终端命令行中输入 vim 回车后 Vim 就会被运行起来,也可以用 Vim 来打开一个文件,只需要在 vim 后面再加文件名。如 vim file.name ,如果文件不存在,那么会被创建。

🎏插入
👉进入文件之后,此时处于交互模式,可以通过输入 i 进入插入模式。

🎎移动
👉在 Vim 的交互模式下,我们可以在文本中移动光标。

  • h 向左移动一个字符
  • j 向下移动一个字符
  • k 向上移动一个字符
  • l 向右移动一个字符

👉当然也可以使用四个方向键进行移动,效果是一样的。

🏅跳至行首和行末
👉行首:在交互模式下,为了将光标定位到一行的开始位置,只需要按下数字键 0 即可,键盘上的 Home 键也有相同效果。
👉 行末: 在交互模式下,为了将光标定位到一行的末尾,只需要按下美元符号键 $ 即可,键盘上的 End 键也有相同效果。

🏆按单词移动
👉在交互模式下,按字母键 w 可以一个单词一个单词的移动。

退出文件
👉在交互模式下,按下冒号键 : 进入命令模式,再按下 q 键,就可以退出了。
👉如果在退出之前又修改了文件,就直接想用 :q 退出 Vim ,那么 Vim 会显示一个红字标明错误信息。此时我们有两个选择:
1️⃣保存并退出 :wq 或 :x ;
2️⃣不保存且退出 :q! 。

🌻🌻🌻🌼🌼🌼🌺🌺🌺🌼🌼🌼🌻🌻🌻

👨‍💻内容四:标准操作


🎃删除字符
👉在交互模式下,将光标定位到一个你想要删除的字符上,按下字母键 x 你会发现这个字符被删除了。也可以一次性删除多个字符,只需要在按 x 键之前输入数字即可。

🎏删除(剪切)单词,行

  • 删除一行: 连按两次 d 来删除光标所在的那一行。
  • 删除多行: 例如先输入数字 2 ,再按下 dd ,就会删除从光标所在行开始的两行。
  • 删除一个单词: 将光标置于一个单词的首字母处,然后按下 dw 。
  • 删除多个单词: 例如先按数字键 2 再按 dw 就可以删除两个单词了。
  • 从光标所在位置删除至行首: d0 。
  • 从光标所在位置删除至行末: d$ 。

🎎复制单词,行

  • 复制行: 按两次 y 会把光标所在行复制到内存中,和 dd 类似, dd 用于“剪切”光标所在行。
  • 复制单词: yw 会复制一个单词。
  • 复制到行末: y$ 是复制从光标所在处到行末的所有字符。
  • 复制到行首: y0 是复制光标所在处到行首的所有字符。

🏅粘贴
👉如果之前用 dd 或者 yy 剪切复制过来的,可以使用 p 来粘贴。同样也可以使用 数字+p 来表示复制多次。

🤿替换一个字符
👉在交互模式下,将光标置于想要替换的字符上。按下 r 键,接着输入你要替换的字符即可。

🥊撤销操作
👉如果要撤销最近的修改,只需要按下 u 键,如果想要撤销最近四次修改,可以按下4,再按下 u 。

🏀重做
👉取消撤销,也就是重做之前的修改使用 ctrl + r 。

🏓跳转到指定行
👉Vim 编辑的文件中,每一行都有一个行号,行号从1开始,逐一递增。
行号默认是不显示,如果需要它显示的话,可以进入命令模式,然后输入 set nu ,如果要隐藏行号的话,使用 set nonu 。

  • 跳转到指定行: 数字+gg ,例如 7gg ,表示跳转到第7行。
  • 要跳转到最后一行: 按下 G 。
  • 要跳转到第一行: 按下 gg 。
🌻🌻🌻🌼🌼🌼🌺🌺🌺🌼🌼🌼🌻🌻🌻

👨‍⚖️内容五:高级操作


🎃查找
👉处于交互模式下,按下 / 键,那么就进入查找模式,输入你要查找的字符串,然后按下回车。光标就会跳转到文件中下一个查找到的匹配处。如果字符串不存在,那么会显示 “pattern not found” 。

  • n 跳转到下一个匹配项;
  • N 跳转到上一个匹配项。

⚠️用斜杠来进行的查找是从当前光标处开始向文件尾搜索,如果你要从当前光标处开始,向文件头搜索则使用 ? ,当然也可以先按下 gg 跳转到第一行在进行全文搜索。

🎏查找并替换
👉替换光标所在行第一个匹配的字符串:

# 语法
:s/旧字符串/新字符串# 实例
:s/one/two

👉替换光标所在行所有旧字符串为新字符串:

# 语法
:s/旧字符串/新字符串/g

👉替换第几行到第几行中所有字符串:

# 语法
:n,m s/旧字符串/新字符串/g# 实例
:2,4 s/one/two/g

👉最常用的就是全文替换了:

# 语法
:%s/旧字符串/新字符串/g

🎎合并文件
可以用冒号 +r ( :r ) 实现在光标处插入一个文件的内容。

:r filename # 可以用Tab键来自动补全另外一个文件的路径

🏅分屏
Vim 有一个特别便捷的功能那就是分屏,可以同时打开好几个文件,分屏之后,屏幕每一块被称为一个 viewport ,表示“视口”。
-横向分屏 : sp 文件名
-垂直分屏 : vsp 文件名

🤿分屏模式下的快捷键
Ctrl + w 再加 Ctrl + w ,表示从一个 viewport 移动光标到另外一个 viewport ;
Ctrl + w 再加 “方向键”,就可以移动到这个方向所处的下一个视口了;
Ctrl + w 再加 + 号,表示扩大当前视口;
Ctrl + w 再加 - 号,表示缩小当前视口;
Ctrl + w 再加 = 号,表示平均当前视口;
Ctrl + w 再加 r 键,会反向调换视口位置;
Ctrl + w 再加 q 键,会关闭当前视口;
Ctrl + w 再加 o 键,会关闭除当前视口以外的所有视口;

🥊运行外部命令 :!
👉在 Vim 中可以运行一些终端命令,只要先输入 :! ,然后接命令名称,例如:

:!ls # 在Vim中打开的文件所在的目录运行ls命令

🏀可视模式
前面只讲了 Vim 的三种模式,其实还有一种模式叫做可视模式。
进入它的三种方式(都是从交互模式开始):

  • v 字符可视模式,进入后配合方向键选中字符后,然后再按 d 键可以删除选中。
  • V 行可视模式,进入后光标所在行默认被选中,然后再按 d 键可以删除所在行。
  • Ctrl + v 块可视模式,它是可视模式最有用的功能了,配合 d 和 I 键可以实现删除选中的内容和插入内容。

同时选中多行,并在选中行头部插入内容的具体操作步骤:

1. ctrl + v 进入块可视模式
2. 使用方向键进行选中(上下左右)假设选中53. 输入 I 键进行多行同时插入操作
4. 插入完成后连续按两下 esc 键,实现多行同时插入相同字符

进入可视模式之后的操作键:

  • d 键,表示删除选中;
  • I 键,表示在选中之前插入;
  • u 键,表示选中变为小写;
  • U 键,表示选中变为大写;
🌻🌻🌻🌼🌼🌼🌺🌺🌺🌼🌼🌼🌻🌻🌻

🙆‍♂️内容六:Vim 配置


🎃选项参数
在 Vim 被启动后,可以运行一些指令来激活一些选项参数,但是这些选项参数的配置在退出 Vim 时会被忘记,例如前面讲解的激活行号。如果希望所在的配置是永久性的,那么需要在家目录( cd ~ )创建一个 Vim 的配置文件 .vimrc 。

🎏 .vimrc

set number " 显示行号
syntax on " 激活语法高亮
set showcmd " 实时看到输入的命令
set ignorecase " 搜索时不区分大小写
set mouse=a " 激活鼠标,用鼠标选中时相当于进入可视模式

Vim 配置非常丰富,我们可以通过个性化配置把 Vim 打造成属于自己的 IDE 等等。在 github 上也可以搜索到一些强大的 Vim 配置文件。

🌻🌻🌻🌼🌼🌼🌺🌺🌺🌼🌼🌼🌻🌻🌻

🙇内容七:小结


🧑‍🚀 小结
Vim 可谓是我们入门 Linux 必修课之一,本文讲解了它的,交互模式、插入模式、命令模式,文中也提及了可视模式。
通过基本操作、标准操作以及高级操作的分类,由浅至深的讲解了 Vim 的常用操作。
最后讲解了如何通过配置文件的方式对 Vim 进行永久性配置。
希望通过本文的学习,让您可以快速掌握 Vim 核心功能的使用

🏂 提示
文章来源网络,如有侵权,请联系作者删除,谢谢!
来源:https://juejin.cn/post/6929248764746006535

在这里插入图片描述

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

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

相关文章

【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》 🌝每一个不曾起舞的日子,都是对生命的辜负。 目录 前言: 一、隐式类型转换 (一)整型提升的意义…

Dubbogo 详解

Dubbogo 详解 简介 dubbo功能很强大的微服务开发框架,支持多种通信协议,并具有流量治理的功能。 dubbo在有了大转变,拥抱了云原生,从哪些方面可以体现呢? 推出了自己的Trip协议修复了服务发现的级别,之…

华为云CodeArts产品体验的心得体会及想法

文章目录 前言CodeArts 的产品优势一站式软件开发生产线研发安全Built-In华为多年研发实践能力及规范外溢高质高效敏捷交付 功能特性说明体验感受问题描述完结 前言 华为云作为一家全球领先的云计算服务提供商,致力于为企业和个人用户提供高效、安全、可靠的云服务。…

算法与数据结构(二十一)前缀和数组差分数组

前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。 1. 一维数组中的前缀和 先看一道例题,力扣第 303 题「区域和检索 - 数组不可变」,让你计算数组区间内元素的和,这是一道标准的前缀和问题: 题目要求你实现这样一个…

【C++初阶】---C++入门篇

文章目录 前言🌟一、C历史介绍🌟二、命名空间🌏2.1.C与C对比🌏2.2.命名空间的引入🌏2.3.命名空间定义🌏2.4.命名空间的使用🌏2.5.对上述C与C对比中的第二个不同点的解释: &#x1f3…

TableGPT: Towards Unifying Tables, Nature Language and Commands into One GPT

论文标题:TableGPT: Towards Unifying Tables, Nature Language and Commands into One GPT 论文地址:https://github.com/ZJU-M3/TableGPT-techreport/blob/main/TableGPT_tech_report.pdf 发表机构:浙江大学 发表时间:2023 本文…

使用GGML和LangChain在CPU上运行量化的llama2

Meta AI 在本周二发布了最新一代开源大模型 Llama 2。对比于今年 2 月发布的 Llama 1,训练所用的 token 翻了一倍,已经达到了 2 万亿,对于使用大模型最重要的上下文长度限制,Llama 2 也翻了一倍。 在本文,我们将紧跟趋…

【NLP】使用 Keras 保存和加载深度学习模型

一、说明 训练深度学习模型是一个耗时的过程。您可以在训练期间和训练后保存模型进度。因此,您可以从上次中断的地方继续训练模型,并克服漫长的训练挑战。 在这篇博文中,我们将介绍如何保存模型并使用 Keras 逐步加载它。我们还将探索模型检查…

JavaSwing+MySQL的酒店管理系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88063706?spm1001.2014.3001.5503 JDK1.8、MySQL5.7 功能:散客开单:完成散客的开单,可一次最多开5间相同类型的房间。 2、团体开单:完成团体…

【论文笔记】KDD2019 | KGAT: Knowledge Graph Attention Network for Recommendation

Abstract 为了更好的推荐,不仅要对user-item交互进行建模,还要将关系信息考虑进来 传统方法因子分解机将每个交互都当作一个独立的实例,但是忽略了item之间的关系(eg:一部电影的导演也是另一部电影的演员&#xff09…

醉梦仙踪:二叉树狂想曲,中序遍历的华丽穿梭

本篇博客会讲解力扣“94. 二叉树的中序遍历”的解题思路,这是题目链接。 如何对二叉树进行中序遍历呢?所谓中序遍历,即先遍历左子树,接着遍历根节点,最后遍历右子树的一种遍历方式。具体来说,假设有某一种“…

htmlCSS-----背景样式

目录 前言: 背景样式 1.背景颜色 background-color 2.背景图片 background-image 背景的权重比较 代码示例: 前言: 很久没写文章了,会不会想我呢!今天我们开始学习html和CSS的背景样式以及文字样式&#xff…

qt 5.12.6配置 msvc2015 32bit

qt 5.12.6配置 msvc2015 32bit 1.添加临时档案库2.安装 msvc20153. 配置 qmake 环境4.修改系统环境变量5.问题修改1.qt没有被正确的安装,请运行make install2.QT编译出错:rc不是内部或外部命令,也不是可运行的程序 或批处理文件。3.QT License check fai…

【Selenium+Pytest+allure报告生成自动化测试框架】附带项目源码和项目部署文档

目录 前言 【文章末尾给大家留下了大量的福利】 测试框架简介 首先管理时间 添加配置文件 conf.py config.ini 读取配置文件 记录操作日志 简单理解POM模型 简单学习元素定位 管理页面元素 封装Selenium基类 创建页面对象 简单了解Pytest pytest.ini 编写测试…

php使用PDO_sqlsrv

php拓展下载:Microsoft Drivers for PHP 发行说明 - PHP drivers for SQL Server | Microsoft Learn 参考文章:php7.3.4 pdo方式连接sqlserver 设置方法_pdo sqlserver_黑贝是条狗的博客-CSDN博客 php5.6.9安装sqlsrv扩展(windows&#xff0…

CXL Bias Mode (1) - Bias Mode 背景与分类

🔥点击查看精选 CXL 系列文章🔥 🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥 📢 声明: 🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

SUSE宣布推出免费RHEL分叉以保留企业级Linux的选择权

导读在Red Hat宣布将限制AlmaLinuxOS或Rocky Linux等社区发行版对其公共仓库的访问后,最近Red Hat与IBM之间发生了一些争论,有鉴于此,SUSE今天宣布计划为RHEL和CentOS用户提供一个免费的替代方案。 SUSE已经开发了SUSE Linux Enterprise (SLE…

【问题记录】Ubuntu 22.04 环境下,打开 VS Code 老是访问密钥环该怎么解决?

目录 环境 问题情况 解决方法 环境 VMware Workstation 16 Pro (版本:16.1.2 build-17966106)ubuntu-22.04.2-desktop-amd64 问题情况 在Ubuntu下,每次运行 VS Code时,老是提示要输入密钥密码来解锁保存在密钥环&am…

C语言程序运行需要的两大环境《C语言进阶》

目录 程序的翻译环境和执行环境 翻译环境分为两部分,编译链接 第一步:预编译(预处理) 第二步,编译 第三步:汇编 关于运行环境分为四点: 关于链接库 程序的翻译环境和执行环境 在 ANSI C(标…

【全面解析】Windows 如何使用 SSH 密钥远程连接 Linux 服务器

创建密钥 创建 linux 服务器端的终端中执行命令 ssh-keygen,之后一直按Enter即可,这样会在将在 ~/.ssh/ 路径下生成公钥(id_rsa.pub)和私钥(id_rsa) 注意:也可以在 windows 端生成密钥,只需要保证公钥在服务器端,私钥…