003.Vim编辑器

Vim 是由Vi 发展演变过来的文本编辑器,因其具有语法高亮显示、多视窗编辑、代码折叠、支持插件等功能,现已成为众多Linux发行版本的标配。

1、Vim 工作模式

Vim 具有多种工作模式。常用的工作模式有:普通模式、插入模式、命令模式。

  • 普通模式:可以实现基本的光标移动与大量的快捷键操作。
  • 插入模式:可以实现基本的文本编辑功能。
  • 命令模式:通过输入特定的命令实现特定的功能,如保存、退出等功能。

输入”Vim 文件名“:如果文件存在,Vim将打开该文件;如果文件不存在,Vim将创建该文件。

提示:使用Vim打开文件时,如果提示:Found a swap file by the name,类似这样的信息代表着有其他进程正在同时编辑该文件,或者由于上次Vim非正常关闭,导致swap文件没有清除导致的,可以将一个以点开始的一个隐藏文件删除,解决类似问题。该隐藏文件与原始文件处于相同目录下,文件名的后缀一般为swap(如.http.conf.swp)

Vim 编辑器默认会进入普通模式,插入模式可以通过以下按键进入:

  • a:进入插入模式,后续输入的内容将插入至当前光标的后面。
  • A:进入插入模式,后续输入的内容将插入至当前段落的段尾。
  • i:进入插入模式,后续输入的内容将插入至当前光标的前面。
  • I:进入插入模式,后续输入的内容将插入至当前段落的段首。
  • o:进入插入模式并在当前行的后面创建新的空白行。
  • O:进入插入模式并在当前行的前面创建新的空白行。

通过Esc键可以回到普通模式。

在普通模式下输入”:“,即可进入命令模式;在”:“后输入命令,可实现特定的功能,如:q! 强制退出编辑器、wq 保存并退出等等。

2、Vim 光标操作

Vim 中最简单移动光标的方式是使用方向键(上、下、左、右)操作,但使用这种方式效率低下,更高效的方式是使用快捷键,所有快捷键均在普通模式下直接使用,如下是常用的快捷键:

h: 光标向左移动一位

gg:移动光标至文件首行

j: 光标向下移动一行

G: 移动光标至文件末尾

k: 光标向上移动一行

nG:移动光标至文件的第n行

l: 光标向右移动一位

^|home: 动光标至当前行的首字符

W: 光标向右移动一个单词

$|end: 移动光标至当前行的尾字符

nw:光标向右移动n个单词

fx: 移动光标至当前行的下一个x字符处

b: 光标向左移动一个单词

Fx: 移动光标至当前行的上一个x字符处

nb:光标向左移动n个单词

3、Vim 编辑文档

在Vim编辑器中编辑文档内容主要有两种常用方式:进入编辑模式操作和快捷键操作。进入编辑模式后,可以通过移动光标的方式进行增加、删除、修改等操作,这种方法是最简单的方式。而快捷键操作方式是在普通模式下输入相应的快捷键实现对应的功能。

x: 删除光标指向的字符

yy:复制当前行,nyy:复制n行

dd: 删除一行

p: 粘贴至当前行之后

ndd:删除n行

P: 粘贴至当前行之前

d$: 删除光标至行尾的内容

d^: 删除光标至行首的内容

u: 撤销上一步操作,可以多次使用。2个u:撤俩步

U: 取消对当前行所做的所有编辑

J: 删除换行符,可以将两行合并为一行

rx: 将光标当前字符替换为x

4、Vim 查找&替换

查找:当文档内容很长时,我们可以通过查找快速定位要找的内容,在Vim的普通模式下输入:

  • /关键字(/host):实现自上往下的查找功能,n 跳转到下一个匹配的关键字处,N跳转到上一个匹配的关键字处。
  • ?关键字(?host):实现自下往上查找功能,n 跳转到上一个匹配的关键字处,N跳转到下一个匹配的关键字处。

替换:进入命令模式完成替换功能:[替换范围] sub/旧的内容/新的内容[/g]

  • 替换范围:
    • 替换范围是可选部分,默认时只对当前行的内容进行替换
    • % 在整个文件内容中进行查找并替换
    • n,m在指定行数范围内的文件内容中进行查找并替换
  • /g”对替换范围内每一行的所有匹配内容都进行替换,省略“/g”时将只替换每行中的第一个匹配内容。
:s/root/admin/				# 将光标当前行第一个出现的root替换为admin,没有则不替换
:s/root/admin/g				# 将光标当前行中所有的root替换为admin
:3,5 s/sbin/bin/g			# 将第3行至第5行之间的所有sbin替换为 bin
:% s/nologin/fault/g		# 将所有行的nologin都替换为fault
5、Vim 命令模式

通过命令模式,输入特定的命令实现保存与退出功能,常见指令如下:

  • :q! 不保存并退出
  • :wq|:x!|shift + zz 保存并退出
  • :x 保存并退出
  • :w 保存
  • :w b.txt 另存为b.txt
  • :e /etc/passwd 打开新的文件进行编辑
  • :r /etc/passwd 在当前文件中读取其他文件的内容至当前光标

提示:Vim 提示错误信息E32:No file name时,说明你没有为文件设置文件名,需要在w后跟上文件名称。

另一种保存方式为快捷键操作,在普通模式下输入ZZ,即可实现保存并退出文档。

6、Vim 小技巧

a. 显示行号:在命令行模式下输入 :set number | :set nu

b. 忽略大小写:在命令行模式下输入 :set ignorecase

c. 执行shell命令:执行一条shell指令,不退出Vim编辑器,可以通过“:!{命令}”的方式实现,如,":!ls" 查看当前目录下档案的名称。

d. 自动补齐:如果输入的内容在前面已经出现过,可以通过“Crtl + N"快捷键实现自动补齐。

e. 多视口编辑:当同时编辑多个文档时,分割窗口就尤为重要。在命令模式下输入”:split“,此命令为水平分割窗口,垂直分割可以使用”:vsplit“命令。输入”:close“命令,可以关闭当前窗口。

    • :split second.txt:分割窗口并打开新的文件。
    • Ctrl + w + h:跳转至左边一个窗口
    • Ctrl + w + l:跳转至右边一个窗口
    • Ctrl + w + j:跳转至上面一个窗口
    • Ctrl + w + k:跳转至下面一个窗口

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

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

相关文章

vue3基础学习(上)

##以前怎么玩的? ###MVC Model:Bean View:视图 Controller ##vue的ref reactive ref:必须是简单类型 reactive:必须不能是简单类型 ###创建一个Vue项目 npm init vuelatest ###生命周期 ###setup相关 ####Vue2的一些写法 -- options API ####Vue3的写法 组合式API Vu…

洗地机选购攻略,洗地机哪个品牌好?一篇教会你挑到好用的洗地机

随着国内生活水平的提高,智能清洁产品的呼声也越来越高,尤其是洗地机,可以说是国内各个品牌的洗地机铺天盖地而来,那么如何挑选洗地机成了很多新手的困惑,别着急,笔者今天就给大家讲讲洗地机! 一、购买洗地…

【Axure教程】滑动内容选择器

滑动内容选择器通常是一种用户界面组件,允许用户通过滑动手势在一组内容之间进行选择。这种组件可以在移动应用程序或网页中使用,以提供直观的图片选择体验。 那今天就教大家如何用中继器制作一个滑动内容选择器,我们会以滑动选择电影为案例…

HTML5学习系列之标题和正文、描述性信息

HTML5学习系列之标题和正文、描述性信息 标题和正文标题段落 描述性信息强调注解备选上下标术语代码预定义格式缩写词编辑提示引用引述换行显示修饰非文本注解 总结 标题和正文 标题 按语义轻重排列&#xff1a;h1\h2\h3\h4\h5\h6 <h1>诗词介绍</h1> <h2>…

外汇天眼:什么是非农?非农数据对外汇市场的重要性!

非农数据在外汇市场中扮演着何等关键的角色&#xff1f; 美国非农数据&#xff0c;简称“非农”&#xff0c;具体指排除农业部门、个体户和非盈利机构雇员后的就业相关数据&#xff0c;是反映美国经济实际就业和整体经济状况的关键指标。该数据由美国劳工部劳动统计局每月发布…

ExoPlayer架构详解与源码分析(8)——Loader

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…

map和set的简易封装(纯代码)

RBTree.h #pragma once#include<iostream> #include<vector> using namespace std;enum colar { red,black };template<class T>//有效参数就一个 struct RBTreeNode {RBTreeNode(const T& data):_left(nullptr), _right(nullptr), _parent(nullptr)…

黑马点评回顾 redis实现共享session

文章目录 传统session缺点整体访问流程代码实现生成验证码登录 问题具体思路 传统session缺点 传统单体项目一般是把session存入tomcat&#xff0c;但是每个tomcat中都有一份属于自己的session,假设用户第一次访问第一台tomcat&#xff0c;并且把自己的信息存放到第一台服务器…

免费的快速手机文件解压APP,快冲

各位小伙伴们大家好&#xff0c;今天我要介绍一款手机上必备的神奇工具&#xff01;你有没有经常遇到需要解压文件情况呢&#xff1f;还在为不知道用哪个软件而烦恼吗&#xff1f;别担心&#xff0c;我给你带来了解决方案 &#xff0c;就是这一款免费的解压精灵。 解压精灵是一…

【Nginx】使用nginx进行反向代理与负载均衡

使用场景 反向代理&#xff1a;一个网站由许多服务器承载的&#xff0c;网站只暴露一个域名&#xff0c;那么这个域名指向一个代理服务器ip&#xff0c;然后由这台代理服务器转发请求到网站负载的多台服务器中的一台处理。这就需要用到Nginx的反向代理实现了 负载均衡&#xf…

怎么去掉邮件内容中的回车符

上图是Outlook 截图&#xff0c;可见1指向的总有回车符&#xff1b; 故障原因&#xff1a; 不小心误按了箭头4这个选项&#xff1b; 解决方法&#xff1a; 点击2箭头确保tab展开&#xff1b; 点击3以找到箭头4. 取消勾选或者多次点击&#xff0c;即可解决。

@JSONField注解

JSONField注解 JSONField注解是阿里巴巴fastjson库中的注解&#xff0c;用于控制Java对象与JSON字符串之间的转换。它可以用于控制序列化和反序列化过程中的一些细节&#xff0c;例如日期格式、序列化顺序、字段名称等。 JSONField注解的常用属性包括&#xff1a; - name&am…

搜维尔科技:人体解剖学混合现实演示系统!

搜维尔科技&#xff1a;人体解剖学混合现实演示系统&#xff01;

单区域OSPF配置

配置命令步骤&#xff1a; 1.使用router ospf 进程ID编号 启用OSPF路由 2.使用network 直连网络地址 反掩码 area 0 将其归于区域0 注意&#xff1a;1.进程ID编号可任意&#xff08;1-65535&#xff09;2.反掩码用4个255相减得到 如下图&#xff0c;根据给出要求配置OSPF单区…

HT8313 D/AB切换 音频功率放大器

HT8313具有AB类和D类的自Y切换功能&#xff0c;在受到D类功放EMI干扰困扰时&#xff0c;可随时切换至AB类音频功放模式&#xff08;此时电荷泵升压功能关闭&#xff09;。 HT8313内部固定28dB增益&#xff0c;内置的关断功能使待机电流Z小化&#xff0c;还集成了输出端过流保护…

SpringBoot+EasyExcel设置excel样式

方式一&#xff1a;使用注解方式设置样式 模板可通过HeadFontStyle、HeadStyle、ContentFontStyle、ContentStyle、HeadRowHeight ContentRowHeight等注解设置excel单元格样式&#xff1b; //字体样式及字体大小 HeadFontStyle(fontName "宋体",fontHeightInPoints…

C#反射介绍

C# 反射&#xff08;Reflection&#xff09;是一个强大的机制&#xff0c;允许在运行时检查程序集、模块和类型的元数据&#xff0c;以及动态创建和操作类型的实例。通过反射&#xff0c;你可以在运行时获取和设置对象的属性、调用方法、创建新对象&#xff0c;甚至可以加载新的…

JavaEE进阶学习:Spring核心和设计思想

Spring 是什么 我们通常所说的 Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;有着活跃而庞大的社区&#xff0c;这就是它之所以能长久不衰的原因。Spring 支持广泛的应用场景&#xff0c;它可以让 Java 企业级…

Linux中的man、mkdir、touch

man命令&#xff1a; man是Linux提供的一个手册&#xff0c;这个手册有很多个章节 第一章中放的是 命令 的帮助信息 第二章中放的是系统调用&#xff08;操作系统提供的函数open&#xff09; 第三章中放的是库函数&#xff08;c库提供的函数怕printf&#xff09;的帮助信息 用法…

oracle导出问题:ORA-00904: “POLTYP“: 标识符无效

在本地机器上导出远端服务器上数据库的数据遇到下面问题&#xff1a; 使用的导出指令&#xff1a;exp zjh/zjh45435**6756z9g91.zicp.fun:16435/zjh file F:\software\Oracle19c\exportNew\zjh.dmp log F:\software\Oracle19c\exportNew\zjh.log 遇到的问题&#xff1a; . 正…