Ubuntu vim 以十六进制的形式显示文件内容

news2024/9/28 21:26:33

Vim的介绍

Vim(Vi IMproved)是一款开源的文本编辑器,是 Unix 系统中经典的 vi 编辑器的改进版本。它具有强大的功能和高度可定制性,被广泛应用于程序开发、系统管理和文本编辑等领域。

以下是 Vim 的一些主要特点和功能:

  • 模态编辑:Vim 包含多种编辑模式,包括普通模式、插入模式、命令行模式等。在普通模式下,可以执行各种编辑操作和移动光标等操作;在插入模式下,可以输入文本;在命令行模式下,可以输入命令或执行扩展功能。
  • 强大的编辑功能:Vim 提供了丰富的编辑功能,如复制粘贴、撤销重做、查找替换、全局替换、宏录制播放等。它还支持语法高亮、自动缩进、自动补全等功能,提高了编辑效率。
  • 多窗口和分屏:Vim 支持同时打开多个文件,并可以在窗口之间切换或分割窗口进行同时编辑,便于对多个文件进行操作和比较。
  • 可扩展性:Vim 支持插件和脚本编写,用户可以自定义和扩展编辑器的功能和行为,满足个性化的需求。
  • 跨平台支持:Vim 可以在多种操作系统上运行,包括 Unix/Linux、Windows、Mac 等。

Vim 是一个非常强大和灵活的文本编辑器,但也有一定的学习曲线。对于初次接触 Vim 的用户来说,可能需要一些时间来熟悉它特有的编辑方式和命令。然而,一旦掌握了 Vim 的基本操作和常用功能,它将成为你高效编辑文本的得力工具。

为什么要使用 vim

vim 是命令行界面的编辑工具,上手非常困难,那么为什么还要使用 vim 呢?和图形界面的文本编辑工具相比,vim 确实不怎么方便,但是 vim 却有着很大的用处。比如,在没有图形界面的服务器上,想要进行文本编辑操作,就不得不使用 vim。服务器省去了图形界面,主要有以下几个原因:

  • 资源利用:图形界面需要大量的系统资源(如内存和处理器),这对于服务器来说是宝贵且有限的资源。通过省略图形界面,服务器可以将更多的系统资源用于运行服务和应用程序,提高性能和响应速度。
  • 安全性:图形界面引入了许多潜在的安全风险。图形界面提供了更多的用户交互和操作选项,容易导致误操作或不当配置,从而增加了系统遭受攻击的可能性。通过远程登录并使用基于文本的终端界面,管理员可以更好地控制和保护服务器,减少潜在的安全漏洞。
  • 稳定性和可靠性:图形界面往往比文本界面更复杂,包含更多的代码和组件。这增加了系统崩溃、冲突和不稳定的风险。通过仅使用文本界面,服务器可以更加稳定和可靠地运行,并且更容易进行故障排除和维护。
  • 自动化和脚本化:服务器环境通常需要进行大规模的配置管理,以支持自动化部署、监控和维护。文本界面提供了更方便的方式来执行自动化任务和编写脚本,例如使用 Shell 脚本或配置管理工具(如 Ansible、Chef、Puppet 等)。这有助于提高效率并保持一致性。

Ubuntu 安装 Vim

Ubuntu 安装 Vim 的命令:sudo apt-get install vim

使用 Vim

使用 vim 打开文件:vim 文件名,如果该文件在当前目录下已经存在,则打开读取其中的内容,如果当前目录下不存在该文件,则创建该文件。

例如:
在这里插入图片描述
按下回车键后会进入vim的编辑界面:
在这里插入图片描述在当前页面按下 ai 进入编辑模式,此时左下角会出现
-- INSERT --
在这里插入图片描述Esc 键退出编辑模式。

vim 的基础命令

以下是 Vim 的一些基础命令:

  1. 进入编辑模式:

    • i:在光标所在位置插入文本。
    • a:在光标后插入文本。
    • o (注意,这里是小写字母o,下面是大写字母O):在当前行下方插入新行,并进入插入模式。
    • O:在当前行上方插入新行,并进入插入模式。
  2. 退出编辑模式:

    • <Esc>:退出插入模式,回到命令模式。
  3. 保存和退出:

    • :w:保存文件。
    • :q:退出 Vim。
    • :wq:保存文件并退出 Vim。
    • q!:强制退出。
  4. 光标移动:

    • h:向左移动一个字符。
    • j:向下移动一行。
    • k:向上移动一行。
    • l:向右移动一个字符。
    • gg:跳转到文件的开头。
    • G:跳转到文件的末尾。
  5. 删除文本:

    • x:删除光标所在位置的字符。
    • dd:删除整行。
  6. 复制和粘贴:

    • yy:复制一整行。
    • p:粘贴剪贴板中的内容。
  7. 撤销和重做:

    • u:撤销上一次操作。
    • <Ctrl + r>:重做撤销的操作。

这只是 Vim 命令的一小部分,Vim 还具有更多强大的功能和命令。你可以通过在命令模式下键入 :help 来查看 Vim 的帮助文档,其中包含了更详细的命令说明和用法示例。

vim 以十六进制的形式显示文件内容

在 vim 的编辑界面,按下英文版的 : 冒号键,然后输入命令 %!xxd 按下回车后,会将文件内容以十六进制的形式输出。

在这里插入图片描述在这里插入图片描述使用命令 %!xxd -r 退出十六进制编辑模式,回到默认的编辑模式。

今天发现了一个有趣的现象

今天我使用 vim 以十六进制的形式查看了一个 png 文件,该文件的 properties 如下:总共是46568个字节
在这里插入图片描述

但是使用 vim 查看后发现文件的末尾多了一个字节 0a 如下:

在这里插入图片描述
查了一点资料:
Vim以十六进制形式查看文件时,末尾多出的"0a"代表ASCII码中的换行符。在Unix/Linux系统下,文本文件的行结束符通常是"\n"(ASCII码为0a),而在Windows系统中则是"\r\n"(ASCII码为0d 0a)。

当你使用Vim以十六进制形式查看文件时,Vim会将每个字符转换为对应的ASCII码来显示。换行符被显示为"0a",这是因为正常情况下,在十六进制模式下,Vim会按照内容的字节进行显示,其中包括了文本中的控制字符。

所以,当你在Vim中查看文件的十六进制表示时,末尾的"0a"实际上是文本文件最后一行的换行符。

对于图片文件来说,它们通常是以二进制形式保存的。在二进制文件中,并没有像文本文件一样使用换行符来表示行结束。

因此,当你查看一个图片文件的文件大小时,无论其大小是多少,文件的末尾并不会有固定的 0a 字节。这也适用于其他二进制文件,如音频、视频等。

然而,当你使用 Vim 这样的文本编辑器打开一个二进制文件时,默认情况下 Vim 会将其作为文本文件处理,并根据编码规则解析其中的字符。在解析过程中,Vim 可能会添加或修改某些字符。

所以,在你使用 Vim 打开图片文件后,即使图片文件本身的末尾没有 0a 字节,但由于 Vim 的处理和显示方式,你可能会看到文件末尾多出了 0a 字节的视觉效果。实际上,这并不是文件内容发生了改变,而是 Vim 将其以文本方式展示的结果。

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

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

相关文章

CRC Principle and Implementation Method(Java C)

CRC原理和程序实现方法1_哔哩哔哩_bilibili 其实原理很简单 但是我想了两个小时。。 收获的是原来一些复杂的运算都可以通过位运算来实现。 实现思路 public class CRC16Calculator {public static String CRC16(byte[] bytes) {int CRC 0x0000ffff;int POLYNOMIAL 0x0000a…

【复习3-5天的内容】【我们一起60天准备考研算法面试(大全)-第七天 7/60】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

Ubuntu Linux系统下创建Git项目并push到远程Github

首先在本地创建git仓库 jasminelhl:~/prj$ mkdir Github-test jasminelhl:~/prj$ cd Github-test jasminelhl:~/prj/Github-test$ git init 提示&#xff1a;使用 master 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中 提示&#xff1a;配置使用初始分支名&a…

RabbitMQ的可视化管理页面简介

模块 描述 Overview 概览 Connections 查看连接情况 Channels 信道(通过)情况 Exchanges 交换机(路由)情况,默认四类七个 Queues 消息队列情况 Admin …

高并发架构实战:从需求分析到系统设计

很多软件工程师的职业规划是成为架构师&#xff0c;但是要成为架构师很多时候要求先有架构设计经验&#xff0c;而不做架构师又怎么会有架构设计经验呢&#xff1f;那么要如何获得架构设计经验呢&#xff1f; 一方面可以通过工作来学习&#xff0c;观察所在团队的架构师是如何…

网络安全工程师工作内容具体是什么?

在知乎看到一个帖子&#xff1a;网络安全工程师或者网络安全研究员的工作内容具体是什么&#xff1f;或者说他们的一天具体是怎么度过的&#xff0c;是否和程序员一样编码做项目&#xff1f; Neeao的回复&#xff1a; 只在甲方互联网公司呆过&#xff0c;简单说下甲方的情况。…

“千模千测”——针对大语言模型认知能力的高效测试方法

©PaperWeekly 原创 作者 | 庄严、宁雨亭 单位 | 中国科学技术大学BASE课题组 论文标题&#xff1a; Efficiently Measuring the Cognitive Ability of LLMs: An Adaptive Testing Perspective 作者&#xff1a; Yan Zhuang, Qi Liu, Yuting Ning, Weizhe Huang, Rui Lv, …

Docker 安装Nginx

查看Nginx镜像并拉取镜像&#xff1a; [rootlocalhost nginx]# docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx …

使用Mybatis添加记录错误

使用Mybatis添加记录错误&#xff1a;Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column ‘id’ at row 1 分析&#xff1a;添加记录的id值超出范围&#xff0c;查看JavaBean中的ID&#…

00-C++-ccache使用

ccache使用 前言ccache是什么ccache使用 前言 在编译大型C项目代码时编译时间比较长&#xff0c;那么可以使用ccache来加速代码的编译&#xff0c;一起来学习吧。 ccache是什么 ccache是一个编译器缓存。它通过缓存以前编译的结果并检测何时再次进行相同的编译来加快重新编译…

201天,太平洋保险核心系统迁至国产数据库OceanBase稳定运行

7月7日&#xff0c;2023全球数字经济大会上&#xff0c;国内首个全险种核心迁移至国产数据库的系统正式亮相。 因支撑未来海量并发、海量数据业务发展需求&#xff0c;太平洋保险&#xff08;集团&#xff09;股份有限公司&#xff08;以下称“太平洋保险”&#xff09;与Ocea…

使用OpenCV的viz模块创建和控制一个3D可视化窗口

#include <opencv2/viz.hpp> #include <iostream>using namespace cv; using namespace std;int main() {

神经网络解决预测问题(以共享单车预测为例)

背景:大约从2015年起,共享单车席卷了大部分城市。共享单车在给人们带来便利的同时,也存在一些问题:单车的分布很不均匀。比如在早高峰的时候,一些地铁口往往聚集着大量的单车,而到了晚高峰却很难找到一辆单车了。那么如何解决共享单车分布不均匀的问题呢?目前,共享单车…

DevOps系列文章 之 SnakeYAML解析与序列化YAML

1、简述 如何使用SnakeYAML库将YAML文档转换为Java对象&#xff0c;以及JAVA对象如何序列化为YAML文档。 在DevOps平台系统中是基础的能力支持&#xff0c;不管是spring boot 的配置还是K8S 资源清单yaml 2、项目设置 要在项目中使用SnakeYAML&#xff0c;需要添加Maven依赖…

基于go-zero的api服务刨析并对比与gin的区别

zero路由与gin的区别 官网go-zero go-zero是一个集成了各种工程实践的微服务框架&#xff0c;集多种功能于一体&#xff0c;如服务主要的API服务&#xff0c;RPC服务等。除了构建微服务工程外&#xff0c;zero也是一款性能优良的web框架&#xff0c;也可以构建单体web应用。 …

并行计算框架Polars、Dask的数据处理性能对比

在Pandas 2.0发布以后&#xff0c;我们发布过一些评测的文章&#xff0c;这次我们看看&#xff0c;除了Pandas以外&#xff0c;常用的两个都是为了大数据处理的并行数据框架的对比测试。 本文我们使用两个类似的脚本来执行提取、转换和加载(ETL)过程。 测试内容 这两个脚本主…

【Linux】-Linux部署Javaweb项目

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Linux】 分享: 屋檐如悬崖 风铃如沧海 我等燕归来 时间被安排 演一场意外 你悄然走开 故事在城外 浓雾散不开 看不清对白 你听不出来 风声不存在 是我在感慨 梦想来是谁在窗台 …

【服务器】Python一行命令搭建HTTP服务器并外网访问 - 内网穿透

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自cpolar极点云文章&#xff1a;【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透」…

【专题速递】音频生成、TTS和AIGC在音乐上的运用

// AIGC的发展为音频带来了什么&#xff1f;AIGC如何赋能音乐创作&#xff1f;如何识别虚假音频&#xff1f;TTS可以在哪种场景下解决特定问题&#xff1f;7月29日LiveVideoStackCon2023上海站音频新体验专场&#xff0c;为您解答。 音频新体验 随着多媒体和通信网络技术的不…

开利网络受邀参与广州三会企业数字化转型专题研讨会

​7月6日&#xff0c;开利网络受邀出席由广州三会于广州市黄埔区组织的“广州三会第六届理事会第八次会长联席会议”&#xff0c;并进行了主题为“企业数字化转型如何推动企业价值再造&#xff1f;”的专题分享会&#xff0c;为各位参会来宾分享企业数字化转型常见误区及数字化…