vi/vim命令,使用vi编辑器命令详解

news2025/7/7 17:27:36

linux常用命令:vi/vim

vi命令有三种模式:一般模式,编辑模式,命令模式(底行模式)

        可以通过 vi [文件路径]文件名 的命令启动vi,并且打开指定的文件进行查看、编辑,其中[文件路径] 是可选参数。如果省略了前面的文件路径,则vi会在当前目录下查到指定的文件。

    跟touch命令一样,如果文件不存在,vi还会自动创建文件。当然创建文件的前提还是要有相关的操作权限

1.一般模式

一般模式是vi的默认模式,启动vi后,默认会进入到一般模式。在这个模式下可以进行复制、剪切、粘贴、删除等操作

(1).移动光标 

1).以字符为单位移动光标

正如在windows操作系统下的上、下、左、右四个按键,vi命令也是可以使用这四个按键操作光标进行上、下、左、右的移动。同时vi还有其他四个按键也拥有同样的功能

按键功能说明
h使光标向左移动一个字符
j使光标向下移动一个字符
k使光标向上移动一个字符
l使光标向右移动一个字符

2).以单词为单位移动光标

vi会以空格或者其他一些符号为分隔符,使用这些快捷键,可以让光标快速定位到单词的开头或者结尾

按键功能说明
w快速将光标移动到下一个单词的第一个字母
再按一次该按键光标会跳到下一个单词的第一个字母
e快速将光标移动到光标所在位置的单词的最后一个字母
再按一次该按键光标会跳到下一个单词的最后一个字母
b快速将光标移动到光标当前所在位置的单词的第一个字母
再按一次该按键光标会跳到上一个单词的第一个字母

3).以行为单位移动光标

以行为单位,让光标在整个文档随意上下跳转

按键功能说明
^英文输入法状态下,按住键盘的shift + 数字键6
跟正则表达式的功能一样,该按键会将光标快速定位到光标所在行的行首
$英文输入法状态下,按住键盘的shift + 数字键4
跟正则表达式的功能一样,该按钮会将光标快速定位到光标所在行的行尾
[n]Gn为阿拉伯数字,表示的是行号,G则一定是大写状态下的G键。
如:15G,光标会快速跳转到文档的第15行
CTRL + gctrl 键 + 小写字母g
该功能是显示光标当前所在的位置,处于文档的第几行第几列

4).以页为单位移动光标

其实这里理解为翻页可能会更好一些,但是为了方便记忆,暂且先归为按页跳转

按键功能说明
CTRL + d:向下滚动半页,助记(d:down)
CTRL + u:向上滚动半页,助记(u:up)
CTRL + f :向下滚动一页,助记(f:front)
CTRL + b:向上滚动一页,助记(b:back)

5).以文档为单位移动光标

直接就是跳到文档的开头和结尾了

按键功能说明
gg小写字母状态下连续按两次g键
光标会马上跳转到文档的首行
G大写字母状态下按G键
光标会马上跳到文档的最后一行

(2).复制功能

复制功能的关键按钮是 "y"键,再结合上面移动光标的功能,构造出来的结合键,就是一些功能强大的复制功能。

1).以单词为单位进行复制

    使用”y“键,再跟”以单词为单位移动光标“,构造出来的组合键,就是跟单词相关的复制功能。

按键功能说明
yw复制光标所在位置,直到下一个单词开头的内容
ye复制光标所在位置,直到当前单词结尾(或者下一个单词结尾)的内容
yb复制光标所在位置,直到当前单词开头(或者前一个单词开头)的内容

2).以行为单位进行复制

    使用”y“键,再跟”以行为单位移动光标“,构造出来的组合键,就是跟单词相关的复制功能

按键功能说明
y^先按下y键,输入 ^ 将光标跳转到行首
该组合键会复制光标当前所在位置,直到本行最开头的内容
y$先按下y键,输入 $将光标跳转到行尾
该组合键会复制光标当前所在位置,直到本行最后面的内容
[n]yyn为可选参数,可以是任意阿拉伯数字,意思是要复制多少行,只输入yy则会复制一行
如:3yy,则代表复制光标当前所在行,连同往下数的2行进行复制

(3).剪切(删除)功能

剪切功能的关键按键是”d“键,再结合上面移动光标的功能,构造出来的结合键,就是一些功能强大的剪切功能

    提醒一下,剪切功能就是把原来的内容”装“到剪切板,然后将原来的内容”删除“。剪切后不粘贴,那么剪切功能也可以当作是删除功能来使用的。

1).以单词为单位进行剪切(删除)

    使用”d“键,再跟”以单词为单位移动光标“,构造出来的组合键,就是跟单词相关的复制功能。

按键功能说明
dw剪切光标所在位置,直到下一个单词开头的内容
de剪切光标所在位置,直到当前单词结尾(或者下一个单词结尾)的内容
db剪切光标所在位置,直到当前单词开头(或者前一个单词开头)的内容

2).以行为单位进行剪切(删除)

使用”d“键,再跟”以行为单位移动光标“,构造出来的组合键,就是跟单词相关的复制功能。

按键功能说明
d^先按下d键,输入 ^ 将光标跳转到行首
该组合键会剪切(删除)光标当前所在位置,直到本行最开头的内容
d$先按下d键,输入 $将光标跳转到行尾
该组合键会剪切(删除)光标当前所在位置,直到本行最后面的内容
[n]dd

n为可选参数,可以是任意阿拉伯数字,意思是要复制多少行,只输入dd则会剪切(删除)一行
如:6dd,则代表复制光标当前所在行,连同往下数的5行进行剪切(删除)

(4).粘贴功能

粘贴功能就是小写字母”p“键,和大写字母”P“键,但是如果复制、剪切的内容不一样,实现起来也会有点不一样。

1).以单词为单位粘贴

按键功能说明
p小写字母p
光标当前所在位置之后,粘贴出前复制、剪切的内容
P大写字母P
光标当前所在位置之前,粘贴出前复制、剪切的内容

2).以行为单位粘贴

按键功能说明
p小写字母p
光标当前所在行的内容不动,在光标所以行的下一行开始插入复制的内容
P大写字母P
光标当前所在行的内容会往下移,跟在粘贴出来的内容后面

(5).删除补充

删除功能还有小写字母”x“键,还有大写字母”X“键。除以上面写到的按行进行删除外,vi也有类似于windows记事本的按字符删除的功能,跟退格键、Del键一样的功能。

按键功能说明
[n]x小写字母x
n为可选参数,若忽略参数n,则x键的功能就是windows记事本软件下的退格键
如:6x, 直接删除光标所在位置及后面5个字符
[n]X大写字母x
n为可选参数,若忽略参数n,则X键的功能就是windows记事本软件下的Del键
如:8X,直接删除光标所在位置及前面7个字符

(6).重写功能

重写功能的关键按钮是 小写字母"r"键和大写字母”R“键。重写功能就是将原来的内容覆盖了,用新的内容代替了原来的内容。

按键功能说明
r小写字母r
先按下r键,再输入新内容,则新内容只会将光标当前所在位置的内容替换
R大写字母R
跟windows系统下的Word文档下,按下Ins(insert)键一样。
只要不断地输入内容,光标所在位置及后面已有的内容都会被替换,需要按Esc键主动退出

(7).撤回功能

    撤回功能只有一个按键,通过小写字母”u“按钮,可以撤回前面对文档的修改

2.编辑模式

进入编辑模式后,vi的操作就跟平常在windows系统下使用记事本工具差不多了。从一般模式进入编辑模式,有以下几个按键可以选择,不同的按钮,也有不同的效果

按键功能说明
a小写字母a
在光标所在位置后面进行编辑
i小写字母i
在光标当前所在位置进行编辑
o小写字母o
光标所在行的下面插入空白行,同时光标移动到新插入的空白行
A大写字母A
光标移动到当前所在行的最后面进行编辑
I大写字母I
光标移动到光前所在行的最前面进行编辑
O大写字母O
在光标所在行插入新的空白行,光标停留在新行,光标所以行的内容所部住下移动

3.命令模式(底行模式)

命令模式下可以进行保存、退出、查找 、替换等工作

(1).保存、退出

按键功能说明
:w保存对文档的修改但不退出
:wq保存对文档的修改修改并退出
:q!放充对文档的修改并强行退出

(2).查找

按键功能说明
/从光标所在位置,向下查找,查找到第一个匹配的内容即停止
可以通过按键”n“继续向下查找,或者通过按钮”N“向上进行反向查找
?从光标所在位置,向上查找,查找到第一个匹配的内容即停止
可以通过按键”n“继续向上查找,或者通过按钮”N“向下进行反向查找

(3).替换

按键功能说明
s/old_string/new_string将光标所在行第一次匹配到的字符串old_string,替换为新的字符串new_string
s/old_string/new_string/g将光标所在行所有匹配到的字符串old_string,替换为新的字符串new_string
%s/old_string/new_string将整个文档所有行第一次匹配到的字符串old_string,替换为新的字符串new_string
%s/old_string/new_string/g将整个文档所有能匹配到的字符串old_string,替换为新的字符串new_string

(4).其他功能

按键功能说明
:set nu显示行号
:set nonu取消显示行号
:n快速跳转到文档的第n行

命令模式无法直接进入到编辑模式,同样编辑模式也无法直接进入到命令模式。编辑模式,或者命令模式,通过ESC键可以切换到一般模式,然后再通过输入对应的命令进入到编辑模式或者命令模式 

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

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

相关文章

微信小程序开发:实现毛玻璃效果

前言 在微信小程序开发的时候,也会遇到一些和在前端开发一样的样式需求,二者的相通类似性非常的高,就拿样式相关的需求来说,可以说是一模一样的操作。那么本文就来分享一个关于实现高斯模糊效果的需求,微信小程序和前端…

【Linux网络服务】FTP服务

FTP服务 一、FTP服务1.1FTP服务概述1.2FTP服务的特点1.3FTP服务工作过程 二、设置FTP服务2.1实验一:设置匿名用户访问FTP服务(最大权限)2.2实验二:设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认…

Linux- 进程的切换和系统的一般执行过程

我想在介绍进程切换之前,先引入中断的相关知识,它是我们理解进程切换的重要前提,也是Linux操作系统的核心机制。 中断的类型 • 硬件中断(Interrupt),也称为外部中断,就是CPU的两根引脚&…

微服务学习-SpringCloud -Nacos (集群及CP架构相关学习)

文章目录 Nacos集群下心跳机制相对于单机会有怎样的改变?CAP原则和BASE原则常见的注册中心实现对比Nacos集群实现协议Nacos CP架构实现源码Nacos CP架构leader是如何选举的呢? Nacos集群下心跳机制相对于单机会有怎样的改变? 在上一遍单机模…

百万赞同:网络安全为什么缺人? 缺什么样的人?

1.网络安全为什么缺人? 缺人的原因是有了新的需求 以前的时候,所有企业是以产品为核心的,管你有啥漏洞,管你用户信息泄露不泄露,我只要做出来的产品火爆就行。 这一切随着《网络安全法》、《数据安全法》、《网络安全审查办法》…

No.041<软考>《(高项)备考大全》【第25章】量化项目管理

第25章】量化项目管理 1 考试相关2 量化项目管理3 准备量化管理项目4 量化的管理项目5 练习题参考答案: 1 考试相关 选择可能考0-1分,案例论文不考。 2 量化项目管理 量化项目管理(QPM)的目的在于量化地管理项目,以达成项目已建…

Auto-GPT 5分钟详细部署指南

安装 conda 1. 下载安装 miniconda3 : Miniconda — conda documentation conda是一个包和环境管理工具,它不仅能管理包,还能隔离和管理不同python版本的环境。类似管理nodejs环境的nvm工具。 2. conda环境变量: 新建 CONDA_H…

混合网络监控工具

多年来,网络不可避免地变得更加复杂。混合网络架构包括跨多个供应商的 LAN、WAN、公共或私有云存储以及混合云。简而言之,它是虚拟和物理网络组件的混合体,自远程工作出现以来,这种类型的网络架构已经起飞。 什么是混合网络 混合…

【《C和指针》笔记】第一章<快速上手>

注释以/*开始到*/结束或者使用// .预处理指令:因为它们是由预处理器解释的,预处理器读入代码,根据预处理指令对其进行修改,然后把修改过的源代码递交给编译器。预处理指令(#include、#define)所定义的变量…

【论文阅读笔记|CASE 2022】EventGraph: Event Extraction as Semantic Graph Parsing

论文题目:EventGraph: Event Extraction as Semantic Graph Parsing 论文来源:CASE2022 论文链接:https://aclanthology.org/2022.case-1.2.pdf 代码链接:GitHub - huiling-y/EventGraph 0 摘要 事件抽取涉及到事件类型检测、…

【Scala】集合

目录 类型 不可变集合 可变集合 数组 不可变 可变数组 不可变数组与可变数组的转换 多维数组 List list运算符 可变 ListBuffer Set 集合 不可变 Set 可变 mutable.Set Map 集合 可变 Map 元组 操作 通用操作 衍生集合操作 计算函数 排序 sorted sortB…

java springboot VUE 健康食谱管理系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE 健康食谱管理系统是一套完善的完整信息管理类型系统,结合springboot框架和VUE完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开 发),系统具有完整的源代码…

PHP快速入门08-JSON与XML处理

文章目录 前言一、使用介绍1.1 JSON处理1.2 XML处理 二、常见用法20例2.1 将数组转换为JSON格式:2.2 将JSON字符串转换回PHP数组:2.3 读取XML文件:2.4 将XML字符串转换成PHP对象:2.5 从URL获取JSON数据:2.6 写入JSON文…

SpringBoot集成Disruptor

Disruptor介绍 1.Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于 Disruptor 开发的系统单线程能支撑每秒 600 万订单,2010 年…

为什么APP也需要SSL证书?

通常我们会想到对网站使用SSL证书,来加密数据传输过程,确保信息不被篡改、泄露。对APP这类应用程序则选择软件签名证书,来进行数字签名和防止代码被恶意篡改。然而APP很容易获取到个人敏感信息,为了防止这些信息在传输过程中被有心…

JUC并发编程之读写锁

1 ReentrantReadWriteLock 当读操作远远高于写操作,这时候使用 读写锁 让 读-读 可以并发,提高性能,类似于数据库中的 select … from … lock in share mode 测试阻塞 提供一个 数据容器类 内部分别使用读锁保护数据的 read() 方法&#…

NAT-HCIA阶段综合实验

拓扑结构: 要求 1、ISP路由器只能配置IP地址,之后不得进行其他配置 2、内部整个网络基于192.168.1.0/24进行地址规划 3、R1、R2之间启动OSPF协议,单区域 4、PC1~PC4自动获取IP地址 5、PC1不能telnetR1,PC1外的其他内网PC可以t…

设计模式-行为型模式之状态模式

4. 状态模式 4.1. 模式动机 在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事…

GPT大模型之后,谷歌、微软、百度们AI争霸的下一战

又来了一个大模型! 4 月 14 日,雷军宣布推出小米的大规模语言模型;4 月 11 日,在阿里云峰会上,阿里云智能首席技术官周靖人正式宣布推出大规模语言模型——通义千问,并宣布要在钉钉、天猫精灵等阿里所有产品…

Ghidra使用之Options页面功能介绍

Apply Processor Defined Lables 在Ghidra中,apply processor defined labels功能可以为汇编代码中的地址和数据自动添加注释,这可以大大提高反汇编代码的可读性。 使用步骤如下: 打开您要反汇编的文件,进入Code Browser窗口。点击Edit菜单,选择Apply Processor Defined Labels…