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

news/2024/7/5 14:20:09

文章目录

  • 前言:
  • 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://lihuaxi.xjx100.cn/news/1208445.html

相关文章

ARM体系结构和RAM的工程搭建、程序编写

目录 工程搭建 程序编写 带标志位的加法ADC ADCS 跳转指令B\BL 栈的应用->叶子函数的调用过程 栈的应用->非叶子函数的调用过程 异常中断产生指令 协处理器指令 伪操作 安装交叉编译工具 Makefile 宏定义 预编译指令 申请一个字的空间 .word 申请多个字节空间 嵌套编程 方…

如何在 JavaScript 中创建自定义警告框

本文将介绍如何使用 jQuery UI、SweetAlert2 和自定义警报功能在 JavaScript 中创建自定义警报框。 使用 jQuery UI 创建自定义警告框 我们可以使用 jQuery UI 来模仿 JavaScript 本机 alert() 函数的功能。 尽管 jQuery UI 有很多 API,您可以使用它的 dialog() AP…

Jumpserver 2.28.8使用分享

目录 一、Jumpserver 介绍 1、跳板机和堡垒机理解 1.1、跳板机 1.2、堡垒机 2、jumpserver简介 二、Jumpserver 安装部署 2.1、部署规划 2.2 、安装要求 JumpServer 环境要求: 2.3、安装方法介绍 官方提供了多种安装方法 三、Jumpserver平台使用 3.1、Admin登录 3.…

汇总123

纯概述,概念题 结合代码片段分析时间复杂度,空间复杂度 画搜索树(第五章): 深度优先宽度优先活结点法 什么是算法?算法的定义? 通常把解决问题的确定方法和有限步骤称为算法,对于计…

互联网野蛮生长,但金三银四好像消失了!

每次看到程序员字眼,就是秃头,肥胖,宅男、996,程序员,但是耐不住工资高啊!但只有程序员才知道,干IT的,都有一个自己的程序员梦,梦想着能用 “代码改变世界”。 代码能不…

选购keithley2400 200V,1A,20W吉时利2400数字源表

Keithley 2400 源表,200V,1A,20W 产品概览Keithley 2400 SourceMeter 是一款 20W 仪器,允许提供和测量从 5V(源)和 1V(测量)到 200V DC 的电压以及从 10pA 到 1A 的电流。万用表功能…

第17节:cesium 图元聚合基础教程(含源码+视频)

相关代码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><vc-layer-imagery><vc-pr

TreeSet 使用匿名类添加Student实体类数据 唯一按升序排序

student实体类代码如下所示&#xff1a; package com.test.Test10;public class StudentNiMingLei{private int age;private String name;public int getAge() {return age;}public void setAge(int age) {this.age age;}public String getName() {return name;}public void …