Linux笔记:文本编辑器vi基础使用

2023-11-04

目的

vi是几乎所有Unix/Linux系统下都自带的文本编辑器,有点类似于window上的记事本。如果用惯了现代的一些文本编辑器或是IDE这些的话vi是非常不好用的,但是vi作为文编编辑器而言基本功能还是齐全的。有时候如果需要稍微修改点东西,但又没有装别的文本编辑器的话,拿出vi用用其实也蛮不错。这篇文章将记录下vi的一些基础使用笔记。

工作模式

在这里插入图片描述
vi主要有三种工作模式,从Shell中使用 vi filename(文件名) 就可以使用vi打开该文件,打开后进入默认的模式,这个时候你是无法向该文件输入内容的,必须要进入插入模式才能输入内容(这个在下面会介绍)。

在默认模式下输入 :(冒号) 就可以进入命令行模式,此时再接着输入 q! (即完整输入为:q!),接着按下回车,就可以退出vi编辑器返回Shell。

在任何模式下只要按 esc 键就会返回默认模式(这对于不知道当前在那种哪种模式的情况下比较有用)。

命令行模式

先介绍下命令行模式,这个模式主要用于保存、退出、对编辑器进行设置、窗口切分等功能,常用功能操作如下:

命令 说明
:w 保存,如果使用:w filename则可以保存为其它文件
:q 退出
:q! 不保存退出
:wq 保存并退出
:set nu 显示行号,这个功能比较有用
:set nonu 不显示行号
:! command 暂时离开编辑器在Shell下执行命令
:sp filename 分隔成上下两个窗口打开新文件
分隔后使用ctrl+w,然后w切换窗口,使用分隔后使用ctrl+w,然后q关闭窗口
:vsp filename 分隔成左右两个窗口打开新文件

在这里插入图片描述

默认模式

默认模式主要处理几类事务:光标移动、屏模滚动、选择复制黏贴与删除、搜索与替换、撤销与重复操作等。

光标移动

光标移动命令 说明
h 或 向左箭头键[←] 光标向左移动一个字符
先输入数字n再输入指令可以移动n个字符
j 或 向下箭头键[↓] 光标向下移动一个字符
先输入数字n再输入指令可以移动n个字符
k 或 向上箭头键[↑] 光标向上移动一个字符
先输入数字n再输入指令可以移动n个字符
l(小写L) 或 向右箭头键[→] 光标向右移动一个字符
先输入数字n再输入指令可以移动n个字符
G 光标移动到这个文件的最后一行
nG 或 ngg 光标移动到这个文件第n行
gg 光标移动到这个文件的第一行
0 或功能键[Home] 光标移动到这一行的最前面字符处
$ 或功能键[End] 光标移动到这一行的最后面字符处

屏模滚动

屏模滚动命令 说明
[Ctrl] + [f] 或功能键[Page Down] 屏幕向下移动一页
[Ctrl] + [b] 或功能键[Page Up] 屏幕向上移动一页
[Ctrl] + [d] 屏幕向下移动半页
[Ctrl] + [u] 屏幕向上移动半页

选择复制黏贴与删除

选择复制黏贴与删除命令 说明
v 按下改键后可以移动光标进行选择字符,后续可以使用y、p、x等进行操作
y 复制已选中的的字符
yy 复制光标所在行
使用nyy复制光标处开始的n行
p 将复制的内容黏贴到光标所在行的下一行
P 将复制的内容黏贴到光标所在行的上一行
x 删除光标处或已选中的的字符
使用nx删除光标处开始的n个字符
dd 删除光标所在行
使用ndd删除光标处开始的n行

搜索与替换

搜索与替换命令 说明
/string 从光标处开始向后寻找字符串string
?string 从光标处开始向前寻找字符串string
n 重复上一条检索命令
N 反向重复上一条检索命令
:n1,n2s/word1/word2/g 在第 n1 与 n2 行之间寻找word1这个字符串,并将该字符串取代为word2
:100,200s/null/NULL/g 表示在100到200行之间搜寻null并取代为NULL
:1,$s/word1/word2/g 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2

撤销与重复

撤销与重复命令 说明
u 撤销前一个动作
. 重复前一个动作

插入模式

在默认模式下按下键盘上特定的键就可以进入插入模式,进入插入模式后输入的所有内容都将插入到原文本中或是替换原文本。进入插入模式的指令如下:

命令 说明
i 从目前光标处插入
I(大写i) 从目前所在行的第一个非空格符处开始插入
a 从目前光标所在的下一个字符处开始插入
A 从光标所在行的最后一个字符处开始插入
o 从目前光标所在的下一行处插入新的一行
O 从目前光标所在的上一行处插入新的一行
r 取代光标所在的那一个字符一次
可以在该命令之前加上数字 n,表示将从当前字符开始的 n 个字符替换为提供的字符
R 依次取代光标所在的文字,直到按下 ESC 为止

总结

vi的基础使用还是很简单的,没有特殊需求或是喜好的话基本上了解这些基础的使用就够了。更多内容可以参考下面链接:
http://c.biancheng.net/vi/
https://www.cnblogs.com/7788IT/p/11626002.html

在Linux上还有个编辑器叫vim,简单的理解这个东西是vi的加强版,在原有vi的基础上增加了一些实用的功能,当然基本的操作还是和vi一样的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux笔记:文本编辑器vi基础使用 的相关文章

随机推荐

  • Appium自动化框架从0到1之 Driver配置封装

    不管是调用模拟器 还是调用真机 都需要准备一些driver的参数 以便被调用 思想 我们把driver配置信息 封装到yaml文件 然后通过读取yaml文件的内容 调用其driver信息 为了更直观的看如何封装 我们直接上代码 caps y
  • shell单双引号嵌套+变量

    metadata annotations volume kubernetes io selected node TARGET NODE
  • 云计算中微服务是什么Java之命名、标示符、变量

    微服务架构是一种架构模式 它提倡将单一应用程序划分成一组小的服务 服务之间相互协调 互相配合 为用户提供最终价值 每个服务运行在其独立的进程中 服务和服务之间采用轻量级的通信机制相互沟通 每个服务都围绕着具体的业务进行构建 并且能够被独立的
  • 【笔试强训选择题】Day34.习题(错题)解析

    作者简介 大家好 我是未央 博客首页 未央 303 系列专栏 笔试强训选择题 每日一句 人的一生 可以有所作为的时机只有一次 那就是现在 文章目录 前言 一 Day34习题 错题 解析1 总结 前言 一 Day34习题 错题 解析 1 解析
  • 升级 Linux 系统中的 Python 版本

    升级 Linux 系统中的 Python 版本 Python 是一种非常流行的编程语言 广泛应用于各种领域 包括 Web 开发 数据分析等 而对于 Linux 系统来说 Python 更是一个必须的组件 在系统运行和管理中都扮演了重要的角色
  • 大模型Founation Model

    一 背景 自从chatgpt gpt4以特别好的效果冲入人们的视野中 也使得AI产业发生了巨大变革 从17年以来的bert 将AI的各种领域都引入bert类的fine tune方法 来解决单个领域单个任务的一一个预训练模型 在学术界和工业界
  • 谈谈Linux epoll惊群问题的原因和解决方案

    近期排查了一个问题 epoll惊群的问题 起初我并不认为这是惊群导致 因为从现象上看 只是体现了CPU不均衡 一共fork了20个Server进程 在请求负载中等的时候 有三四个Server进程呈现出比较高的CPU利用率 其余的Server
  • 如何区分成员函数和构造函数?

    在面向对象编程中 成员函数和构造函数是类中定义的两种不同类型的函数 构造函数是一个特殊的成员函数 用于创建并初始化类的对象 构造函数的名称必须与类的名称相同 它没有返回值 并且在对象创建时自动调用 构造函数可以有参数 这些参数用于初始化类的
  • 字符串查找之 KMP 算法思路讲解和代码实现

    算法介绍 KMP 算法是一种改进的字符串匹配算法 由 D E Knuth J H Morris 和 V R Pratt 提出的 KMP 算法的核心是利用匹配失败后的信息 尽量减少模式串与主串的匹配次数以达到快速匹配的目的 KMP 算法的时间
  • lab值意义_色差仪lab值如何分析

    色差仪在涂料 建材 油漆 涂料 纺织印染 油墨 塑料 染料颜料制造等表面色料工业的配色方面有着广泛的应用 也称为CIELAB均匀色空间 本文深圳京联泰科技给大家就色差仪LAB值如何分析作说明 L 亮度 轴表示黑白 0为黑 100为白 a 红
  • 树莓派常用命令

    刷系统 格式化 这样就ok了 开启ssh 刷完系统在boot盘跟目录创建文件ssh就可以了小写不需要后缀 汉化 sudo raspi config 选4 再选1 然后把 4个前面是 zh cn的 用 空格选中 然后 ok 选zh CN ut
  • 科研无人机平台P600进阶版,突破科研难题!

    随着无人机技术日益成熟 无人机的应用领域不断扩大 对无人机研发的需求也在不断增加 然而 许多开发人员面临着无法从零开始构建无人机的时间和精力压力 同时也缺乏适合的软件平台来支持他们的开发工作 为了解决这个问题 我们特别开发了科研无人机平台P
  • 访问私有变量或方法

    本文主要介绍一下如何访问类的私有成员变量以及类的私有方法 这里以下面这个类来举例 interface HomeController UIViewController NSString name2 property nonatomic cop
  • 分页插件(jquery.pagination.js)简单案例

    分页插件 jquery pagination js 前言 开发中需要展示数据操作记录 但数量是未知的 使用该插件 实现分页切换页码的功能 1 使用 引入文件 先引入jQuery 再引入pagination组件 2 具体效果 3 html代码
  • ubuntu挂载Windows共享文件夹

    1 windows下设置shared文件夹为共享文件夹 2 linux下执行命令 sudo apt get install cifs utils samba client sudo mount t cifs o username dhc p
  • linux下搭建测试环境

    linux应用服务器 腾讯云服务器 centos7 传送文件上传到 linux服务器 winscp 文件传输工具 jdk及tomcat安装 本服务器安装的是jkd1 8 tomcat8 mysql 5 7 下载jkd1 8 https ww
  • Mysql在大型网站的应用架构演变

    摘要 本文主要描述在网站的不同的并发访问量级下Mysql架构的演变历程 架构的可扩展性往往和并发是息息相关 没有并发的增长 也就没有必要做高可扩展性的架构 常用的扩展手段主要有Scale up和Scale out两种 前者为纵向扩展 主要通
  • Java八大基本数据类型

    Java八大基本数据类型 开发工具与关键技术 MyEclipse 10 java 作者 刘东标 撰写时间 2019 04 04 Java语言提供了八种基本类型 六种数字类型 四个整数型 两个浮点型 一种字符类型 还有一种布尔型 1 数据类型
  • Windows下创建进程简介

    正在执行的应用程序称为进程 进程不仅仅是指令和数据 它还有状态 状态是保存在处理器寄存器中的一组值 如当前执行指令的地址 保存在内存中的值 以及唯一定义进程在任一时刻任务的所有其他值 进程与应用程序的一个重要的区别在于 进程运行时 进程的状
  • Linux笔记:文本编辑器vi基础使用

    文章目录 目的 工作模式 命令行模式 默认模式 光标移动 屏模滚动 选择复制黏贴与删除 搜索与替换 撤销与重复 插入模式 总结 目的 vi是几乎所有Unix Linux系统下都自带的文本编辑器 有点类似于window上的记事本 如果用惯了现