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

Linux之vim编辑器

vi编辑器是所有Unix及linux系统下标准的编辑器,类似于Windows系统下的记事本。很多软件默认使用vi作为他们编辑的接口。vim是进阶版的vi,vim可以视为一种程序编辑器。

前言:

1.文件准备

复制 /etc/passwd文件到自己的目录下(不要直接修改/etc目录下的passwd),后面使用passwd文件演示vim。

cd [work-dir]          #将[work-dir]改为自己的工作目录的路径即可
mv /etc/passwd ./      #复制文件

2.命令准备

系统自带的是vi编辑器,vim需要自行下载,所以在使用之前需要先下载vim。

sudo apt-get install vim

3.配置vim

这块我们可以学完后面的内容再回来配置vim。

vim的配置包括临时配置、全局配置、个人配置三种方式。

其中,临时配置是在vim的末行模式下输入配置,在本次使用时生效的配置;全局配置是在根目录下的/etc/vim/vimrc文件进行配置;个人配置是在家目录下~/.vimrc的文件中进行配置。我们以个人配置为例:

为了后序写c语言的代码,避免重复输入经常使用的一些语句,我们在/etc/vim/template.c中写入模板:

首先执行sudo vim /etc/vim/template.c命令,然后输入以下内容

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>int main(int argc, char* argv[])
{return 0;
}

在~/.vimrc文件中写入以下内容:

首先执行:sudo vim ~/.vimrc,然后填入以下内容

set number
" 突出显示当前行
set cursorline
" 设定 tab 长度为 4
set tabstop=4
" 搜索时高亮显示被找到的文本
set hlsearch
"开启新行时使用智能缩进
set smartindent
"显示命令
set showcmd
"命令行高度
set cmdheight=2"语法高亮度显示
syntax on"autocmd BufNewFile *.c 0r /usr/share/vim/vimfiles/template.c
"设置头文件及主函数模板                                                         
autocmd BufNewFile *.c 0r /etc/vim/template.c

这个配置文件的最后一行就代表,每次生成.c结尾的文件时,都会自动写入/etc/vim/template.c文件中的内容。

4.初识命令

用法一:#vim 文件路径:打开指定的文件

用法二:#vim 数字 文件路径:打开指定的文件,并将光标初始化为指定数字行

用法三:#vim /关键词 文件路径:打开指定文件,并且高亮显示关键词

用法四:#vim 文件路径1 文件路径2 文件路径3 ...:同时打开多个文件,(退出第一个第二个自动显示)

一、模式切换

vim中存在三种模式:命令模式、编辑模式(输入模式)、末行模式

命令模式:打开文件之后默认进入该模式,可以输入快捷键进行一些操作:删除、复制、粘贴、移动光标等

编辑模式:可以对文件的内容进行编辑(就是普通的编辑模式,下面不多做介绍了)

末行模式:可以在末行输入命令来对文件进行操作:搜索、替换、保存、退出、撤销、高亮等

模式切换按键说明:

进入编辑模式

【i】:insert,从光标处进入

【l】:从光标所在行的行首进入

【a】:append,从光标的下一个字符进入

【A】:从光标所在行的行尾进入

【o】:open,从光标所在行的下边插入一个空行

【O】:从光标所在行的上边插入一个空行

【s】:subst:插入时取代当前光标字符

【S】:插入时取代当前行

退回命令模式

【esc】按键

进入末行模式

【:】:代表末行模式开始了

【/】:以搜索的状态进入末行模式,从上往下搜索接下来输入的关键字

【?】:以搜索的状态进入末行模式,从下往上搜索接下来输入的关键字

退出vim

【q】:退出

【q!】:强制退出

【wq】:保存并退出

【x】:文件没修改直接退出、修改后保存并推出(不要使用x,x是文件进行加密)

异常退出

在编辑文件后并没有正常wq保存退出,而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出。

解决办法:删除隐藏的临时文件(以.swp结尾的文件)

二、命令模式

打开文件后默认进入该模式

光标移动

1.光标上下左右移动:方向键 或 kjhl(kjhl分别代表上下左右)

2.光标上下左右移动指定行或字符:[数字]方向键或[数字]kjhl

3.光标移动到行首:^

4.光标移动到行尾:$

5.光标移动到首行:gg

6.光标移动到末行:G

7.自动格式化程序:gg=G

8.光标移动到指定行:[数字]G 或 [数字]gg

9.向上翻屏:按键ctrl+b  或 PgUp

0.向下翻屏:按键ctrl+f   或 PgDn

复制/粘贴/剪切

1.复制光标所在行:yy

2.光标所在行的下一行新开一行粘贴(paste):p

3.以光标所在行为准(包括当前行),向下复制指定的行数:[数字]yy

4.剪切/删除光标所在行(剪切了不粘贴就是删除)(delete):dd

5.剪切/删除光标所在行为准(包括当前行),向下剪切/删除指定行数:[数字]dd

6.剪切/删除光标所在的当前行之后的内容:D

7.可视化操作(view):v(可视模式),V(可视行)、ctrl+v(可视块)、然后按下方向键来选中需要操作的区块按下y复制或者按下d删除

撤销/恢复

撤销(undo):u或者末行模式下的:u

恢复(取消)之前的撤销操作:ctrl+r

三、末行模式

[ESC]→[:](依次按下这两个键,进入末行模式,按下退出键是为了确保处在命令模式)

保存与退出文件

1.保存(write)::w

2.另存为::w 路径

3.退出(quit)::q

4.保存并退出::wq

5.强制执行:!

6.不保存,强制退出::q!

显示行号

显示行号(临时)(number)::set nu

取消显示行号::set nonu

查找与替换

1.查找:/关键字 or ?关键字

2.在搜索的结果中切换 上/下 一个结果(next):N/n

3.取消高亮(no highlight)::nohl

4.替换光标所在行第一原数据::s/原数据/新数据

5.替换光标所在行全部原数据::s/原数据/新数据/g

6.替换整个文件每行第一条原数据::%s/原数据/新数据

7.替换整个文件全部原数据::%s/原数据/新数据/g

注:%表示整个文件  g:global全局的

执行shell命令

语法::![shell指令]

举例::!ls /

当外部命令执行结束之后按下任意键回到vim

切换文件

1.查看当前已经打开的文件名称::files

2.切换到指定文件::open 已经打开的文件名

3.切换到上一个文件(back prev)::bp

4.切换到下一个文件(back next)::bn

四、分屏操作

vim指令打开:

1)vim -d afile bfile #比较两个文件

#这个方法是用来比较两个文件的,有高亮显示,界面不太好看

2)vim -On afile bfile #左右分屏打开两个文件

#Ctrl+w l切换到右屏 #Ctrl+w h切换到左屏

3)vim -on afile bfile #上下分屏显示两个文件

#Ctrl+w j切换到下屏 #Ctrl+w k切换到上屏

编辑时打开:

1.如果在编辑时想分屏显示当前文件

上下:Ctrl+w s 左右:Ctrl+w v

作用:同样的文件可以显示不同的位置,用于大文件参考上文使用。

特点:这两个文件同步内容,不同步显示位置。

2.如果想在编辑时分屏显示其它文件

上下:vsp fileb_name 左右:vs fileb_name

3.关闭当前窗口

关闭当前窗口,不能关闭最后一个仅剩的窗口:Ctrl+w c

关闭当前窗口,如果当前是最后一个窗口,则退出vim:Ctrl+w q

4.如果有更多屏幕

将当前光标移动到下一个屏(next):Ctrl+w w

5.vim的分屏移动

将当前光标下的屏幕移动到:

上屏位置:Ctrl+w K

下屏位置:Ctrl+w J

左屏位置:Ctrl+w H

右屏位置:Ctrl+w L


vi/vim键盘图

感谢大家!!

相关文章:

Linux之vim编辑器

vi编辑器是所有Unix及linux系统下标准的编辑器&#xff0c;类似于Windows系统下的记事本。很多软件默认使用vi作为他们编辑的接口。vim是进阶版的vi&#xff0c;vim可以视为一种程序编辑器。 前言&#xff1a; 1.文件准备 复制 /etc/passwd文件到自己的目录下&#xff08;不…...

【工具介绍】可以批量查看LableMe标注的图像文件信息~

在图像处理和计算机视觉领域&#xff0c;LabelMe是一个广泛使用的图像标注工具&#xff0c;它帮助我们对图像中的物体进行精确的标注。但是&#xff0c;当标注完成后&#xff0c;我们常常需要一个工具来批量查看这些标注信息。 今天&#xff0c;我要介绍的这款exe程序&#xf…...

2024年山西省第十八届职业院校技能大赛 (高职组)“信息安全管理与评估”赛项规程

2024年山西省第十八届职业院校技能大赛 &#xff08;高职组&#xff09;“信息安全管理与评估”赛项规程 一、赛项名称 赛项名称&#xff1a;信息安全管理与评估 英文名称&#xff1a;Information Security Management and Evaluation 赛项组别&#xff1a;高职教师组 赛项归属…...

STM32完全学习——STemWin的移植小插曲

一、移植编译的一些问题 新版的STemWin的库没有区别编译器&#xff0c;只有一些这样的文件&#xff0c;默认你将这些文件导入到KEIL中&#xff0c;然后编译就会有下面的错误。 ..\MEWIN\STemWin\Lib\STemWin_CM4_wc16.a(1): error: A1167E: Invalid line start ..\MEWIN\STe…...

Java——IO流(下)

一 (字符流扩展) 1 字符输出流 (更方便的输出字符——>取代了缓冲字符输出流——>因为他自己的节点流) (PrintWriter——>节点流——>具有自动行刷新缓冲字符输出流——>可以按行写出字符串&#xff0c;并且可通过println();方法实现自动换行) 在Java的IO流中…...

avue-crud 同时使用 column 与 group 的问题

场景一&#xff1a;在使用option 中的column 和 group 进行表单数据新增操作时&#xff0c;进行里面的控件操作时&#xff0c;点击后卡死问题&#xff0c;文本没问题 其它比如下拉&#xff0c;单选框操作&#xff0c;当删除 column 中的字段后&#xff0c; group 中的可以操作 …...

深入解析 Pytest 中的 conftest.py:测试配置与复用的利器

在 Pytest 测试框架中&#xff0c;conftest.py 是一个特殊的文件&#xff0c;用于定义测试会话的共享配置和通用功能。它是 Pytest 的核心功能之一&#xff0c;可以用于以下目的&#xff1a; 【主要功能】 1、定义共享的 Fixture &#xff08;1&#xff09;conftest.py 文件可…...

JAVA |日常开发中Websocket详解

JAVA &#xff5c;日常开发中Websocket详解 前言一、Websocket 概述1.1 定义1.2 优势 二、Websocket 协议基础2.1 握手过程2.2 消息格式2.3 数据传输方式 三、Java 中使用 Websocket3.1 Java WebSocket API&#xff08;JSR - 356&#xff09;3.2 第三方库&#xff08;如 Tyrus&…...

Typora教程

目录 一、下载安装 二、激活 1.激活 2.解决激活提示窗口 一、下载安装 去官网下载Typora安装&#xff0c;我的是1.9.5版本 二、激活 1.激活 根据路径找到Typora/resources/page-dist/static/js 使用记事本打开LicenseIndex文件&#xff0c;如下图&#xff1a; 按住快捷…...

泛微E9常见API保姆级详解!!!!

前言 在泛微前端开发过程中&#xff0c;虽然大部分是对流程以及流程逻辑的调整&#xff0c;但是还是会有一些小的个性化需求是需要借助JS来实现的。 比如&#xff1a;对同一组数据&#xff0c;前后变化不一样时&#xff0c;需要对这组变化后的数据进行标红处理&#xff1b;对提…...

UniApp配置使用原子化tailwindcss

参考视频 创建项目 新建项目选择uniapp - vue版本这里我选择3 - 点击创建即可 创建完成后&#xff0c;如果是要编译到小程序的项目则可以先将项目运行到小程序打开了 初始化package.json 执行 npm init -y安装和配置 安装 npm i -D tailwindcss postcss autoprefixer # 安…...

02. Docker:安装和操作

目录 一、Docker的安装方式 1、实验环境准备 1.1 关闭防火墙 1.2 可以访问网络 1.3 配置yum源 2、yum安装docker 2.1 安装docker服务 2.2 配置镜像加速 2.3 启动docker服务 3、二进制安装docker 3.1 下载或上传安装包并解压 3.2 配置使用systemctl管理 3.3 配置镜像…...

【MySQL中多表查询和函数】

目录 1.多表查询 1.1 外键 1.2 链接查询 2.MySQL函数 内置函数简介 数值函数 字符串函数 时间日期函数 条件判断操作 开窗函数 1.多表查询 本质&#xff1a;把多个表通过主外键关联关系链接&#xff08;join&#xff09;合并成一个大表&#xff0c;在去单表查询操作…...

加速科技精彩亮相ICCAD 2024

12月11日—12日 &#xff0c;中国集成电路设计业的年度盛会——ICCAD 2024在上海世博馆隆重举行。本次活动以“智慧上海&#xff0c;芯动世界”为主旨&#xff0c;汇聚了众多业界精英&#xff0c;共同探讨集成电路产业的未来。作为半导体测试行业领军企业&#xff0c;加速科技携…...

免费下载 | 2024算网融合技术与产业白皮书

《2024算网融合技术与产业白皮书&#xff08;2023年&#xff09;》的核心内容概括如下&#xff1a; 算网融合发展概述&#xff1a; 各国细化算网战略&#xff0c;指引行业应用创新升级。 算网融合市场快速增长&#xff0c;算力互联成为投资新热点。 算网融合产业模式逐渐成型…...

Ubuntu系统下部署大语言模型:Ollama和OpenWebUI实现各大模型的人工智能自由

之前在window下安装过 Ollama和OpenWebUI搭建本地的人工智能web项目(可以看我之前写的文章),无奈电脑硬件配置太低,用qwen32b就很卡,卡出PPT了,于是又找了一台机器安装linux系统,在linux系统下测试一下速度能否可以快一些。 系统硬件介绍 Ubuntu 22.04.4 LTS CPU: i5…...

基于Mybatis,MybatisPlus实现数据库查询分页功能

基于Mybatis&#xff0c;MybatisPlus实现数据库查询分页功能 目录 基于Mybatis&#xff0c;MybatisPlus实现数据库查询分页功能使用Mybatis插件实现分页数据库准备分页插件配置和使用常用数据&#xff1a; 使用MybatisPlus插件实现分页数据库准备分页插件配置和使用自定义分页查…...

【razor】echo搭配relay功能分析

echo 要搭配relay 实现作者说relay在linux上跑,可以模拟丢包、延迟目前没看到如何模拟。relay监听9200,有俩作用 echopeer1 发relay,replay 把peer1的包给peer2 ,实现p2p能力。 接收端:采集后发送发给relay的 接收端的地址就是自己,的地址就是本地的9200,因此是让relay接…...

技术文档的定义和规范,以及技术文档模板参考

技术文档是指用于记录、传达和共享技术信息的文档&#xff0c;通常涵盖系统设计、开发过程、用户指南、维护手册等内容。技术文档的质量直接影响到项目的可维护性、可扩展性和团队的协作效率。以下是技术文档的定义和一些规范&#xff1a; 一、定义 技术文档是用于描述产品、系…...

基于windows环境使用nvm安装多版本nodejs

目录 前言 一、卸载node 二、nvm是什么&#xff1f; 三、nvm安装 1.官网下载 nvm 包 2. 安装nvm-setup.exe 3. 配置路径和下载镜像 4. 检查安装是否完成 四、 使用nvm安装node 五、修改npm默认镜像源为淘宝镜像 六、环境变量配置 1. 新建目录 2. 设置环境变量 七…...

力扣9. 回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数 是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而…...

C#—BitArray点阵列

C#—BitArray点阵列 在 C# 中&#xff0c;BitArray 类用来管理一个紧凑型的位值数组&#xff0c;数组中的值均为布尔类型&#xff0c;其中 true&#xff08;1&#xff09;表示此位为开启&#xff0c;false&#xff08;0&#xff09;表示此位为关闭。 当需要存储位&#xff08…...

国产自主可控新征程:华为原生鸿蒙系统与鲲鹏认证

华为于今年10月22日在深圳正式发布了其原生鸿蒙系统HarmonyOS NEXT。这是我国首个实现全栈自研的操作系统&#xff0c;标志着中国在操作系统领域取得了突破性进展。HarmonyOS NEXT 5.0的发布&#xff0c;使得鸿蒙操作系统成为继苹果iOS和安卓系统之后的全球第三大移动操作系统&…...

esxi8 虚拟机使用ubuntu22模板后 没有ip配置文件,只有ipv6链接正常使用

esxi8 虚拟机使用模板后 没有ip配置文件&#xff0c;只有ipv6链接正常使用&#xff0c;/etc/NetworkManager/system-connections配置下没有配置文件 只有/etc/netplan/有文件 sudo ip addr add 192.168.1.9/24 dev ens35 # 临时设置ip&#xff0c; 接口名ens35 sudo vi /et…...

【Qualcomm】IPQ5018查看连接终端RSSI、SNR、NF方法

IPQ5018 简介 IPQ5018 是高通(Qualcomm)公司推出的一款面向网络设备的系统级芯片(SoC)。它通常用于路由器、接入点和其他网络设备中,提供高性能的无线网络连接。以下是关于 IPQ5018 的一些关键特性和功能: 关键特性 高性能处理器 IPQ5018 集成了多核 CPU,通常是 ARM …...

【构建工具】现代开发的重要角色

你可能有所听闻构建工具&#xff0c;但是不知道是干什么的&#xff0c;或者是开发中用到了&#xff0c;大概会使用&#xff0c;但是想理解一下具体的工作原理等&#xff0c;那么我将分享一下我对其的理解。【 我将分为两篇来讲解】。 当我们谈到构建工具时&#xff0c;可以把它…...

【Linux系统】—— 初识 shell 与 Linux 中的用户

【Linux系统】—— 初识shell 与 Linux 中的用户 1 Xshell 运行原理1.1 命令行的组成1.2 外壳程序 2 Linux中的用户2.1 两种用户2.2 创建普通用户2.3 用户切换2.3.1 普通->超级2.3.2 超级->普通 3 指令的短暂提权3.1 为什么要提权3.2 sudo 指令3.3 人人都能提权吗 1 Xshe…...

二维码数据集,使用yolov,voc,coco标注,3044张各种二维码原始图片(未图像增强)

二维码数据集&#xff0c;使用yolov&#xff0c;voc&#xff0c;coco标注&#xff0c;3044张各种二维码原始图片&#xff08;未图像增强&#xff09; 数据集分割 训练组70&#xff05; 2132图片 有效集20&#xff05; 607图片 测试集10&#xff05; 305图…...

Vue指令

创建项目&#xff1a; vue init webpack 项目名称 element-ui npm i element-ui -saxios npm i axios1.1.3 -S vuex npm i vuex3.6.2 -S vuex持久化 npm i -S vuex-persistedstate4.1.0代理模版 proxyTable: {/api: {target: http://localhost:8081/,changeOrigin: true,pathRe…...

数据保护策略:如何保障重要信息的安全

一、什么是数据安全&#xff1f; 数据安全是保护数字信息免遭盗窃、未经授权的访问和恶意修改的过程。这是一个持续的过程&#xff0c;负责监督信息的收集、存储和传输。 机密性&#xff1a;保护数据免遭未授权方访问。 完整性&#xff1a;保护数据免遭未经授权的修改、损坏…...

网站运营者网址/推广链接点击器

属性/样式初始化【转】 一、PP_AttrProp类 1、类功能说明&#xff0c;代表了一个相同类型的属性/样式集合 PP_AttrProp captures the complete set of XML and CSS Attributes/Properties for a piece of the document. These are generally created by the file-reade…...

实物黄金哪个网站做的好/鞍山seo公司

点击上方“服务端思维”&#xff0c;选择“设为星标”回复”669“获取独家整理的精选资料集回复”加群“加入全国服务端高端社群「后端圈」作者 | Kai Whner出品 | http://u6.gg/kqiuj数据网格&#xff08;Data Mesh&#xff09;是近来受到广泛重视的一种新型架构范式。每家数据…...

金融街做网站的公司/重要新闻今天8条新闻

首先下载React 的安装包&#xff0c;可以到官网下载。也可以使用React Demos 已经自带 React 源码&#xff0c;不用另外安装&#xff0c;只需把这个库拷贝到硬盘中使用。 &#xff08;可参考http://www.ruanyifeng.com/blog/2015/03/react.html 此网址的具体操作&#xff09; 1…...

长沙网站建设公司哪家好/网站关键词怎么快速上排名

06/01 2020 日论文提交&#xff0c;我是国内普通211本科毕业专业计算机科学与技术&#xff0c;本科毕业后直接来英国读博士&#xff0c;由于本科期间并没有认真学习&#xff0c;导致直博第一年压力巨大&#xff0c;前前后后花了5年时间完成博士论文&#xff0c;中间的进步提升是…...

淄博做网站/网络营销的认识

经过查找&#xff0c;找到原因是应为数据库字段是varchar2,java映射的类型是Long型导致报此错误。...

济南做网站的公司哪家好/ks数据分析神器

最近实现一个算法要用到求逆等矩阵运算&#xff0c;在网上搜到一个别人写的矩阵类&#xff0c;试了一下效果不错&#xff0c;贴在这里&#xff0c;做个保存。 matrix.h文件&#xff1a; 1 #ifndef __MATRIX_H__2 #define __MATRIX_H__3 4 #pragma once5 6 #include <iostrea…...