当前位置: 首页 > news >正文

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

`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`键确保回到命令模式。

相关文章:

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

vi是 Unix 和 Linux 系统中常用的文本编辑器&#xff0c;它有几种不同的模式&#xff0c;其中最常用的是命令模式和插入模式。光标控制主要在命令模式下进行&#xff0c;以下是一些常用的vi命令来控制光标位置&#xff1a; • h,j,k,l&#xff1a;分别用于将光标向左、向下、向…...

SwanLab x verl:可视化LLM强化学习后训练教程

文章目录 介绍Verl和SwanLab1. 环境安装2. 使用方法3. 查看训练日志 介绍Verl和SwanLab verl 是一个灵活、高效且可用于生产环境的强化学习&#xff08;RL&#xff09;训练框架&#xff0c;专为大型语言模型&#xff08;LLMs&#xff09;的后训练设计。它由字节跳动火山引擎团…...

职场到校园,初心未改:我的2024年

Hi&#xff0c;大家好&#xff0c;我是几何心凉。 其实早就想写一份复盘文章&#xff0c;正好借助2024年度博客之星的评选机会&#xff0c;来写下这篇总结。回望过去&#xff0c;感慨颇多。自从加入CSDN平台以来&#xff0c;已经见证了许多博主的来去匆匆&#xff0c;各类创作…...

C++基础知识学习记录—引用

1、引用的概念 概念&#xff1a;引用相当于给变量取个别名 对引用进行操作与直接操作变量相同&#xff0c;注意引用类型与变量类型一致 #include<iostream> using namespace std; int main(){int a10;int& cite_a a;//操作引用cite_a 与操作变量a完全一样cout &l…...

AWS Savings Plans 监控与分析工具使用指南

一、背景介绍 1.1 什么是 Savings Plans? AWS Savings Plans 是一种灵活的定价模式,通过承诺持续使用一定金额的 AWS 服务来获得折扣价格。它可以帮助用户降低 AWS 使用成本,适用于 EC2、Fargate 和 Lambda 等服务。 1.2 为什么需要监控? 优化成本支出跟踪使用情况评估投…...

【AI学习】关于 DeepSeek-R1的几个流程图

遇见关于DeepSeek-R1的几个流程图&#xff0c;清晰易懂形象直观&#xff0c;记录于此。 流程图一 来自文章《Understanding Reasoning LLMs》&#xff0c; 文章链接&#xff1a;https://magazine.sebastianraschka.com/p/understanding-reasoning-llms?continueFlagaf07b1a0…...

C++ ——从C到C++

1、C的学习方法 &#xff08;1&#xff09;C知识点概念内容比较多&#xff0c;需要反复复习 &#xff08;2&#xff09;偏理论&#xff0c;有的内容不理解&#xff0c;可以先背下来&#xff0c;后续可能会理解更深 &#xff08;3&#xff09;学好编程要多练习&#xff0c;简…...

【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案

建筑设计公司在项目执行过程中&#xff0c;会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。 操作需求&#xff1a;为了方便内部管理和向客户交付完整的设计方案&#xff0c;公司需要将每个项目文件…...

前端学习之Flex布局

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Flex布局示例</title><style>.conta…...

游戏引擎学习第97天

回顾昨天并计划今天 在这期节目中&#xff0c;主要讲解了光照的概念&#xff0c;并进一步讨论了法线贴图光照的实现。节目的内容大致分为几个部分&#xff1a; 光照的基础概述&#xff1a;讨论了光的工作原理以及如何在编程图形时需要考虑光照问题。尽管这些概念并没有深入到…...

Mysql中存储引擎各种介绍以及应用场景、优缺点

概述 MySQL 提供了多种存储引擎&#xff0c;每种引擎有不同的特点和适用场景。以下是几种常见的 MySQL 存储引擎的详细介绍&#xff0c;包括它们的底层工作原理、优缺点&#xff0c;以及为什么 MySQL 默认选择某种引擎。 1. InnoDB 底层工作原理&#xff1a; 事务支持&#…...

PHP 运算符

PHP 运算符 概述 PHP 是一种广泛使用的开源服务器端脚本语言,它具有丰富的运算符集,这些运算符是编写 PHP 程序的基础。运算符用于执行各种数学、逻辑和比较操作。本篇文章将详细介绍 PHP 中常用的运算符,包括算术运算符、比较运算符、逻辑运算符、赋值运算符等。 算术运…...

Vue全流程--Vue3.0与Vue2.0响应式原理对比

Vue2中数据的响应式 需要使用Vue.set这么一个api&#xff0c;修改数据 需要使用Vue.delete这么一个api&#xff0c;删除数据 数据代理这个当面的理解可以看看我前面文章Vue全流程--数据代理的理解以及在Vue中的应用-CSDN博客 Vue3中数据的响应式 Vue3使用proxy这个api实现…...

C语言学习笔记:子函数的调用实现各个位的累加和

在C语言程序学习之初&#xff0c;我们都会学习如何打印 hello world&#xff0c;在学习时我们知道了int main&#xff08;&#xff09;是主函数&#xff0c;程序从main函数开始执行&#xff0c;这是流程控制的一部分内容。在主函数中我们想要实现一些功能&#xff0c;比如求各个…...

【大模型】本地部署DeepSeek-R1:8b大模型及搭建Open-WebUI交互页面

本地部署DeepSeek-R1:8b大模型 一、摘要及版本选择说明1.1 摘要1.2 版本选择 二、下载并安装Ollama三、运行DeepSeek-R1:8b大模型四、安装Open WebUI增强交互体验五、关闭Ollama开机自动启动六、DeepSeek大模型启停步骤 一、摘要及版本选择说明 1.1 摘要 作为一名对 AI 和生成…...

Python 调用 Stabilityai API在本地生成图像

Python 调用 Stabilityai API在本地生成图像 摘要功能 代码结构关键技术代码下载立即体验 摘要 本程序利用硅基流动目前的免费 stabilityai/stable-diffusion-2-1 模型API&#xff0c;生成图像并下载到本地&#xff0c;用户可以通过输入描述性提示词来获取相应的图像。使用Pyt…...

Python3中异常处理:try-finally语句的示例

一. 简介 前面一篇文章简单学习了 try-finally语句结构&#xff0c;执行过程、以及使用场景。文章如下&#xff1a; Python3中异常处理&#xff1a;try-finally语句-CSDN博客 本文写一些简单的示例来继续学习 try-finally语句的使用。 二. Python3中异常处理&#xff1a;try…...

Lua限流器的3种写法

学而不思则罔&#xff0c;思而不学则殆 引言 上篇文章讲解了Lua脚本&#xff0c;事务和Pipline之间的使用方式和性能差距&#xff0c;本篇文章将聚焦Lua脚本&#xff0c;我将用三种写法来展现如何实现一个Redis限流器 固定窗口限流 固定窗口限流也是最简单的限流算法&#x…...

基于 GEE 利用插值方法填补缺失影像

目录 1 完整代码 2 运行结果 利用GEE合成NDVI时&#xff0c;如果研究区较大&#xff0c;一个月的影像覆盖不了整个研究区&#xff0c;就会有缺失的地方&#xff0c;还有就是去云之后&#xff0c;有云量的地区变成空值。 所以今天来用一种插值的方法来填补缺失的影像&#xf…...

linux部署ollama+deepseek+dify

Ollama 下载源码 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz sudo tar -C /usr -xzf ollama-linux-amd64.tgz启动 export OLLAMA_HOST0.0.0.0:11434 ollama serve访问ip:11434看到即成功 Ollama is running 手动安装deepseek…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...