vi 是 Unix 和 Linux 系统中常用的文本编辑器

embedded/2025/2/13 1:37:39/

`vi`是 Unix 和 Linux 系统中常用的文本编辑器,它有几种不同的模式,其中最常用的是命令模式和插入模式。光标控制主要在命令模式下进行,以下是一些常用的`vi`命令来控制光标位置:


• h,j,k,l:分别用于将光标向左、向下、向上、向右移动一个字符。


• Ctrl+f:向下滚动屏幕,但不移动光标位置。


• Ctrl+b:向上滚动屏幕,但不移动光标位置。


• G:将光标移动到文件的开头。


• gg(两个g):将光标移动到文件的第一行。


• :将光标移动到当前行的末尾。


• 0(数字零):将光标移动到当前行的开头。


• ::跳转到指定行号,比如输入`:10`会将光标移动到第10行。


• H:将光标移动到屏幕顶部(第一行)。


• M:将光标移动到屏幕中间。


• L:将光标移动到屏幕底部(最后一行)。


• w:将光标向前移动一个单词。


• b:将光标向后移动一个单词。


• e:将光标向前移动到下一个单词的末尾。


• ge:将光标向后移动到上一个单词的末尾。


• W:将光标向前移动一个空格分隔的“单词”(比`w`更宽泛的定义)。


• B:将光标向后移动一个空格分隔的“单词”。


• E:将光标向前移动到下一个“单词”的末尾。


• g0(`g`后跟数字0):将光标移动到当前行的第一个非空白字符。


• g:将光标移动到当前行的最后一个非空白字符。


• %:将光标移动到匹配的括号、方括号或花括号。


• Ctrl+o:返回到之前查看的位置,`Ctrl + i`回到跳转后的位置。


• 或#:在当前单词的下一个/上一个出现处移动光标。


• f:向前查找下一个指定字符,并将光标放在该字符上。


• F:向后查找上一个指定字符,并将光标放在该字符上。


• t:向前查找下一个指定字符,并将光标放在该字符前。


• T:向后查找上一个指定字符,并将光标放在该字符后。

这些命令可以帮助你在`vi`编辑器中有效地定位和控制光标。记住,这些命令都是在命令模式下使用的,如果你处于插入模式,需要按`Esc`键先切换回命令模式。

在`vi`或`vim`编辑器中,删除文本是一项基本操作,可以在命令模式下通过多种方式完成。以下是一些常用的删除命令:


• x:删除光标所在位置的字符。


• X(大写):删除光标前一个字符。


• dd:删除(剪切)当前行。


• D:删除从光标位置到行尾的所有内容。


• d0或d^:删除从光标位置到行首的所有内容。


• d:删除从光标位置到行尾的所有内容。


• dw:删除光标所在位置的一个单词。


• daw:删除光标所在位置的整个单词,包括前后空格。


• d:结合其他移动命令使用,删除从当前位置到由`<motion>`指定的位置之间的文本。例如,`d$`删除到行尾,`d0`删除到行首。


• J:合并光标所在行与下一行。


• yy:复制当前行,与`dd`类似,但`yy`是复制而不是剪切。


• Y(大写):复制从光标所在位置到行尾的所有内容。


• :d:删除从当前行到指定行号(`<number>`)的内容。


• :%d或:1,d:删除整个文件内容。


• u:撤销最后一次删除操作。


• Ctrl+r:重做最后一次撤销的操作。


• d后跟其他命令,如`dG`删除到文件末尾,`dgg`删除到文件开头。


• gD:删除光标所在位置到未匹配的右括号`)`或`}`的内容。


• d%:删除光标所在位置到匹配的括号`()`、`[]`或`{}`之间的内容。


• d`[`:删除光标所在位置到下一个标记`[]`之间的内容。

请注意,`vi`和`vim`中的删除操作会将文本放入剪切板,可以通过`p`(粘贴)命令将文本粘贴到其他地方。如果需要删除不相邻的文本,可以使用可视模式(按`v`进入)选择文本,然后执行删除命令。

在使用这些命令时,请确保在命令模式下操作。如果不确定当前处于哪个模式,可以按`Esc`键确保回到命令模式。

在`vi`或`vim`编辑器中,如果你想要替换文本,可以使用多种命令来完成这项操作。以下是一些常用的替换命令:


1.替换单个字符

• `r`:替换光标所在位置的单个字符。例如,将光标放在要替换的字符上,然后按`r`键,接着输入新的字符。


2.替换单词或行

• `R`(大写):进入替换模式,可以连续替换光标所在位置开始的字符,直到按`Esc`键停止。

• `S`:替换当前行,进入插入模式,并从光标所在位置开始替换。


3.替换文本块

• `cw`:替换光标所在位置的单词。

• `c$`:替换从光标位置到行尾的内容。

• `c0`或`c^`:替换从光标位置到行首的内容。

• `cc`或`S`:替换整行。


4.全局替换

• `:%s/old/new/g`:在整个文件中将所有的`old`替换为`new`。

• `:%s/old/new/gc`:在整个文件中将所有的`old`替换为`new`,并在每次替换前询问确认。

• `:n,ms/old/new/g`:在第`n`行到第`m`行之间将所有的`old`替换为`new`。


5.可视模式下的替换

• 按`v`进入可视模式,选择要替换的文本,然后按`:`进入命令模式,输入`s`进行替换。


6.替换并复制到剪贴板

• `"*y`:复制选中的文本到系统剪贴板。

• `"*p`:粘贴系统剪贴板的内容。


7.使用外部工具进行替换

• `:%!`:对整个文件执行外部命令。例如,`:%!sort`会对整个文件内容进行排序。


示例操作
假设你正在编辑一个名为`example.txt`的文件,并且想要替换文件中的所有"foo"为"bar":


• 打开文件:

```bash
   vi example.txt
   ```


• 进入命令模式(如果已经在命令模式则不需要)。

• 输入以下命令进行替换:

```vim
   :%s/foo/bar/g
   ```

这将在整个文件中将所有的"foo"替换为"bar"。


• 保存文件并退出:

```vim
   :wq
   ```


这些命令可以帮助你在`vi`或`vim`编辑器中有效地替换文本。记住,替换操作可能会改变文件的内容,因此在执行全局替换等操作时要小心,并确保在执行前备份文件。

在`vi`或`vim`编辑器中,如果你想要终止当前正在执行的命令或操作,可以使用以下几种方法:


• Esc 键:

• 按下`Esc`键通常可以退出正在执行的大多数命令,特别是当你在插入模式下编辑文本时。它将你带回到命令模式。


• Ctrl+C:

• 在命令模式下,`Ctrl + C`可以中断当前的命令或操作。这在`vi`尝试执行一个需要用户交互的命令(如搜索或替换)时特别有用。


• :q!:

• 如果你想要退出`vi`而不保存更改,可以在命令模式下输入`:q!`然后按回车键。这将强制退出编辑器并丢弃所有未保存的更改。


• ZZ:

• 在命令模式下,输入`ZZ`(大写字母 Z 后面跟着另一个大写字母 Z)然后按回车键,可以保存更改并退出`vi`。这是一个快速保存并退出的快捷方式。


• :qa!:

• 如果你打开了多个文件并且想要退出所有文件,可以在命令模式下输入`:qa!`然后按回车键。这将关闭所有文件并退出`vi`,不保存任何更改。


• Ctrl+Z:

• 在某些系统中,`Ctrl + Z`可以将`vi`进程挂起,将其放到后台。你可以使用`fg`命令将挂起的进程恢复到前台。


• :cq:

• 在命令模式下,输入`:cq`然后按回车键,可以放弃所有更改并退出`vi`。这与`:q!`类似,但`:cq`通常用于放弃全局命令(如全局搜索和替换)。


• :qa:

• 如果你打开了多个文件并且想要保存所有更改并退出,可以在命令模式下输入`:qa`然后按回车键。

请记住,在使用这些命令时,确保你处于命令模式。如果你不确定当前处于哪个模式,可以按`Esc`键确保回到命令模式。


http://www.ppmy.cn/embedded/161743.html

相关文章

Word成功接入DeepSeek详细步骤

原理 原理是利用Word的VBA宏&#xff0c;写代码接入API。无需下载额外插件。 步骤一、注册硅基流动 硅基流动统一登录 注册这个是为了有一个api调用的api_key&#xff0c;有一些免费的额度可以使用。大概就是这个公司提供token&#xff0c;我们使用这个公司的模型调用deepsee…

C# 两种方案实现调用 DeepSeek API

目录 序 开发运行环境 访问API的一个通用方法 原生官网实现 申请 API key 调用实现 调用示例 腾讯云知识引擎原子调用 申请 API key 调用示例 小结 序 DeepSeek&#xff08;深度求索&#xff09; 最近可谓火爆的一塌糊涂&#xff0c;具体的介绍这里不再赘述&#x…

【C#】C#中的线程安全:使用lock关键字确保共享资源的安全访问

文章目录 前言一、为什么需要线程安全&#xff1f;二、示例代码三、代码解析1、同步对象的定义2、使用lock关键字3、双重检查锁定 四、总结 前言 在多线程编程中&#xff0c;确保对共享资源的安全访问是至关重要的。本文将讨论如何使用 lock 关键字和同步对象来实现线程安全&a…

CS架构软件网络安全 csf网络安全框架

美国依赖于其关键基础设施的可靠运行。 网络安全威胁利用了关键基础设施系统日益增加的复杂性和连通性&#xff0c;将国家的安全、经济以及公共安全和健康置于危险之中。 类似于金融和声誉风险&#xff0c;网络安全风险会影响公司的底线。 它会推高成本并影响收入&#xff0c;它…

Json-RPC项目框架(二)

目录 1. 项目实现; 1. 项目实现: 1.1 通信抽象实现: (1) BaseMessage: 主要实现对消息处理; 主要包含设置和获取ID, 设置类型和获取类型, 消息检查, 以及序列化和反序列化操作. class BaseMessage{public://大家需要的功能先实现;using ptr std::shared_ptr<BaseMessage…

linux基于 openEuler 构建 LVS-DR 群集--一、用命令行完成 二、使用脚本完成

目录 一、用命令行完成 1、在nginx上&#xff08;两台都是一样的配置&#xff09; 2、 在LVS上 1.&#xff09;绑定VIP &#xff08;与nginx上一致&#xff09; 2&#xff09;安装ipvsadm 3&#xff09;配置LVS-DR 3、在CLINT上 1&#xff09;验证 (验证成功如下) ​…

华为小艺助手接入DeepSeek,升级鸿蒙HarmonyOS NEXT即可体验

小艺助手接入DeepSeek的背景与意义 随着人工智能技术的不断发展&#xff0c;大模型成为推动智能交互升级的关键力量。DeepSeek在自然语言处理等领域具有出色的表现&#xff0c;其模型在语言理解、生成等方面展现出强大的能力。华为小艺助手接入DeepSeek&#xff0c;旨在借助其先…

LeetCode数学相关算法题(1)【C语言版】

2520. 统计能整除数字的位数 给你一个整数 num &#xff0c;返回 num 中能整除 num 的数位的数目。 如果满足 nums % val 0 &#xff0c;则认为整数 val 可以整除 nums 。 示例 1&#xff1a; 输入&#xff1a;num 7 输出&#xff1a;1 解释&#xff1a;7 被自己整除&…