当前位置: 首页 > news >正文

Ubuntu基础-vim编辑器

目录

前言:

一. 安装

二. 配置

三. 基本使用

1.使用 Vim 编辑文本文件

2.代码编辑

3.多窗口编辑

四. 总结


前言:

Vim 是从 VI 发展出来的一个文本编辑器,具有代码补充、错误跳转等功能,在程序员中被广泛使用。它的设计理念是命令的组合,通过各种文本间移动、跳转命令与其他普通模式的编辑命令灵活组合,可以更高效地进行文本编辑。

Vim 常见的模式有普通模式、插入模式、命令模式和可视模式。Vim 启动时进入普通模式,在其他模式下按下 Esc 键可回到普通模式。在普通模式下,按下 i、I、o、O、a、A、r、R 等键可进入插入模式,在插入模式下可进行文本编辑。在普通模式下,按下:键可进入命令模式,在命令模式下可执行查找、存盘、替换字符等操作。在普通模式下,按下 v 键可进入可视模式,可视模式相当于高亮选取文本后的普通模式,可视模式具有子模式,以行为单位进行选取的可视行模式,使用 V 键进入;和以块为单位进行选取的可视块模式,使用 Ctrl+v 键进入。

一. 安装

在 Ubuntu 系统中可以使用以下命令安装 Vim:

  1. 打开终端;
  2. 输入sudo apt install vim命令并按下回车键;
  3. 等待安装完成。

安装完成后,可以在终端中输入vim命令打开 Vim 编辑器。

输入vim,安装成功,会显示如下页面

二. 配置

" 设置显示行号
set nu" 设置缩进为 4 个空格
set tabstop=4
set shiftwidth=4
set expandtab" 开启语法高亮
syntax on" 显示状态栏
set laststatus=2" 开启自动缩进
set autoindent" 增强搜索匹配显示
set hlsearch" 不备份文件
set nobackup

没有的话 直接新建一个

vim ~/.vimrc

配置之后的效果展示

三. 基本使用

Vim 有多种工作模式,以下是一些基本使用方法:

  • 普通模式:打开 Vim 后默认进入普通模式,可使用方向键或hjkl键移动光标,使用x键删除字符,使用dd命令删除整行;
  • 插入模式:在普通模式下,按下iao等键可进入插入模式,此时可输入文本;
  • 命令模式:在普通模式下,输入:进入命令模式,可执行保存、退出、查找、替换等操作;
  • 可视化模式:在普通模式下,按下v键进入可视化模式,可选择文本进行复制、粘贴、删除等操作;
  • 替换模式:在普通模式下,按下R键进入替换模式,可替换文本。

1.使用 Vim 编辑文本文件

  • 打开终端,输入 vim 文件名 来打开指定的文本文件。如果文件不存在,Vim 会创建一个新的空文件。

        

  • 进入 Vim 后,默认处于普通模式。
  • 要进入插入模式来编辑文本,可以按 i(在当前光标位置前插入)、a(在当前光标位置后插入)、o(在当前行下一行插入新行并进入插入模式)等键。
  • 在插入模式下进行文本的输入、修改等操作。
  • 编辑完成后,按 Esc 键回到普通模式。
  • 在普通模式下,可以进行删除、复制、粘贴等操作,例如 dd 可删除当前行,yy 可复制当前行。
  • 若要保存文件,在普通模式下输入 :w 。
  • 若要退出 Vim ,输入 :q 。如果想保存并退出,输入 :wq 。如果有未保存的更改且不想保存直接退出,输入 :q! 。

2.代码编辑

以下是使用 Vim 进行代码编辑的一些常见操作和示例:

缩进和格式化

  • 可以使用 = 命令对选中的代码块进行自动缩进。

代码折叠

  • Vim 支持代码折叠,方便查看和管理大型代码块。

语法高亮

  • 不同编程语言会有相应的语法高亮显示,使代码结构更清晰。

快速移动

  • 比如使用 Ctrl+f 向前翻页, Ctrl+b 向后翻页。

查找和替换

  • 在命令模式下输入 /要查找的代码片段 进行查找。

在普通模式下使用=;

格式化

语法高亮

3.多窗口编辑

在 Vim 中,可以使用以下命令进行多窗口编辑:

  • :sp:split:水平分割窗口,在当前窗口下方打开一个新窗口,并显示相同的缓冲区内容。
  • :vs:vsplit:垂直分割窗口,在当前窗口右侧打开一个新窗口,并显示相同的缓冲区内容。
  • :new:打开一个新的窗口,并显示一个空的缓冲区。

例如,要同时编辑两个文件,可以使用以下命令:

  • vim file1 file2:在启动 Vim 时同时打开两个文件,每个文件占用一个窗口。
  • :sp file2:在当前窗口中打开文件file2,并水平分割窗口。
  • :vs file2:在当前窗口中打开文件file2,并垂直分割窗口。

在多个窗口之间切换,可以使用以下快捷键:

  • Ctrl+w+方向键:按方向键切换到前/下/上/后一个窗口。
  • Ctrl+w+h/j/k/l:切换到左/下/上/右边的窗口。
  • Ctrl+ww:依次向后切换到下一个窗口。

要调整窗口大小,可以使用以下快捷键:

  • Ctrl+w+:增加当前窗口的高度。
  • Ctrl+w-:减少当前窗口的高度。
  • Ctrl+w+>:增加当前窗口的宽度。
  • Ctrl+w+<:减少当前窗口的宽度。

要关闭当前窗口,可以使用以下命令:

  • :q:关闭当前窗口。
  • :qa:关闭所有窗口。

四. 总结

Vim 是一款功能强大且高度可定制的文本编辑器,具有以下主要特点和优势:

主要特点

  • 多种操作模式:包括普通模式、插入模式、命令模式等,不同模式下有特定的操作和功能。
  • 高效的编辑:提供了众多快捷键和命令,可快速移动光标、编辑文本、删除、复制、粘贴等。
  • 强大的搜索和替换:能进行精确的文本搜索和复杂的替换操作。
  • 语法高亮:支持多种编程语言的语法高亮显示,增强代码可读性。
  • 代码折叠:方便管理大型代码块。

优势

  • 轻量级:占用资源少,启动速度快。
  • 跨平台:可在多种操作系统上运行。
  • 可深度定制:通过修改 .vimrc 文件可以根据个人需求配置各种功能和外观。
  • 高度灵活:适应不同用户的工作方式和习惯,从新手到专业用户都能找到适合的使用方式。

总之,Vim 虽然有一定的学习曲线,但熟练掌握后能极大地提高文本编辑效率。

相关文章:

Ubuntu基础-vim编辑器

目录 前言: 一. 安装 二. 配置 三. 基本使用 1.使用 Vim 编辑文本文件 2.代码编辑 3.多窗口编辑 四. 总结 前言: Vim 是从 VI 发展出来的一个文本编辑器&#xff0c;具有代码补充、错误跳转等功能&#xff0c;在程序员中被广泛使用。它的设计理念是命令的组合&#xff…...

Java 网站开发入门指南:如何用java写一个网站

Java 网站开发入门指南&#xff1a;如何用java写一个网站 Java 作为一门强大的编程语言&#xff0c;在网站开发领域也占据着重要地位。虽然现在 Python、JavaScript 等语言在网站开发中越来越流行&#xff0c;但 Java 凭借其稳定性、可扩展性和丰富的生态系统&#xff0c;仍然…...

Armbian OS(基于ubuntu24) 源码编译mysql 5.7

最近弄了个S905X3的盒子刷完Armbian OS &#xff08;基于ubuntu24&#xff09;&#xff0c;开始折腾Arm64之旅。第一站就遇到了MySQL的问题&#xff0c;由于MySQL没有提供Arm64版本&#xff0c;又不想塞Docker镜像&#xff0c;因此选择源码来编译MySQL5.7。下面记录详细过程和遇…...

React+TS前台项目实战(六)-- 全局常用组件Button封装

文章目录 前言Button组件1. 功能分析2. 代码注释说明3. 使用方式4. 效果展示&#xff08;1&#xff09;有加载动画&#xff0c;执行promise函数&#xff08;2&#xff09;无加载动画&#xff0c;执行click事件 总结 前言 今天这篇主要讲全局按钮组件封装&#xff0c;可根据UI设…...

Vite支持的React项目使用SASS指南

前言 在现代前端开发中&#xff0c;SASS是一种广受欢迎的CSS扩展语言&#xff0c;它提供了许多实用功能&#xff0c;如变量、嵌套、部分和混合等。 本教程将指导您在一个使用Vite作为构建工具的React项目中如何配置和使用SASS。 使用步骤 1、创建一个Vite React项目 首先确…...

实验12 路由重分布

实验12 路由重分布 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 在大型网络的组建过程中&#xff0c;隶属不同机构的网络部分往往会根据自身的实际情况来选用路由协议。例如&#xff0c;有些网络规模很小&#xff0c;为了管理简单&…...

version-manager最好用的SDK版本管理器,v0.6.2发布

项目地址&#xff1a;https://github.com/gvcgo/version-manager 中文文档&#xff1a;https://gvcgo.github.io/vdocs/#/zh-cn/introduction 功能特点&#xff1a; 跨平台&#xff0c;支持Windows&#xff0c;Linux&#xff0c;MacOS支持多种语言和工具&#xff0c;省心受到…...

MFC工控项目实例之三theApp变量传递对话框参数

承接专栏《MFC工控项目实例之二主菜单制作》 用theApp变量传递对话框参数实时改变iPlotX坐标轴最小值、最大值。 1、新建IDD_SYS_DATA对话框&#xff0c;类名SYS_DATA。 三个编辑框IDC_EDIT1、IDC_EDIT2、IDC_EDIT3变量如图 2、SEAL_PRESSURE.h中添加代码 #include "re…...

C# OpenCvSharp 图像处理函数-图像拼接-hconcat、vconcat、Stitcher

在图像处理和计算机视觉领域,图像拼接是一个常见的操作。OpenCvSharp是一个用于.NET平台的OpenCV封装库,可以方便地进行图像处理。本文将详细介绍如何使用OpenCvSharp中的hconcat、vconcat函数以及Stitcher类进行图像拼接,并通过具体示例帮助读者理解和掌握这些知识点。 函…...

软件方案评审与模块优化:从FOC模块出发的电控平台建设

一、背景 洞悉模块发展趋势&#xff0c;定制行业应用特点&#xff0c;明确优化方向与阶段性目标 随着科技进步的飞速发展&#xff0c;模块化设计已成为众多行业产品开发的核心理念。无论是软件系统、硬件组件&#xff0c;还是复杂系统中的功能模块&#xff0c;都需要对其发展…...

emoji_call_read

这道题我觉得可以记录一下。 主要函数&#xff0c;一样&#xff0c;先考虑怎么泄露libc基址。 但&#xff0c;0x20实在太小&#xff0c;组成不了连续3个ret syscall。 而且文件中也没pop rdi;ret这个gadget&#xff0c;只能另寻他法。 我们注意到&#xff1a; main函数中的这…...

一键自动粘贴,高效处理邮箱地址,让你的工作效率翻倍提升!

在信息爆炸的时代&#xff0c;邮箱地址已成为我们日常工作和生活中的必备元素。无论是商务沟通、报名注册还是信息传递&#xff0c;邮箱地址都扮演着至关重要的角色。然而&#xff0c;手动复制粘贴邮箱地址的繁琐操作往往让人头疼不已&#xff0c;不仅效率低下&#xff0c;还容…...

【Java】Java 使用 Graphics2D 在图片上添加文字,并解决图片变红问题

文章目录 【Java】Java 使用 Graphics2D 在图片上添加文字&#xff0c;并解决图片变红问题完整案例 【Java】Java 使用 Graphics2D 在图片上添加文字&#xff0c;并解决图片变红问题 完整案例 public static void main(String[] args) {try {String filePath "D:\\Works…...

初识docker插件

文章目录 一、Docker插件概述二、Docker插件的优势三、Docker插件的使用例子1. 安装Docker插件2. 启用Docker插件3. 创建卷并使用 四、常用的Docker插件五、总结 Docker插件&#xff08;Docker Plugin&#xff09;是Docker扩展功能的一种重要方式&#xff0c;它允许用户为Docke…...

springboot整合redis以及使用

在Spring Boot中整合Redis&#xff0c;并使用Redis作为缓存或数据存储&#xff0c;是非常常见和有用的场景。Redis作为一种高性能的键值存储系统&#xff0c;可以用来加速数据访问、会话管理、消息队列等多种用途。下面是整合和使用Redis的基本步骤&#xff1a; 1. 添加Redis依…...

ARM32开发--电源管理单元

知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 PMU 电源域 VDD/VDDA域 备份域 1.2V域 省电模式 睡眠模式 深度睡眠模式 待机模式 几种模式总结 WFI和WFE指令 案例需求 模式初始化 源码 总结 前言 在嵌入式系统中&#xff0c;有效的电池管…...

Android Studio项目升级报错:Namespace not specified

原项目升级AGP到8.0时报错&#xff1a; Namespace not specified. Specify a namespace in the modules build file: C:\Users\Administrator\Desktop\MyJetpack\app\build.gradle. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about…...

渗透测试nginx增加400,500报错页面

nginx增加400,500报错页面 在Nginx中增加自定义的400和500错误页面&#xff0c;你需要编辑Nginx配置文件&#xff0c;通常这个文件位于 /etc/nginx/nginx.conf 或者 /etc/nginx/conf.d/default.conf&#xff0c;或者在 /usr/local/nginx/conf/nginx.conf &#xff08;如果你是…...

OpenCV读取和显示和保存图像

# 导入 OpenCV import cv2 as cv # 读取图像 image cv.imread(F:\\mytupian\\xihuduanqiao.jpg) # 创建窗口 #显示图像后&#xff0c;允许用户随意调整窗口大小 cv.namedWindow(image, cv.WINDOW_NORMAL) # 显示图像 cv.imshow(image, image)# 将图像保存到文件 success cv…...

【面经总结】Java集合 - Map

Map 概述 Map 架构 HashMap 要点 以 散列(哈希表) 方式存储键值对&#xff0c;访问速度快没有顺序性允许使用空值和空键有两个影响其性能的参数&#xff1a;初始容量和负载因子。 初始容量&#xff1a;哈希表创建时的容量负载因子&#xff1a;其容量自动扩容之前被允许的最大…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...