Linux 2-Vim使用

1 什么是vi及vim?

vi是文本编辑器;vim是程序开发工具。

2 vi的几种模式

1 一般模式:vi <fileName> 就进入命令模式,可以删除或者复制粘贴

2 编辑模式:修改内容

3 命令行模式:最下面一行,保存、替换、退出等。

3 vi3种模式间切换

1 一般模式->编辑模式

1 插入

Aa或Ii或Aa

2 替换:

Rr

2 编辑模式->一般模式:ESC

3 一般模式->命令行模式:支持3种,可以将光标移到最下面一行。

:

/

?

4 命令行模式->一般模式:ESC

5 注意:编辑模式和命令行模式不能互相切换。

4 一般模式常用快捷键 (光标移动、复制粘贴、查找替换)

1 光标移动

1  单个光标移动

需求快捷键
向左移动一个字符向左箭头或h
向下移动一个字符

向下箭头或j

向下30行:30j或者30向下箭头

向上移动一个字符向上箭头或k
向右移动一个字符

向右箭头或l

向右20个:20l或者20向右箭头或者20<space>

2 整个屏幕移动

需求快捷键
向下移动一个屏幕Ctrl+f或PgDn
向上移动一个屏幕

Ctrl+b或PgUp

向下移动半个屏幕Ctrl+d
向上移动半个屏幕

Ctrl+u

3 常见的本行最左最右移动

需求快捷键
移动到本行最最左边数字0
移动到本行最左边非空字符Ctrl+6
移动到本行最右边$
移动到本行下一个单词的开头

w

移动到第8个单词的开头8w

移动到本行下一个单词的结尾e
移动到本行上一个单词的开头b
我的需求:移动到第5行,把domain里的301a改成301b

1 5G:跳转到第5行

2 $:跳转到第5行的最后

3 4b:往左走4个单词的头

4 常见的上下移动

移动到当前屏幕的第一行的第一个字符

H

移动到当前屏幕的中间行的第一个字符M
移动到当前屏幕的最后一行的第一个字符L
移动到文件的最后一行G
移动到文件的第一行gg
移动到文件的第20行20G
基于当前位置,向下移动10行10<enter>

2 查找及替换

需求快捷键
向下找某个字符,比如throughput/throughput
重复查找这个字符,还是继续向下查找n
重复查找这个字符,朝上找N
向上找某个字符,比如domain?domain
重复查找这个字符,还是继续向上查找n

重复查找这个字符,但是相反方向,比如之间?是想上找,现在N就是相反的,朝下找

N
从100到200行间,找到test,替换为TEST

:n1,n2s/word1/word2/g

:100,200s/test/TEST/g

从第一行对最后一行,找到test,替换为TEST:1,$s/word1/word2/g
从第一行对最后一行,找到test,替换为TEST且替换前需要确认:1,$s/word1/word2/gc

3 删除与复制粘贴

需求        快捷键
向前删除一个字符Backspace或者X
向后删除一个字符

Delete或者x

向后删除10个字符:10x

剪切光标所在的整行

dd

剪切光标所在的向下10行:10dd

剪切光标所在行到第一行d1G
剪切光标所在行到最后一行

dG

剪切本行:[光标处,本行最后一个字符]d$
剪切本行:[本行第一个字符,光标处]d0
复制光标所在行        

yy

向下复制10行:10yy

复制光标所在行到第一行y1G
复制光标所在行到最后一行

yG

复制本行:[光标处,本行最后一个字符]y$
复制本行:[本行第一个字符,光标处]y0
将复制内容粘贴在光标下一行p
将复制内容粘贴在光标上一行P
恢复前一个操作u
重复前一个操作.

4 操作一行中的一部分数据

需求快捷键

user="xiaomingxiaohua@email"

想把“”中的内容快速删掉

delete inside: di

删除符号内的信息

光标在""或者内部,按di"

就可以把双引号中间的内容清理掉

test={aaaaaa}按di{  或者di}
test='11111111'         按di'

<domain>localhost.domain.list</domain>

想把中间这段快速删掉

光标在local中的l上,按

dt<

就会删掉从当前字符开始,<之前的所有字符

5 一般模式切换到编辑模式

需求      快捷键
插入:到当前字段的前面i
插入:从所在行的第一个非空字符插入I
插入:到当前字段的后面a
插入从光标行的最后一个字符插入A
插入:在光标行的下一行插入一个新行o
插入:在光标行的上一行插入一个新行O
替换:替换光标所在的字符一次

r

先输入r,马上输入要替换的另一个字符

替换:一直替换光标处的字符,直到按下ESC

按下R 代表开始替换

然后输入要替换的信息,比如把18000替换成32000

最后按ESC退出替换模式

ESC退出编辑模式,回到一般模式

6 一般模式切换到命令行模式 : /  ?

需求操作
将编辑的数据写入硬盘:w
退出vi:q
强制退出不保存:q!
保存后退出:wq
强制保存后退出:wq!
把修改的东西另存为新文件:w 新文件名
把当前文件的n1-n2行,保存到新文件:n1,n2 w 新文件名
显示行号:set nu
不显示行号:set nonu

7 其他常用

1 vi XX 不小心窗口关闭,下次每次vi这个文件都会提醒要不要保留?

答:

ls -al

rm -f XX.swap

把这个文件删除,下次再vi进来就不会报错了。


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

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

相关文章

NetSuite Amount正负符号在Saved Search和DataSet中的不同含义

近期在一个项目中碰到Amount取值的Bug&#xff0c;原因是我们的代码中数据源从Saved Search转为了DataSet&#xff0c;由于这个转换导致了Amount的正负值混乱。今天记录一下。 正负号原则 • Saved Search&#xff0c; Amount的正负需要考虑科目类型。 Amount字段根据科目类型…

昇思25天学习打卡营第10天 | 基于MindNLP+MusicGen生成自己的个性化音乐

基于MindNLPMusicGen生成自己的个性化音乐 MusicGen是来自Meta AI的Jade Copet等人提出的基于单个语言模型&#xff08;LM&#xff09;的音乐生成模型&#xff0c;能够根据文本描述或音频提示生成高质量的音乐样本&#xff0c;相关研究成果参考论文《Simple and Controllable …

远程过程调用PRC

简介 远程过程调用&#xff08;Remote Procedure Call, RPC)&#xff0c;是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间的子程序&#xff0c;且不需要考虑交互作用的细节。 RPC是一种服务器&#xff0c;客户端模式&#xff0c;是一个通过发送请…

【效率提升】新一代效率工具平台utools

下载地址&#xff1a;utools uTools这款软件&#xff0c;是一款功能强大且高度可定制的效率神器&#xff0c;使用快捷键alt space(空格) 随时调用&#xff0c;支持调用系统应用、用户安装应用和市场插件等。 utools可以调用系统设置和内置应用&#xff0c;这样可以方便快捷的…

KV260视觉AI套件--PYNQ-DPU

目录 1. 简介 2. DPU 原理介绍 2.1 基本原理 2.2 增强型用法 3. DPU 开发流程 3.1 添加 DPU IP 3.2 在 BD 中调用 3.3 配置 DPU 参数 3.4 DPU 与 Zynq MPSoC互联 3.5 分配地址 3.6 生成 Bitstream 3.7 生成 BOOT.BIN 4. 总结 1. 简介 在《Vitis AI 环境搭建 &…

MyBatis(16)如何在 MyBatis 中调用存储过程和函数

在MyBatis中调用存储过程和函数是一个相对高级的特性&#xff0c;它允许开发者在数据库层面封装复杂的业务逻辑&#xff0c;并通过MyBatis直接调用这些逻辑。这样做的好处是可以减少应用层的负担&#xff0c;同时利用数据库的性能优势。以下是如何在MyBatis中调用存储过程和函数…

深入理解TCP协议格式(WireShark分析)

传输控制协议&#xff08;TCP&#xff09;是互联网中最为关键的通信协议之一。了解TCP协议的细节不仅对于网络工程师至关重要&#xff0c;对于任何涉及网络通信的软件开发人员而言都是必备的知识。本文旨在深入探讨TCP协议&#xff0c;从协议的基本概述到其工作机制&#xff0c…

【sqlite3】联系人管理系统

SQLite3实现简单的联系人管理系统 有关sqlite3的基础知识请点击&#xff1a;SQLite3的使用 效果展示&#xff1a; 创建一个名为contacts.db的数据库 首先&#xff0c;我们需要创建一个名为contacts.db的数据库&#xff0c;并建立一个名为"contact"的表&#xff0…

一篇文章理解堆栈溢出

一篇文章理解堆栈溢出 引言栈溢出ret2text答案 ret2shellcode答案 ret2syscall答案 栈迁移答案 堆溢出 unlink - UAF堆结构小提示 向前合并/向后合并堆溢出题答案 引言 让新手快速理解堆栈溢出&#xff0c;尽可能写的简单一些。 栈溢出 代码执行到进入函数之前都会记录返回地…

如何选择向量数据库Milvus Cloud合适的 Embedding 模型?

检索增强生成(RAG)是生成式 AI (GenAI)中的一类应用,支持使用自己的数据来增强 LLM 模型(如 ChatGPT)的知识。 RAG 通常会用到三种不的AI模型,即 Embedding 模型、Rerankear模型以及大语言模型。本文将介绍如何根据您的数据类型以及语言或特定领域(如法律)选择合适的…

【408考点之数据结构】排序的基本概念

排序的基本概念 排序是计算机科学中的一个基本操作&#xff0c;目的是将一组无序的数据元素按照特定的顺序排列起来。排序在数据管理、检索和分析中有着广泛的应用&#xff0c;能够提高数据处理的效率和准确性。 1. 排序的定义 排序&#xff08;Sorting&#xff09;是指将一…

Android 10.0 关于定制自适应AdaptiveIconDrawable类型的动态日历图标的功能实现系列一

1.前言 在10.0的系统rom定制化开发中,在关于定制动态时钟图标中,原系统是不支持动态日历图标的功能,所以就需要从新 定制动态时钟图标关于自适应AdaptiveIconDrawable类型的样式,就是可以支持当改变系统图标样式变化时,动态日历 图标的背景图形也跟着改变,所以接下来就来…

BGE M3-Embedding 模型介绍

BGE M3-Embedding来自BAAI和中国科学技术大学&#xff0c;是BAAI开源的模型。相关论文在https://arxiv.org/abs/2402.03216&#xff0c;论文提出了一种新的embedding模型&#xff0c;称为M3-Embedding&#xff0c;它在多语言性&#xff08;Multi-Linguality&#xff09;、多功能…

19 解决问题的策略

众所周知&#xff0c;每个学期都会有一个单元“解决问题的策略”。而在此文章&#xff0c;我们会把小学阶段所有策略都进行一一讲解。 每个年级的两个学期中的策略&#xff0c;其实有异曲同工之处。 三年级&#xff1a;从条件和问题出发解决问题四年级&#xff1a;用图表整理…

随想录 Day 74 Bellman_ford

随想录 Day 74 Bellman_ford Bellman_ford 队列优化 94. 城市间货物运输 I 时间限制&#xff1a;1.000S 空间限制&#xff1a;256MB 题目描述 某国为促进城市间经济交流&#xff0c;决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市&#xff0c;通过道路网络连接&…

X射线底片焊缝缺陷检测

实现四种焊缝缺陷的检测和分割处理。

Python:谈谈常规滤波器(带通、低通、高通、带阻)的用法

一、滤波器的作用 滤波器在信号处理中用于移除或减少信号中的噪声&#xff0c;同时保持信号的某些特性。滤波器通常用于音频、视频和图像处理等领域。滤波器根据其 designed for different purposes and can be divided into several types, such as lowpass filters, highpass…

Pikachu 不安全的文件下载(Unsafe file download)概述 附漏洞利用案例

目录 获取下载链接 修改链接 重新构造链接 拓展 不安全的文件下载概述 文件下载功能在很多web系统上都会出现&#xff0c;一般我们当点击下载链接&#xff0c;便会向后台发送一个下载请求&#xff0c;一般这个请求会包含一个需要下载的文件名称&#xff0c;后台在收到请求…

02.Ambari自定义服务开发-metainfo.xml介绍

文章目录 metainfo.xml 介绍配置说明Hbase metainfo.xml配置说明配置参数详细介绍配置文件样例DORIS metainfo.xml 介绍 ​ 在Ambari自定义开发中&#xff0c;metainfo.xml 配置文件起着至关重要的作用。它用于定义服务的元数据信息&#xff0c;包括服务的版本、组件、执行脚本…

Todesk远程Ubuntu桌面系统100%但是进不去桌面

1、报错情况 如下图所示&#xff0c;用Todesk远程Ubuntu桌面&#xff0c;看到连接100%了&#xff0c;但是进不去桌面 ubuntu系统看起来的话&#xff0c;已经像被远程成功了 我就首先把todesk卸载重新安装了&#xff0c;后面发现还是这样&#xff0c;于是我就找客服去问了&…