【第九章】vim 程序编辑器

news2025/7/28 13:41:08

文章目录

  • vi与vim
  • vi的使用
    • 范例
    • 按键说明
      • 一般指令模式可用的按钮说明:光标移动、复制贴上、搜寻取代等
      • 一般指令模式切换到编辑模式的可用的按钮说明
      • 一般指令模式切换到命令行界面的可用按钮说明
    • vim的暂存盘、救援回复与打开时的警告讯息

vi与vim

一、Linux上面的指令都默认使用vi作为数据编辑的接口,所以一定要学会vi
二、vim是vi的进阶版本,vim可以用颜色或底线等方式来显示一些特殊的信息,vi是老式的文书处理器,vim是个“程序编辑器”

vi的使用

一、vi分为三种模式:一般指令模式、编辑模式、命令行命令模式

  1. 一般指令模式 (command mode):以vi打开一个文件就直接进入一般指令模式了(这是默认模式,也简称为一般模式)。在这个模式中, 你可以使用“上下左右”按键来移动光标,你可以使用“删除字符”或“删除整列”来处理文件内容, 也可以使用“复制、贴上”来处理你的文件数据。
  2. 编辑模式 (insert mode):在一般指令模式中无法编辑文件内容,按下“i, I, o, O, a, A, r, R”等任何一个字母之后才会进入编辑模式。通常在Linux中,按下这些按键时,在画面的左下方会出现“INSERT或REPLACE”字样,此时才可以进行编辑。而如果要回到一般指令模式时, 则必须要按下“Esc”这个按键即可退出编辑模式。
  3. 命令行命令模式(command-line mode):在一般模式当中,输入“: / ?”三个中的任何一个按钮,就可以将光标移动到最下面那一列。在这个模式当中, 可以执行“搜寻数据”的动作,而读取、存盘、大量取代字符、离开vi、显示行号等等的动作则是在此模式中达成的!
    在这里插入图片描述

范例

使用vi来创建一个名为welcome.txt的文件:

  1. 使用vi filename进入一般指令模式:
[dmtsai@study ~]$ /bin/vi welcome.txt
# 在CentOS7中,由于一般帐号默认vi已经被vim取代了,因此要输入绝对路径来执行才行!

整个画面主要分为两部份,上半部与最底下一行两者可以视为独立的,图中那个虚线是不存在的,本文用来说明而已啦!上半部显示的是档案的实际内容,最底下一行则是状态显示列(如下图的[New File]信息),或者是命令下达列:
在这里插入图片描述
如果你开启的档案是旧档(已经存在的档案),则可能会出现如下的信息:
在这里插入图片描述
箭头所指的那个/etc/man.config" 141L, 4617C代表的是『档名为/etc/man.conf,档案内有141行以及具有4617个字符』的意思! 那一行的内容并不是在档案内,而是在vi显示一些信息的地方喔!

  1. 按下i进入编辑模式,开始编辑文字
    在这里插入图片描述注意:在vi里面,[tab]这个按钮所得到的结果与空格符所得到的结果不一样
  2. 按下[ESC] 按钮回到一般指令模式
  3. 进入命令行界面,文件储存并离开vi环境:输入:wq即可存盘离开!

注意:

  1. 按下:光标就会移动到最下面一行去!
  2. 存盘(write)并离开(quit)

在提示字符后面输入ls -l就可以看到我们刚刚创建的welcome.txt文件啦!整个图示有点像下面这样:
在这里插入图片描述
如果你的文件权限不对,例如为-r--r--r--时,那么可能无法写入,此时可以使用强制写入的方式,即使用:wq!(多加一个惊叹号即可!)不过,这是在你的权限可以改变的情况下才能成立的!

按键说明

一般指令模式可用的按钮说明:光标移动、复制贴上、搜寻取代等

一、光标移动

移动光标的方法
h 或 向左方向键(←)光标向左移动一个字符
j 或 向下方向键(↓)光标向下移动一个字符
k 或 向上方向键(↑)光标向上移动一个字符
l 或 向右方向键(→)光标向右移动一个字符
l 或 向右方向键(→)光标向右移动一个字符
如果你将右手放在键盘上的话,你会发现hjkl是排列在一起的,因此可以使用这四个按钮来移动光标。如果想要进行多次移动的话,例如向下移动30列,可以使用30j30↓的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f]屏幕“向下”移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]屏幕“向上”移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]屏幕“向下”移动半页
[Ctrl] + [u]屏幕“向上”移动半页
+光标移动到非空白字符的下一列
-光标移动到非空白字符的上一列
n<space>那个 n 表示“数字”,例如20。按下数字后再按空白键,光标会向右移动这一列的n个字符。例如20<space>则光标会向后面移动20个字符距离。
0或功能键[Home]移动到这一行的最前面字符处(常用)
$或功能键[End]移动到这一行的最后面字符处(常用)
H光标移动到这个屏幕的最上方那一行的第一个字符
M光标移动到这个屏幕的中央那一行的第一个字符
L光标移动到这个屏幕的最下方那一行的第一个字符
G移动到这个文件的最后一行(常用)
nGn为数字。移动到这个文件的第n行。例如20G则会移动到这个文件的第20行(可配合:set nu
gg移动到这个文件的第一行,相当于1G啊!(常用)
n<Enter>n为数字。光标向下移动n行(常用)

二、搜寻与取代

方法含义
/word向光标之下寻找一个名称为word的字串
?word向光标之上寻找一个字串名称为word的字串
n这个n是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行/vbird去向下搜寻vbird这个字串,则按下n后,会向下继续搜寻下一个名称为vbird的字串。如果是执行?vbird的话,那么按下n则会向上继续搜寻名称为vbird的字串!
N这个N是英文按键。与n刚好相反,为“反向”进行前一个搜寻动作。例如/vbird后,按下N则表示“向上”搜寻vbird 。
:n1,n2s/word1/word2/gn1与n2为数字。在第n1与n2行之间寻找word1这个字串,并将该字串取代为word2,举例来说,在100到200行之间搜寻vbird并取代为VBIRD则::100,200s/vbird/VBIRD/g(常用)
:1,$s/word1/word2/g从第一行到最后一行寻找word1字串,并将该字串取代为word2!(常用)
:1,$s/word1/word2/gc从第一行到最后一行寻找word1字串,并将该字串取代为word2!且在取代前显示提示字符给使用者确认(confirm) 是否需要取代!(常用)

三、删除、复制与贴上

方法含义
x, Xx为向后删除一个字符(相当于[del]按键),X为向前删除一个字符(相当于[backspace]亦即是倒退键) (常用)
nxn为数字,连续向后删除n个字符。举例来说,我要连续删除10个字符:10x
dd删除光标所在的那一整列(常用)
nddn为数字。删除光标所在的向下n行,例如20dd则是删除20行(常用)
d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d$删除光标所在处,到该行的最后一个字符
d0删除光标所在处,到该行的最前面一个字符
yy复制光标所在的那一行(常用)
nyyn 为数字。复制光标所在的向下n行,例如20yy则是复制20行(常用)
y1G复制光标所在行到第一行的所有数据
yG复制光标所在列到最后一列的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
y$复制光标所在的那个字符到该行行尾的所有数据
p, Pp为将已复制的数据在光标下一行贴上,P则为贴在光标上一列!举例来说,我目前光标在第20行,且已经复制了10行数据。则按下p后,那10行数据会贴在原本的20行之后,亦即由21行开始贴。但如果是按下P呢?那么原本的第20行会被推到变成30行。(常用)
J将光标所在行与下一行的数据结合成同一行
c重复删除多个数据,例如向下删除10列:[10cj]
u复原前一个动作。(常用)
[Ctrl]+r重做上一个动作。(常用)
.重复前一个动作。如果你想要重复删除、重复贴上等等动作,按下小数点.就好了!(常用)

一般指令模式切换到编辑模式的可用的按钮说明

进入插入或取代的编辑模式
i, I进入插入模式(Insert mode):i为从目前光标所在处插入,I为在目前所在行的第一个非空白字符处开始插入。(常用)
a, A进入插入模式(Insert mode):a为从目前光标所在的下一个字符处开始插入,A 为从光标所在列的最后一个字符处开始插入。(常用)
r, R进入取代模式(Replace mode):r只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下ESC为止;(常用)
[Esc]退出编辑模式,回到一般指令模式中(常用)

上面除最后一个[Esc]按键外,在vi画面的左下角处会出现--INSERT----REPLACE--的字样。你想要在文件里面输入字符时,一定要在左下角处看到 INSERTREPLACE才能输入喔!

一般指令模式切换到命令行界面的可用按钮说明

命令行界面的储存、离开等指令
:w将编辑的数据写入硬盘文件中(常用)
:w!若文件属性为只读时,强制写入该文件。不过到底能不能写入,还是跟你对该文件的文件权限有关啊!
:q离开vi(常用)
:q!若曾修改过文件,又不想储存,使用!为强制离开不储存盘案。
注意:惊叹号 (!) 在vi当中,常常具有强制的意思
:wq储存后离开,若为:wq!则为强制储存后离开(常用)
ZZ若文件没有更动,则不储存离开,若文件已经被更动过,则储存后离开!
:w [filename]将编辑的数据储存成另一个文件(类似另存新文件)
:r [filename]在编辑的数据中,读入另一个文件的数据。亦即将filename这个文件内容加到光标所在行后面
:n1,n2 w [filename]将n1到n2的内容储存成filename这个文件。
:! command暂时离开vi到命令行界面下执行command的显示结果!例如:! ls /home表示可在vi当中察看/home下面以ls输出的文件信息!
vim环境的变更
:set nu显示行号,设置之后,会在每一列的字首显示该行的行号
:set nonu与set nu相反,为取消行号!

在vi中,数字通常代表重复做几次,或去到第几个什么什么的意思。举例来说,要删除50行,则是用50dd,数字加在动作之前~要向下移动20行就是20j或者是20↓

vim的暂存盘、救援回复与打开时的警告讯息

一、回复:当你的系统因为某些原因而导致类似死机的情况时,还可以通过某些特别的机制来让你将之前未储存的数据“救”回来!
二、当我们在使用vim编辑时,vim会在与被编辑的文件的目录下,再创建一个名为.filename.swp的文件。比如说我们在上一个小节谈到的编辑 /tmp/vitest/man_db.conf这个文件时,vim会主动的创建 /tmp/vitest/.man_db.conf.swp的暂存盘,你对man_db.conf做的动作就会被记录到这个.man_db.conf.swp当中喔!如果你的系统因为某些原因断线了,导致你编辑的文件还没有储存,这个时候.man_db.conf.swp就能够发挥救援的功能了!

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

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

相关文章

Java#12(String中的常用方法)

目录 一.String中的方法substring 1.作用:截取字符串 2.格式:对象名.substring(开始的索引,结束的索引(没写就截到结尾)) 3.返回类型是String,所以要用一个字符串对象来接收 4.特点: 二.String中的办法replace 1.作用:替换字符串中的内容 2.格式:对象名.replace("要…

【面试题】flex布局画色子

1. flex布局 flex属性作用flex-direction设置主轴的方向justify-content设置主轴上的子元素排列方式align-items设置侧轴上的子元素排列方式flex-wrap设置子元素是否换行align-self设置子元素在侧轴的对齐方式 2. 通过flex布局画色子 <!DOCTYPE html> <html lang&qu…

Zotero文献管理软件入门使用方法:软件下载、文献导入、引文插入

本文介绍文献管理软件Zotero的基础使用方法&#xff0c;包括软件下载与安装、文献与PDF导入、在Word中插入参考文献等的方法。 在EndNote文献输出引用格式自定义修改与编辑界面解读&#xff08;https://blog.csdn.net/zhebushibiaoshifu/article/details/115221112&#xff09;…

Mysql、Hive、Sqoop的安装及配置

Mysql的安装及配置 1、查看系统安装的MariaDB rpm -qa|grep mariadb2、删除查询到的MariaDB&#xff0c;这里的mariadb-libs-5.5.68-1.el7.x86_64是通过上一步查出来的 rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_643、执行以下命令下载并安装mysql5.7 wget http://de…

蓝桥杯刷题(一)

蓝桥杯刷题1.单词分析2.成绩统计3.最短路4.门牌制作5.数字三角&#xff08;较困难&#xff09;1.单词分析 我本人其实是比较讨厌操作字符的&#xff0c;因为比较麻烦&#xff0c;所以我将字符都用ascll码值表示。例如‘a’97,‘b’98,c‘99’&#xff0c;所以b-a1 #include<…

prometheus学习

指标类型 测量型&#xff08;gauge&#xff09; 这种类型是上下增减的数字&#xff0c;本质上是特定度量的快照。常见的有CPU&#xff0c;内存&#xff0c;磁盘使用率等。对于业务上来说&#xff0c;指标可能是网站上的客户数量。 计数型&#xff08;counter&#xff09; 这…

【Final Project】Kitti的双目视觉里程计(2)重读

1.基础 ​ 纠正一个思想&#xff0c;即要具有模块化的思维&#xff0c;面对整体中模块是不要考虑其他&#xff0c;就仅考虑如何将一个类抽象出来&#xff0c;思考实现怎样的功能。前面的总结学习我认为是错误的学习方法&#xff0c;并不系统。我的目的&#xff1a;借鉴学习别人…

基于移动应用的城市公共气象服务平台的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

spark分布式计算框架

MapReduce是计算逻辑清晰的&#xff0c;只有两个步骤&#xff0c;任务是JVM进程级别&#xff0c;每执行到什么步骤 去申请具体的资源。 而spark根本不知道具体有几个stage&#xff0c;逻辑未知&#xff0c;每个人的job stage等根本不知道。它是默认倾向于抢占资源的&#xff0c…

C++11 条件变量

目录 条件变量 1 成员函数 wait函数 wait_for函数 wait_until函数 notify_one函数 notify_all函数 2 Demo1 sync_queue.h condition-sync-queue.cpp 3 Demo2 2-sync_queue.h 2-condition-sync-queue.cpp C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程…

汇编内中断

内中断 文章目录内中断1.内中断的产生2.中断处理程序、中断向量表、中断过程3.iret指令4.除法错误中断的处理5.单步中断6.int指令7.BIOS和DOS所提供的中断例程1.内中断的产生 任何一个通用的CPU&#xff0c;都具备一种能力&#xff0c;可以在执行完当前正在执行的指令之后&…

StartDT奇点云通过CMMI5全球软件领域最高级别成熟度认证

近日&#xff0c;奇点云正式通过全球软件领域最高级别认证——CMMI 5级认证&#xff0c;标志着奇点云的软件技术研发能力、项目管理能力、质量保障能力、方案交付能力等均达到优化管理级的国际先进水平。 CMMI&#xff08;软件能力成熟度模型集成&#xff09;是国际上用于评价软…

JAVA开发(Redis的使用, redis数据类型)

Redis是一个缓存型数据库&#xff0c;或者平时就叫它缓存。它支持存储的类型有以下几种&#xff1a; string&#xff08;字符串&#xff09; hash&#xff08;哈希&#xff09; list&#xff08;列表&#xff09; set&#xff08;集合&#xff09; zset(sorted set&#xff1a;…

智慧电网解决方案-最新全套文件

智慧电网解决方案-最新全套文件一、建设背景二、思路架构三、建设方案四、获取 - 智慧电网全套最新解决方案合集一、建设背景 电力公司如今面临的紧迫需求问题似乎无穷无尽&#xff0c;例如&#xff1a;提高可靠性&#xff1b;降低成本&#xff1b;提高效率&#xff1b;满足环…

(十)C++中的左值lvalue右值rvaue

文章目录1.C中的变量名是如何存储及引用2.C中的左值与右值3.右值引用4.移动语义move函数参考文献欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; 1.C中的变量名是如何存储及引用 int a 0;如上&#xff0c;在C中声明一个变量时&#xff0…

【0143】 System V共享内存(Shared Memory)

文章目录 1. 共享内存1.1 共享内存分类2. System V IPC密钥3. System V 共享内存调用3.1 shmget()3.2 shmat()3.3 shmdt()3.4 shmctl()4. 实战演练4.1 服务端程序代码实现4.2 客户端程序代码实现1. 共享内存 共享内存是 Linux 和其他类 Unix 系统下可用的三种进程间通信 (IPC)…

Docker下安装Zookeeper以及Kafka

一、安装Zookeeper 1. 查看Zookeeper镜像以及版本 访问Zookeeper镜像库地址 也可以通过命令docker search zookpper在命令行搜索zookeeper镜像&#xff0c;但是通过该命令无法查看远程镜像版本信息。 NAME&#xff1a;镜像名(镜像仓库源的名称) DESCRIPTION&#xff1a;对该镜…

yolov5剪枝实战2:网络剪枝原理介绍

1. 网络轻量化相关技术 网络轻量化的相关技术分类:1. 网络剪枝(Network pruning) 2. 稀疏表示(Sparse representation) 3. Bits precision(低比特表示,比如不用浮点型,使用int量化) 4. Kownledge distillation(知识蒸馏) 2. 网络剪枝 神经网络一般都是over-parameterized,…

SharePoint Integrator Delphi版

SharePoint Integrator Delphi版 SharePoint Integrator包含易于使用的组件&#xff0c;用于连接流行的SharePoint Server结构&#xff0c;如网站、列表和文档。SharePoint Integrator组件支持对SharePoint对象的访问&#xff0c;允许应用程序轻松地查询和修改列表、访问托管文…

京东发布第三季度财报员工总数近50万 “以实助实”助力高质量就业

11月18日&#xff0c;京东集团&#xff08;纳斯达克股票代码&#xff1a;JD&#xff0c;港交所股票代号&#xff1a;9618&#xff09;发布了2022年三季度业绩。其中净收入为2435亿元人民币&#xff0c;同比增速高于同期国内社会消费品零售总额3.5%的增速&#xff1b;其中&#…