Linux学习[14]默认文本编辑vi/vim介绍常用指令演示指令汇总

news2024/10/5 12:52:28

文章目录

  • 前言:
  • 1. vi介绍
  • 2. 指令演示
    • 2.1 vi创建文件
    • 2.2 添加文本
  • 3. 指令汇总
    • 3.1 一般指令模式可用的按钮说明,光标移动、复制贴上、搜寻取代等
    • 3.2 进入插入或取代的编辑模式
    • 3.3 一般指令模式切换到命令行界面的可用按钮说明
  • 总结

前言:

之前用树莓派的时候用的nano
虚拟机里面ubuntu因为是界面化操作所以其实和记事本差不多;
后面用其他板子,上电使用之后发现,用nano结果提示我没有这个,用gedit也没有,只有一个vi,
给我整无语了,后面查了一下为什么只有vi,才发现vi是linux操作系统默认自带的一个文本编辑软件,所以有些系统可以什么文本编辑的都没有,但是不能没有vi。

为此,我特地看了下vi/vim的详细操作,自己跟着做了一遍。这里就做一下记录,记录一些常用的命令,后面自己查起来也方便。

博客最后再把书上的表格汇总一下,也贴在下面,后面自己也能查一下。


1. vi介绍

基本上 vi 共分为三种模式,分别是“一般指令模式”、“编辑模式”与“命令行命令模式”。 这三种模式的作用分别是:

一般指令模式 (command mode)
以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式,也简称为一般模式)。在这个模式中, 你可以使用“上下左右”按键来移动光标,你可以使用“删除字符”或“删除整列”来处理文件内容, 也可以使用“复制、贴上”来处理你的文件数据。

编辑模式 (insert mode)
在一般指令模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下“i, I, o, O, a, A, r, R”等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现“ INSERT 或 REPLACE ”的字样,此时才可以进行编辑。而如果要回到一般指令模式时, 则必须要按下“Esc”这个按键即可退出编辑模式。

命令行命令模式 (command-line mode)
在一般模式当中,输入“ : / ? ”三个中的任何一个按钮,就可以将光标移动到最下面那一列。在这个模式当中, 可以提供你“搜寻数据”的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的。

2. 指令演示

2.1 vi创建文件

命令行方式创建文件
在这里插入图片描述
创建完成后,由于这个文件不存在所以会自动生成并让你编辑。
按ESC后输入:wq表示写入并退出,再按Enter就可以了。
在这里插入图片描述

我们可以看到这个文件以及创好了。
在这里插入图片描述


单独创建不编辑

上面创建文件的方式有点麻烦,适合于创建文件里面编辑,然后保存的。如果我们只是单独想建个文件,其实用touch指令更合适。
在这里插入图片描述


2.2 添加文本

我们使用指令vi vitest对文件vitest进行操作,进来默认是指令模式,我们添加文本要切换到编辑模式。
不切换模式直接输入一些文本的话,可能会出现下面的报错E35:NO..........,这样是无法编辑的。

在这里插入图片描述

a之后,表示我们在光标的下一个字符进行插入,接下来我们就可以进行文本编写。

输入a之后,如果不按ESC,对光标的上下左右移动,在ubuntu中大概就会出现这个情况。
因为vi把箭头的↑↓←→自动转换为ABCD了,如果想改变光标的上下左右,必须得先按ESC↑↓←→
在这里插入图片描述
那这个时候我们发现我们错误的输入了ABCD,这时候一般要删除掉。如果按照我们平时的操作习惯可能说按Backspace来进行退格,但这时候发现我们的光标只是在C上闪烁,我们再输入别的字符,他只是一个字符替换,并不能删除。
在这里插入图片描述
ESC接着按xX,这就是删除的功能。指令模式下x表示向后删除一个字符 ,X表示向前删除一个字符。
大写的X的话,记得按CapLock切换到大写。

再有就是,回车是换行。
知道上面的就可以实现下面的效果了。
再按ESC输入:wq写入保存。
在这里插入图片描述
vi里面的操作总结一下大概就是:
输入指令的话就先ESC,接指令
编辑模式的话就在指令模式下输入a/i/r,再接着编辑文本


3. 指令汇总

这部分是对书上的引用,方便自己后面查询以及提供给有需要的人。

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

移动光标方法
指令 效果
h 或 向左方向键(←)光标向左移动一个字符
j 或 向下方向键(↓)光标向下移动一个字符
k 或 向上方向键(↑)光标向上移动一个字符
k 或 向上方向键(↑)光标向上移动一个字符
[Ctrl] + [f]屏幕“向下”移动一页,相当于 [Page Down]按键(常用)
[Ctrl] + [b]屏幕“向上”移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]屏幕“向下”移动半页
[Ctrl] + [u]屏幕“向上”移动半页
+光标移动到非空白字符的下一列
-光标移动到非空白字符的上一列
n+(space)那个 n 表示“数字”,例如 20 。按下数字后再按空白键,光标会向右移动这一列的 n 个字符。例如 20(space) 则光标会向后面移动 20 个字符距离。
0 或功能键[Home]这是数字“ 0 ”:移动到这一列的最前面字符处 (常用)
$ 或功能键[End]移动到这一列的最后面字符处(常用)
H光标移动到这个屏幕的最上方那一列的第一个字符
M光标移动到这个屏幕的中央那一列的第一个字符
L光标移动到这个屏幕的最下方那一列的第一个字符
G 移动到这个文件的最后一列(常用)
nGn 为数字。移动到这个文件的第 n 列。例如 20G 则会移动到这个文件的第 20 列(可配合 :set nu)
gg移动到这个文件的第一列,相当于 1G 啊! (常用)
n(Enter)n 为数字。光标向下移动 n 列(常用)
搜寻与取代
指令效果
/word向光标之下寻找一个名称为 word 的字串。例如要在文件内搜寻 vbird 这个字串,就输入 /vbird 即可! (常用)
?word向光标之上寻找一个字串名称为 word 的字串。
n这个 n 是英文按键。代表“重复前一个搜寻的动作”。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字串!
N这个 N 是英文按键。与 n 刚好相反,为“反向”进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示“向上”搜寻 vbird 。使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键字!
: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, X在一列字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是倒退键) (常用)
nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, “10x”。
dd删除光标所在的那一整列(常用)
nddn 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用)
d1G删除光标所在到第一列的所有数据
dG删除光标所在到最后一列的所有数据
d$删除光标所在处,到该列的最后一个字符
d0那个是数字的 0 ,删除光标所在处,到该列的最前面一个字符
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重做上一个动作。(常用)这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次,利用好这两个功能按键
. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点“.”就好了! (常用)

3.2 进入插入或取代的编辑模式

指令效果
i, I进入插入模式(Insert mode):i 为“从目前光标所在处插入”, I 为“在目前所在列的第一个非空白字符处开始插入”。 (常用)
a, A进入插入模式(Insert mode):a 为“从目前光标所在的下一个字符处开始插入”, A 为“从光标所在列的最后一个字符处开始插入”。(常用)
o, O进入插入模式(Insert mode):这是英文字母 o 的大小写。o 为“在目前光标所在的下一列处插入新的一列”; O 为在目前光标所在处的上一列插入新的一列!(常用)
r, R进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
[Esc]退出编辑模式,回到一般指令模式中(常用)

上面这些按键中,在 vi 画面的左下角处会出现“–INSERT–”或“–REPLACE–”的字样。有些没有,比如我演示的ubuntu系统。

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

命令行界面的储存、离开等指令
指令效果
:w将编辑的数据写入硬盘文件中(常用)
:w!若文件属性为“只读”时,强制写入该文件。不过,到底能不能写入, 还是跟你对该文件的文件权限有关啊!
:q离开 vi (常用)
:q!若曾修改过文件,又不想储存,使用 ! 为强制离开不储存盘案。注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有“强制”的意思~
:wq储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ这是大写的 Z 喔!若文件没有更动,则不储存离开,若文件已经被更动过,则储存后离开!
: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/vim的话其实主要在于运用,理论看再多,实际运用的时候想不起来的话,还是等于没看。还是要注重练习,熟能生巧。

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

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

相关文章

pycharm和virtualBox虚拟机的安装(包括本地环境和远程环境配置)

目录 一、安装时需要的软件二、安装virtualBox三、安装pycharm四、创建pycharm本地环境五、创建pycharm远程环境 一、安装时需要的软件 Pycharm,jetbrains-agent-latest破解包(破解pycharm);镜像文件ubuntu20,虚拟机virtualBox …

【Android】通过Profiling工具和adb确定app被系统杀死的原因

当您想要确定安卓App被系统杀死的原因时,可以通过以下步骤进行分析: 打开Android Studio中的Profiling工具 在您的项目中,打开Android Studio并进入Profiling工具。点击左上角的“Android Profiler”图标,选择“CPU”或“Memor…

【Linux】Linux编译器 gcc/g++的使用初识动静态链接库

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【Linux】…

chatgpt赋能python:Python处理DICOM文件

Python处理DICOM文件 DICOM (Digital Imaging and Communications in Medicine)是医疗图像和数据的标准,用于存储和交换医学图像和相关信息。在医疗领域中,DICOM文件是医生和医学技师进行诊断和治疗的必要条件。在本文中,我们将介绍如何使用…

Linux下配置Qt6安卓开发环境

安装JDK 选择自己定义JDK安装路径 点击如下图按钮 安装SDK 提示TLS初始化失败 由于HTTPS问题造成无法下载,暂用Android Studio来安装Android SDK 成功安装SDK 安装NDK与命令行工具 正在下载NDK及命令行工具 NDK与工具下载完成 配置QT的Android SDK路径 配置NDK路径 选择ND…

Nginx服务性能和安全优化(念念不忘,必没回响)

一、配置Nginx隐藏版本相关信息 1.隐藏版本号 修改 nginx.conf 文件,在http块中添加字段后,重载服务 获取报文信息并查看(浏览器查看或使用命令) 2.修改版本号及相关信息 如果做了上一步在nginx.conf 中添加了 server_tokens…

数据结构-二分查找

1.1 什么是算法? 定义 在数学和计算机科学领域,算法是一系列有限的严谨指令,通常用于解决一类特定问题或执行计算 In mathematics and computer science, an algorithm (/ˈlɡərɪəm/) is a finite sequence of rigorous instructions, …

【Spring Cloud Gateway】⑥SpringBoot3.x集成SpringDoc指南

文章目录 背景本地开发环境介绍pom.xml主要依赖application.yml效果预览动态生成swagger文档分组效果预览在线文档 背景 Spring Cloud Gateway使用Netty作为嵌入式服务器,并基于响应式Spring WebFlux。做为微服务网关,多个微服务把API挂在Gateway上&…

轻量实时操作系统学习(二)

306xH系列架构 主系统包含以下部件: maters:RISC-V CPU、DMA、CORESIGHTslaves:嵌入式SYSRAM、嵌入式Flash memory、系统外设 这些模块通过AMBA总线架构互连,如图所示。 TCM_BUS:此总线将RISC-V CPU的TCM接口与存…

STM32学习(十四)

低功耗 降低集成电路的能量消耗。 低功耗特性对用电池供电的产品: 更小电池体积(降低了大小和成本) 延长电池寿命 电磁干扰更小,提高无线通信质量 电源设计更简单,无需过多考虑散热问题 STM32具有运行、睡眠、停止和…

【SQL Server】数据库开发指南(八)高级数据处理技术 MS-SQL 事务、异常和游标的深入研究

本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计 【SQL Se…

Flutter 笔记 | Flutter 核心原理(七)The key is the key!

题外话 本文这个标题其实让我想起了电影《蝙蝠侠大战超人:正义黎明》中的一句话,在该片中,从未来穿越回来的闪电侠对蝙蝠侠发出警告: It’s Lois! She’s the key! 【布鲁斯,是露易丝&#xff…

chatgpt赋能python:Python增量备份:保障数据安全,提高效率

Python增量备份:保障数据安全,提高效率 现今,越来越多的企业和个人都需要使用计算机存储数据,这些数据可能是各种各样的,例如文件、数据库、邮件等等,这些数据的安全保障是至关重要的。 正是基于这样的背…

chatgpt赋能python:Python多行转一行:最简便的方法

Python多行转一行:最简便的方法 Python是一个既神奇又神奇(fully magical)的编程语言。但有时候,我们用Python编写的程序会产生多行代码,而需要把这些多行代码转换为一行以便于复制和粘贴。这种情况下,我们…

chatgpt赋能python:Python备份数据库——保障数据安全,防止数据丢失

Python备份数据库——保障数据安全,防止数据丢失 在现代社会,数据被称为新的石油,数据的意义愈发重要。数据的丢失可能会导致不可挽回的损失,给企业造成巨大的财务损失,更为重要的是企业形象的损失。备份数据是保护数据最好的途径…

chatgpt赋能python:Python奇偶求和函数

Python奇偶求和函数 Python是一种简单易学、高效的编程语言,具有丰富的库和工具,让程序员能够快速编写出各种各样的应用程序。Python中的函数可以让程序更加模块化,更加易于维护和扩展。其中,奇偶求和函数是一个很好的例子&#…

chatgpt赋能python:Python培训:成为一名高薪Python工程师

Python培训:成为一名高薪Python工程师 Python已成为当今最流行的编程语言之一,它广泛应用于人工智能、机器学习、数据科学和Web开发等各个领域。许多公司都在寻找经验丰富的Python工程师来开发他们的产品。如果你想成为一名高薪Python工程师&#xff0c…

创客匠人CEO蒋洪波:用门店思维做直播

互联网时代,转型线上做知识付费成为教育培训行业的主流,直播教学成为新型的教学模式受到了广泛认可。很多老师在线下培训深耕多年,知识储备丰富,但想要转型线上又缺少方法,缺少去改变的欲望,怕转型做线上直…

区块链的基本介绍

目录 1、简介 2、区块链的分类 2.1 公有链 2.2 联盟链 2.3 私有链 3、区块链特征 4、区块链结构 5、区块链对记账权利的分配方式 5.1 POW 5.2 PoS 5.3 DPoS 6、Defi、NFT、 gameFi 7、DAPP 7.1 DAPP 的核心要素 8、比特币 8.1 比特币简介 8.2 比特币数字签名…

白话ES搜索相关性问题

之前使用es,更多的是使用term查询,和agg聚合分析。对相关性关注较少。实际上es擅长的是做模糊搜索,相关性搜索。 ES是一个开源的通用的检索工具,能满足百分之八十的需求。相关性这个问题,是一个非常有意思的问题&#…