【日常积累】Linux中vi/vim的使用

概述

vim是由vi发展演变过来的文本编辑器,因其具有语法高亮显示、多视窗编辑、代码折叠、支持插件等功能,由于其功能相比vi来说更加强大,所以在实际工作中的使用更加广泛。

vim工作模式

Vim具有多种工作模式,常用的工作模式有:普通模式、插入模式、命令模式。其中,普通模式可以实现基本的光标移动与大量的快捷键操作,插入模式可实现文本的基本编辑功能,命令模式通过输入特定的指令实现特定的功能,如保存与退出等。

直接输入vim命令,即可开启该文本编辑器,默认将创建一个 新的文档(保存时需要指定文件名)。另外,如果vim命令后跟了文件名参数,则需要看该文件是否存在,如果存在,vim将打开该文件,如果不存在,vim将创建该文件。

vim编辑器默认会进入普通模式,插入模式可以通过以下按键进入。如下表1。

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

当需要退回到普通模式或不知道自己当前处于什么模式时,可以通过Esc键返回到普通模式。最后,在普通模式下输入“:”, 即可进入命令模式;在“:”后输入指令,即可实现特定的功能。

在插入模式中,可以使用以下按键,如下表2:

按键功能描述
各字符按键以及Shift组合输入各种字符
ENTER换行
BACK SPACE删除光标前一个字符
DEL删除光标后一个字符
方向键在文本中移动光标
HOME/END移动光标到行首/行尾
Page Up/Page Down上/下翻页
Insert切换光标为输入/替换模式

Vim光标操作

vim中最简单的移动光标的方式是使用方向键(. 上、下、左、右)操作,但这种方式的效率太低,更高效的方式是使用快捷键,常用的快捷键如下表所示,所有的快捷键均在普通模式下直接使用。快捷键的使用需要在日常中多加使用记忆,不然很容易就忘记了。如下表3。

快捷键功能描述
h光标向左移动一位,多行可以添加数字在前面
j光标向下移动一行(以回车为换行符),多行可以添加数字在前面
k光标向上移动-一行,多行可以添加数字在前面
l光标向右移动一位,多行可以添加数字在前面
H光标移动到这个屏幕的最上方那一行的第一个字符
M光标移动到这个屏幕的中央那一行的第一个字符
L光标移动到这个屏幕的最下方那一行的第一个字符
gg移动光标至文件首行
G移动光标至文件末尾
nG移动光标至第n行(n为数字,如n为10时表示第10行)
^光标移至当前行的首字符
$光标移至当前行的尾字符
fx光标移至当前行的下一个x字符处(相当于查找并跳转至x字符)
Fx光标移至当前行的上一个x字符处
w光标向右移动- -个单词
nw光标向右移动n个单词(n 为数字)
b光标向左移动一个单词
nb光标向左移动n个单词(n 为数字)

vim编辑文档

在vim编辑器中编辑文档内容主要有两种常用的方式:进入编辑模式操作和快捷键操作。进入编辑模式的方法已经在表1中有详细的描述,进入编辑模式后,即可以通过移动光标进行增加、删除、修改的基本操作,这种方法也是最简单的方式。另外,快捷键操作方式是在普通模式下输入相应的快捷键实现对应的功能,快捷键功能描述如下表4。

快捷键功能描述
x删除光标当前字符
dd删除一行
ndd删除n行(n为数字)
d$删除光标至行尾的内容
J删除当前行的换行符,可以将两行合并为一行
u撤销上一步操作,可以多次使用uu表示撤销两步操作
ctrl + r重做上一次撤销的操作,相当于恢复。也可以多次使用进行多次恢复。
rx将光标当前字符替换为x (x 为任何键盘单个输入)
yy复制当前行
p粘贴至当前行之后
P粘贴至当前行之前(注意大小写)

vim查找与替换

当文档很长时,我们可以通过查找快速定位要找的内容,在vim中通过“/”关键字实现自上往下的查找功能,如,/password在当前文档的光标处向下查找password并显示,如果一个文档中有多个password, 可以通过快捷键n跳转至下一个匹配的关键词处,快捷键N将跳转至上一个匹配的关键词处。另外,“?”关键词实现了自下往上的查找功能,如,?password 从当前文档的光标处向上查找password并显示,此时快捷键n表示向上查看匹配,N表示向下查看匹配。

vim提供了非常好用的替换功能,可以快速完成大量的替换工作。

[root@VM-4-6-centos ~]# cp /etc/passwd /tmp/
[root@VM-4-6-centos ~]# vim /tmp/passwd

通过上面两条命令复制一份临时测试文档并编辑,我们可以对该文件实现多种替换功能,如下表5所示(在普通模式下,输入冒号“:”进入命令模式完成替换命令)。

指令功能描述
:s/root/admin/ 将光标当前行中第-一个出现的root替换为admin,没有则不替换
:s/root/admin/g将光标当前行中所有的root替换为admin
:2,4s/sbin/bin/g将第二行至第四行之间的所有sbin替换为bin
:%s/nologin/login/g将所有行的nologin都替换为login

vim的保存与退出

一般情况下,我们会通过命令模式输入特定的指令实现保存与退出功能,常用指令详见下表6。

指令功能描述
:q!不保存并强制退出
:wq保存并退出
:x保存并退出
:w保存
:w a.txt另存为a.txt,如果直接vim不指定打开文件,保存的时候就需要指定文件名
另一种保存方式为快捷键操作,在普通模式下输入ZZ,即可实现保存并退出文档。注意是大写的ZZ

更多使用技巧

显示行号

显示当前行是第几行的方式有很多,可以通过为文档添加行号来实现,添加行号的方法是在命令模式下输入:set number或简写:set nu即可。

忽略大小写.

在vim中查找时,你可能不清楚所要找的关键词的大小写,而vim默认是区分大小写的,
这时可以通过在命令模式下输入:set ignorecase,实现忽略大小写。

多窗口编辑

当需要同时编辑多个文档时,分割窗口就尤为重要了,**可以通过:split(水平分割)或者:vsplit(垂直分割)**来实现窗口的分割。如此可以实现编辑同一个文档的不同行或者不同文件,至于窗口的切换,可以使用如下快捷方式:
Ctrl+w+h快捷键表示跳转至左边一个窗口, Ctrl+w+l 快捷键表示跳转至右边一个窗口;
Ctrl+w+j快捷键表示跳转至下面一个窗口,Ctrl+w+k 快捷键表示跳转至上面一一个窗口。

在命令模式下输入:q(:close),两个命令可以关闭当前窗口。
在命令模式下输入:split second.txt,此命令会水平分割窗口并打开新的文件,如此实现多窗口多文件的编辑工作。默认的:split 为水平分割窗口,垂直分割可以使用:vsplit指令。

执行Shell命令

使用vim编辑文档的过程中,如需要执行一条Shell命令而不想退出Vim编辑器,可以通过:!{命令}的方式实现。例如,需要查看当服务器的IP地址时,则在命令模式下输入指令:!ip a 即可,执行完成后按回车键返回vim编辑器。

自动补齐

如果需要输入的内容在前面的行中已经出现过,那么vim可以根据上文内容自动补齐输入。例如,在文件某行需要之前的某个单词,以后需要再次输入单词的前一个或者几个首字母,然后使用快捷键Ctrl+N,通过上下键选择自己需要的即可实现自动补齐功能。
在这里插入图片描述
注意:此时选中的是helloa。编辑器下方也会通过数字来显示当前的选择项。

块删除

某些情况下,我们需要删除多行的某一部分,操作如下:

  • 按下组合键“ctrl+v” 进入“块选择”模式,通过上下左右键选取块操作的行和列,注意是以进入块选择模式前光标所在的位置为基点。
  • 按下d (或者x键)即可删除被选中的整块,后面还可以通过p进行粘贴使用。

块插入

主要针对同时对多行添加相同的内容。操作如下:

  • 按下组合键“ctrl+v” 进入“块选择”模式,选取上下键选取需要插入内容的行,注意也是以进入块选择模式前光标所在的位置为基点选择行。
  • 按下shift+i(或者大写的字母"i")
  • 输入要插入的内容
  • 按ESC,之后就会看到插入的效果。
    在这里插入图片描述
    更多vim的使用方法请自行探索。

更多关于Linux的知识请前往博客主页查看,编写过程中可能由于能力有限难免出现问题,敬请指出,谢谢。

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

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

相关文章

在外Windows远程连接MongoDB数据库【无公网IP】

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

Midjourney API 的对接和使用

“ 阅读本文大概需要 4 分钟。 ” 在人工智能绘图领域,想必大家听说过 Midjourney 的大名吧。 Midjourney 以其出色的绘图能力在业界独树一帜。无需过多复杂的操作,只要简单输入绘图指令,这个神奇的工具就能在瞬间为我们呈现出对应的图像。无…

VUE笔记(一)初识vue

一、vue的简介 1、什么是vue 官网地址:Vue.js Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。 构建用户界面:之前在学习vue之前通过原生js对DOM操作进行构建用户界面的 使用原生js构建用户界面的不足 - 没有规范&#xff0c…

Kubernetes(K8S)使用PV和PVC做存储安装mysql

Kubernetes使用PV和PVC做存储安装mysql 环境准备什么是PV和PVC环境准备配置nfs安装nfs配置nfs服务端 创建命名空间配置pv和pvcpv的yaml文件pvc的yaml文件 部署mysql创建mysql的root密码的secret创建mysql部署的yaml部署mysql链接mysql外部链接内部链接 环境准备 首先你需要一个…

git 基础入门

Git基础入门 Git是一个分布式 版本管理系统,用于跟踪文件的变化和协同开发。 版本管理:理解成档案馆,记录开发阶段各个版本 分布式&集中式 分布式每个人都有一个档案馆,集中式只有一个档案馆。分布式每人可以管理自己的档案…

HodlSoftware-免费在线PDF工具箱 加解密PDF 集成隐私保护功能

HodlSoftware是什么 HodlSoftware是一款免费在线PDF工具箱,集合编辑 PDF 的简单功能,可以对PDF进行加解密、优化压缩PDF、PDF 合并、PDF旋转、PDF页面移除和分割PDF等操作,而且工具集成隐私保护功能,文件只在浏览器本地完成&…

SQLI-labs-第一关

知识点:单引号字符型注入 思路: 1、根据提示,为get注入,在url中输入内容 2、判断注入点 输入?id1,显示数据库语句错误,说明这里存在sql注入漏洞 输入?id1‘ and 11 -- ,回显正常&#xff0c…

webpack5(一)

什么是webpack webpack是一个静态资源打包工具,它会以一个或者多个文件作为打包的入口,将整个项目的所有文件编译组合成一个或多个文件输出出去。输出的文件就是编译好的文件,可以在浏览器端运行。一般将 webpack 输出的文件称为 bandle 。 …

Linux操作系统--网络配置(2)

在上一次课程中,我们对Linux课程中的网络有了一个了解,下面我们来看看如何配置网络IP。 1.配置网络IP地址 在Linux操作系统中,比如搭建集群,这一个时候如果使用DHCP实现动态IP的分配,那么如果需要访问管理其中一个节点操作时候,就需要通过其IP访问。这一个时候还得去查看…

RabbitMQ死信队列

RabbitMQ死信队列 1、过期时间TTL 过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取;过了之后消息将自动被 删除。RabbitMQ可以对消息和队列设置TTL,目前有两种方法可以设置: 第一种方法是通过队列…

广汽埃安,新能源扛把子?继比亚迪、理想之后实现正“盈利”

根据广汽集团日前披露的2023年半年度报告,广汽埃安在今年的六七月份连续两个月实现盈利,成为继比亚迪、理想之后,第三家实现盈利的国产新能源汽车品牌。这一成绩进一步表明广汽埃安在国内新能源汽车市场的竞争力以及其持续增长的势头。报告显…

PHP教学资源管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 教学资源管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88260480 论文 https://downl…

Matlab图像处理-减法运算

减法运算 图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。常用来检测一系列相同场景图像的差异,其主要的应用在于检测同一场景下两幅图像之间的变化或是混合图像的分离。 差影法 将同一景物在不同时问拍摄的图像或同一景…

MATLAB软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 MATLAB是Matrix Laboratory的缩写,是一款由美国MathWorks公司开发的商业数学软件。它主要用于进行数值计算、数据分析、可视化、算法开发、模拟仿真等多个领域。MATLAB具有高度的灵活性和开放性,可以为用…

Flink流批一体计算(18):PyFlink DataStream API之计算和Sink

目录 1. 在上节数据流上执行转换操作,或者使用 sink 将数据写入外部系统。 2. File Sink File Sink Format Types Row-encoded Formats Bulk-encoded Formats 桶分配 滚动策略 3. 如何输出结果 Print 集合数据到客户端,execute_and_collect…

水库大坝安全监测的主要内容包括哪些?

在水库大坝的实时监测中,主要任务是通过无线传感网络监测各个监测点的水位、水压、渗流、流量、扬压力等数据,并在计算机上用数据模式或图形模式进行实时反映,以掌握整个水库大坝的各项变化情况。大坝安全监测系统能实现全天候远程自动监测&a…

ruoyi-vue-plus 配置邮箱

ruoyi-vue-plus 配置邮箱 📔 千寻简笔记介绍 千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请…

当我焦虑时,我从CSDN的博主身上学到了什么?

文章目录 前言一、思考为什么会产生差距1.1 懒惰1.2 没有合理的规划学习时间 二、我该如何做?2.1 认真生活规律作息2.2 做事就是0和1 结语 前言 我们在学习的过程当中总会遇到一些比我们自己优秀的人,不论你是在更好的985或211院校学习,还是…

Netty-01-快速掌握Java NIO

文章目录 一、从传统I/O到Java NIO二、NIO 三大组件1. Channel(通道)1.1. FileChannel1.1.1. 获取 FileChannel1.1.2. FileChannel 读取 文件1.1.3. FileChannel写⽂件1.1.4. 通道之前传输数据-transferFrom1.1.5. 通道之前传输数据-transferTo 1.2. Soc…

学习Linux基础知识与命令行操作

开始学习Linux系统前,首先要掌握计算机基础知识,了解硬件、操作系统、文件系统、网络和安全等概念。对这些基础知识的了解能够帮助理解Linux系统的概念和功能。 在Linux系统中,文件和目录是数据管理的基本单位。每个文件和目录都有一个称为&…