vi/vim使用命令

你是否在编辑文件时以为键盘坏了,为什么不能删除呢,为什么不能敲代码呢,等你初识vi,会觉得这个东西为什么设计得这么难用,这篇教程带你熟练得用上这款经典的工具
Vi 是在 Unix 系统上广泛使用的编辑器,Vim 是 Vi 的改进版本,由 Bram Moolenaar 在 1991 年发布,Vim兼容vi命令,现在很多系统将vi符号链接到Vim,所以使用vi命令其实还是用的Vim

安装Vim

#centos
sudo yum update
sudo yum install vim

#debian/ubuntu
sudo apt update
sudo apt install vim

直接输入vi a.txt可以打开文件,文件不存在则创建新文件,按下i进入插入模式,输入4*4的a矩阵,按下esc即可退出到命令模式

修改vim配置文件

#查看vim信息
vi --version

image.png

#编辑vim配置
vi $HOME/.vimrc

#语法高亮
syntax on
#tab占4个空格
set ts=4
#将tab转换为空格
set expandtab
#显示行号
set number
#实时计算其他行与当前行的距离
set relativenumber

image.png

命令模式(Command Mode)

当我们进入文件时处于命令模式,新建一个文件复制一篇英语作文,按下i,windterm再按Shist+Insert粘贴,练习一下就会了

命令模式才能移动光标,也就是刚进入文件的模式或者插入模式按下esc

vi/vim区分大小写,它设计的目的是让你用键盘解决问题,不需要用到鼠标

命令移动光标
K
J
H
L
2k向上移动2行(未配置set relativenum)
4j向下移动4行(未配置set relativenum)
4Enter向下移动4行
2k移动到对应往上2行的行号,不用自己算多少行,实时显示其他行到当前行的距离(配置set relativenum)
4j移动到对应往下4行行号,不用自己算多少行,实时显示其他行到当前行的距离(配置set relativenum)
n2空格number,跳到当前光标后指定2的位置,按下n,再输入数字,再按空格,,例如跳到当前光标后6位:n 6 空格
0Home数字0,移动到行首
$End移动到行尾
w向后跳到每个单词开头,括号也算一个单词
eend,向后跳到每个单词末尾,括号也算一个单词
bback,回到上一个位置,括号也算一个单词
-移动到非空格上一行
+移动到非空格下一行
gg移动到最顶部
GShift+g将光标移动到整个文档的最后
4G4 Shift+g将光标移动到整个文档的第4行
HCtrl+h光标移动到屏幕的最上方那一行的第一个字符
MCtrl+m光标移动到屏幕的最上方那一行的第一个字符
LCtrl+l光标移动到屏幕的最上方那一行的第一个字符
Ctrl+fPage Down屏幕向下移动一页
Ctrl+bPage Up屏幕向上移动一页
Ctrl+d屏幕向下移动半页
Ctrl+u屏幕向上移动半页
命令修改
y0yank,复制当前行光标位置到行首的内容
y$yank,复制当前行光标位置到行尾的内容
y1Gyank,复制当前行到第一行的内容
yGyank,复制当前行到最后一行的内容
yyyank,复制当前行
10yyyank,复制当前行往下的10行内容
yw复制一个单词
p粘贴到光标下一行
PShift+p粘贴到光标上一行
4p粘贴4次
J将当前行与下一行合成同一行,删除回车
r*替换当前光标所选的字符,例如将当前光标所指替换为s:rs
RShift+rREPLACE,替换模式,按下R后,再输入字符替换当前光标所选的字符并将光标向后移动
dddelete,删除当前行
dw删除一个单词但不进入插入模式
cw删除一个单词并进入插入模式
x删除当前光标所指的字符
ci+{ci+}ci+[ci+]ci+(ci+)change in,清除当前光标所在括号内的内容并切换到插入模式
.英语句号,重复上一次修改操作,例如删除、替换、插入
uundo,撤销上一步操作
Ctrl+r重做上一步撤销动作,回退撤销
Ctrl+vvisual block,视觉模式,选择单个字符,通过hjkl移动光标来选择字符,按d删除选中内容并回到命令模式
Shift+vvisual block,视觉模式,选择整行,通过hjkl移动光标来选择字符,按d删除选中内容并回到命令模式

插入模式(Insert Mode)

命令模式按以下命令键进入插入模式(插前附后),有的远程连接工具会在左下角显示INSERT,也就是刚进入文件的模式到可以输入的模式

image.png

命令输入字符时插入的位置
i光标左边,esc退出
aappend,光标后,esc退出
IShift+i行首,esc退出
AShift+a行尾,esc退出
entre换行
Insert切换插入/替换模式
oopen a new line,新建下一行
OShiftopen a new line,新建上一行
BackSpace删除光标前一个字符
Delete删除光标后一个字符
esc退出插入模式命令模式

命令行模式(Command-Line Mode)

再按下esc退出插入模式命令模式,在命令模式输入:/进入命令行模式

image.png

命令解释
:set nu设置行号(未配置set relativenum
:set nonu取消行号(未配置set relativenum
:q仅退出,文件没有编辑即可仅退出,quit
:q!不保存退出
:wwrite,保存但不退出
n移动到下一个匹配项
:r 文件名将另一文件内容添加到当前光标后面
:w 文件名另存为
ZZShift+z Shift+zwrite&quit,保存退出
/*向前搜索匹配并移动光标到对应位置,例如查找当前光标位置前的hello:/hello
?*向后搜索匹配并移动光标到对应位置,例如查找当前光标位置后的hello:?hello
n移动到下一个匹配项
NShift+n移动到上一个匹配项
:%s/old/new/g全局替换,例如全局替换hello为hello world::%s/hello/hello world/g
:%s/old/new/g全局替换,替换前提示每个是否确认替换(),例如全局替换hello为hello world::%s/hello/hello world/gc
escEnterctrl+c退出命令行模式
  • y:将当前匹配项替换为新的内容并继续执行下一个匹配项的替换
  • n:跳过当前匹配项,不进行替换,并继续执行下一个匹配项的替换
  • a:替换所有剩余的匹配项,不再提示每个匹配项
  • q:立即退出替换操作,不进行任何替换
  • l:将当前匹配项替换为新的内容并退出替换操作,不进行下一个匹配项的替换
  • ^E:向上滚动一行,显示上面的内容
  • ^Y:向下滚动一行,显示下面的内容

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【车载音视频电脑】嵌入式AI分析车载DVR,支持8路1080P

产品特点 采用H.265 & H.264编解码,节约存储空间、传输流量; 高分辨率:支持8路1080P*15FPS/4路1080P*30FPS、720P、D1等编解码; 支持1张SATA硬盘,取用方便,满足大容量存储要求; 支持1个…

安装台式电脑网卡驱动

安装电脑网卡驱动 1. 概述2. 具体方法2.1 先确定主板型号2.2 详细操作步骤如下2.2.1 方法一2.2.2 方法二2.2 主流主板官网地址 结束语 1. 概述 遇到重装系统后、或者遇到网卡驱动出现问题没有网络时,当不知道怎么办时,以下的方法,可以作为一…

oracle RAC安装 保姆级教程

使用SSHXmanager 我的本地IP是172.17.68.68 服务器配置 [rootrac12-1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 #Public IP …

笔记 | 用go写个docker

仅作为自己学习过程的记录,不具备参考价值 前言 看到一段非常有意思的话: 很多人刚接触docker的时候就会感觉非常神奇,感觉这个技术非常新颖,其实并不然,docker使用到的技术都是之前已经存在过的,只不过旧…

网络安全等级保护基本要求解读- 安全计算环境-应用系统和数据安全

概述 越来越多的企业用户已将核心业务系统转移到网络上,Web浏览器成为业 务系统的窗口,应用系统面临更多的安全威胁;并且由于各种原因使得其 存在较多的安全漏洞。 在此背景下,如何保障企业的应用安全,尤其是Web应用…

使用PyMuPDF、Pillow和pytesseract实现PDF文件中文OCR识别

文章目录 一、Win11下安装Tesseract和中文语言包(tessdata)1.1 安装Tesseract OCR引擎1.1.1 下载Tesseract OCR安装包1.1.2 运行安装程序1.2 安装中文语言包(tessdata)1.2.1 下载中文语言包1.2.2 放置中文语言包1.3 配置环境变量1.3.1 打开系统属性1.3.2 编辑环境变量1.4 测…

计算机视觉全系列实战教程:(九)图像滤波操作

1.图像滤波的概述 (1)Why (为什么要进行图像滤波) 去噪:去除图像在获取、传输等过程中的各种噪音干扰提取特征:使用特定的图像滤波器提取图像特定特征 (2)What (什么是图像滤波) 使用滤波核对图像进行卷积运算或非线性运算,以达到去噪或提…

腾讯云EdgeOne对比普通CDN的分别

EdgeOne架构图 普通CDN架构图 ​​​​​​​ 腾讯云EdgeOne对比普通CDN的不同点 服务范围和集成度 腾讯云EdgeOne是一体化的综合平台,不仅提供内容分发功能,还包括安全防护、性能优化和边缘计算等服务。EdgeOne提供了DDoS防护、WAF(Web应…

vue3+vite:动态引入静态图片资源

目录 第一章 前言 第二章 vue2与vue3动态引入静态图片资源 2.1 vue2 webpack动态引入静态图片资源 2.1.1 了解 2.1.2 vue2项目动态引入静态图片资源 2.2 vue3 vite动态引入静态图片资源 2.2.1 了解 2.2.2 require vs import了解 2.2.3 vue3vite 项目动态引入静态图片…

路由器怎么设置局域网?

局域网(Local Area Network,LAN)是指在一个相对较小的地理范围内,如家庭、办公室或学校等,通过路由器等设备连接起来的计算机网络。设置局域网可以方便地实现内部资源共享和信息交流。本文将介绍如何设置局域网以及一个…

12.实战私有数据微调ChatGLM3

实战私有数据微调ChatGLM3 实战私有数据微调ChatGLM3实战构造私有的微调数据集基于 ChatGPT 设计生成训练数据的 Prompt使用 LangChain GPT-3.5-Turbo 生成训练数据样例训练数据解析、数据增强和持久化存储自动化批量生成训练数据集流水线提示工程(Prompt Engineer…

爬虫-模拟登陆博客

import requests from bs4 import BeautifulSoupheaders {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 } # 登录参数 login_data {log: codetime,pwd: shanbay520,wp-submit: …

Undertow学习

Undertow介绍 Undertow是一个用java编写的灵活、高性能的web服务器,提供基于NIO的阻塞和非阻塞API。 Undertow有一个基于组合的体系结构,允许您通过组合小型单用途处理程序来构建web服务器。为您提供了在完整的Java EE servlet 4.0容器或低级别非阻塞处…

N32G45XVL-STB之移植LVGL(8.4.0)

目录 概述 1 系统软硬件 1.1 软件版本信息 1.2 ST7796-LCD 1.3 MCU IO与LCD PIN对应关系 2 认识LVGL 2.1 LVGL官网 2.2 下载V8.4.0 3 移植LVGL 3.1 硬件驱动实现 3.2 添加LVGL库文件 3.3 移植和硬件相关的代码 3.3.1 驱动接口相关文件介绍 3.3.2 重新接口函数 3…

SwiftUI中UIViewRepresentable的使用(UIKit与SwiftUI的桥梁)

UIViewRepresentable是一个协议,用于创建一个SwiftUI视图,该视图包装了一个UIKit视图。通过实现UIViewRepresentable协议,我们可以在SwiftUI中使用自定义的UIKit视图,并与SwiftUI进行交互。 实现UIViewRepresentable 创建一个遵…

Flink任务如何跑起来之 2.算子 StreamOperator

Flink任务如何跑起来之 2.算子 StreamOperator 前文介绍了Transformation创建过程,大多数情况下通过UDF完成DataStream转换中,生成的Transformation实例中,核心逻辑是封装了SimpleOperatorFactory实例。 UDF场景下,DataStream到…

机器学习python实践——关于ward聚类分层算法的一些个人心得

最近在利用python跟着参考书进行机器学习相关实践,相关案例用到了ward算法,但是我理论部分用的是周志华老师的《西瓜书》,书上没有写关于ward的相关介绍,所以自己网上查了一堆资料,都很难说清楚ward算法,幸…

数据分析常用6种分析思路(下)

作为一名数据分析师,你又没有发现,自己经常碰到一些棘手的问题就没有思路,甚至怀疑自己究竟有没有好好学过分析? 在上篇文章里,我们讲到了数据分析中的流程、分类、对比三大块,今天,我们继续讲…

为Nanopi m1交叉编译opencv

为Nanopi m1交叉编译opencv 一、下载交叉编译器 根据之前的博客进行 二、下载opencv和必要库 sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devgit clone https://github.com/opencv/opencv.git cd opencv三、进行编…

计算机网络实验(15):基于Socket的网络编程(附JAVA源码.txt)

一、实验名称 UDP客户服务器即时通信程序 二、实验目的: 掌握基于SOCKET的网络编程方法。 基于JAVA语言,编写一个SOCKET的即时通信小程序 三、实验内容和要求 实验内容: 基于JAVA语言,编写一个SOCKET的即时通信小程序 实…