【Linux学习】Linux开发工具——vim

在这里插入图片描述

🔥个人主页: Forcible Bug Maker
🔥专栏:Linux学习

目录

  • 🌈前言
  • 🔥vim的基本概念
  • 🔥vim的基本操作
  • 🔥vim命令模式的命令集
  • 🔥简单vim配置
    • ⭐一键配置美观的vim
      • 安装方法
      • 卸载方法
  • 🔥结语

🌈前言

前言:Linux编辑器——vim的介绍和使用

vim 是一款在 Linux、Unix 以及类 Unix 系统(比如 macOS)上广泛使用的文本编辑器。它最初由 Bram Moolenaar 在 1991 年发布,作为 vi 编辑器的改进版。vi 编辑器是 Unix 系统上最早的屏幕编辑器之一,由 Bill Joy 在 1976 年为 BSD Unix 系统编写。
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。

🔥vim的基本概念

vim编辑器有很多种模式,目前主要介绍常用的三种,分别是 命令模式(Command mode)插入模式(Insert mode)底行模式(Last line mode),这三种模式的区别如下:

  • 命令模式:
    控制屏幕光标的移动,字符,字或行的删除,移动复制某区段及进入Insert mode,或者进入Last line mode。
  • 插入模式:
    只有在Insert mode下,才可以做文字输入,按[Esc]键可回到命令模式。
  • 底行模式:
    文件保存或退出,也可进行文件替换,找字符串,列出行号等操作。在命令模式下::符号,也就是shift + ;可以切换到底行模式。

也可以在底行模式下输入:help vim-modes查看更多的模式介绍。

🔥vim的基本操作

进入vim,在系统提示符号输入vim+文件名称之后,就可以进入vim全屏幕编辑画面:

$ vim test.c

在这里插入图片描述
在这里插入图片描述
需要注意的是,进入vim之后,首先处于[命令模式],需要切入到[插入模式]才能输入文字。

  • [命令模式]切换至[插入模式]
    • 输入i
    • 输入a
    • 输入o
  • [插入模式]切换至[命令模式]
    • [Esc]
  • [命令模式]切换至[底行模式]
    • [Shift + ;],其实就是输入[:]

退出vim并保存文件:

:w	->保存当前文件
:wq	->保存并退出
:q	->退出
:q!	->强制退出
:w!	->强制写入

在这里插入图片描述
这时候按回车键,test.c就成功被编辑并保存了。我们可以使用gcc编译这份代码并运行它。
在这里插入图片描述

🔥vim命令模式的命令集

  • 移动光标
    • vim虽然可以使用键盘上的[↑][↓][←][→]键来控制移动 ,但正规的vim是用小写英文字母[h][j][k][l],分别控制光标左,下,上,右移动一个。
    • 按[G]:移动到文本末尾
    • 按[gg]:移动到文本开始
    • 按[$]:移动到光标所在行的“行尾”
    • 按[^]:移动到光标所在行的“行首”
    • 按[w]:光标跳转到下个字(单词)的开头
    • 按[e]:光标跳转到下个字(单词)的结尾
    • 按[b]:光标回到上个字的开头
    • 按[Ctrl+b]:屏幕往“后”移动一页
    • 按[Ctrl+f]:屏幕往“前”移动一页
    • 按[Ctrl+u]:屏幕往“后”移动半页
    • 按[Ctrl+d]:屏幕往“前”移动半页
  • 删除文本
    • [x]:每按一次,删除光标所在位置的一个字符
    • [#x]:删除贯标在内的的往后#个字符
    • [X]:大写的x,每按一次,删除光标所在位置之前的一个字符
    • [#X]:删除光标所在位置之前的#个字符
    • [dd]:删除光标所在行
    • [#dd]:从光标所在行开始删除#行
  • 复制
    • [yw]:将光标所在之处到字尾的字符串复制到缓冲区中
    • [#yw]:复制#个字到缓冲区
    • [yy]:复制光标所在行到缓冲区
    • [#yy]:复制所在行开始的#行到缓冲区
    • [p]:将缓冲区内的字符粘贴到光标所在位置
  • 撤销操作
    • [u]:如果误执行一个命令,可以按[u],回到上一个操作
    • [Ctrl+u]:撤销的恢复。如果误执行一个撤销,可以按[Ctrl+u],回到撤销前的状态
  • 跳跃
    • [#G]:移动光标至文章的第#行行首

🔥简单vim配置

在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~打开自己目录下的.vimrc文件,执行vim .vimrc。
在里面可以设置常用配置,如:

  • 语法高亮:syntax on
  • 显示行号:set nu
  • 设置缩进空格数为4:set shiftwidth=4

再次用vim打开文件时,就会自动有相应的配置。给自己用户配置的不会影响别的用户。
如果想要配置好看的vim,原生的配置功能可能不全,可以选择安装插件来完善配置。在网上也可以查到更详细的配置选项。

⭐一键配置美观的vim

Gitee-配置vim

安装方法

在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 “不推荐” 直接在 root 下执行):

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

卸载方法

在安装了 VimForCpp 的用户下执行:

bash ~/.VimForCpp/uninstall.sh

配置结果展示:在这里插入图片描述
如果期间有什么配置觉得不顺手,也可以去当前用户下的.vimrc中调整相关配置。

🔥结语

本篇博客主要介绍了Linux开发工具——vim,同时讲解了其三种模式的基本使用,也简单介绍了如何配置vim。尽管 vim 的学习曲线可能比其他编辑器陡峭,但一旦掌握了它的基本操作和概念,你会发现它是一个非常强大和高效的文本编辑工具。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

瓜子二手车源码开发

瓜子二手车作为国内知名的二手车交易平台,其开发需求与功能架构主要围绕提升用户体验、保障交易安全、优化交易流程以及提供全面服务等方面展开。以下是对瓜子二手车开发需求与功能架构的详细分析 一、开发需求 用户需求: 便捷性:用户希望能…

Qt 0820作业

一、思维导图 二、闹钟 头文件代码 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> //时间类 #include <QTimer> //时间事件类 #include <QTimerEvent> //定时器事件类 #include <QMouseEvent> //鼠标…

VS2019安装VisualAssist后菜单不显示的问题

1、参考链接 解决vs2019/vs2022安装成功Visual Assist/qt tools后, vs菜单栏的扩展中不显示相应插件的问题_qt安装后 vs扩展中没有-CSDN博客 这个链接有类似的解答。 但是讲解的不够详细&#xff0c;下面是我的实操步骤&#xff0c;供大家参考。 2、重命名privateregistry.bi…

数据埋点系列总结|从基础到实践的深度总结

在当今数字化时代,数据已成为企业的核心资产,而数据驱动决策则是充分利用这一资产的关键方法。本系列文章全面探讨了从数据收集到分析,再到实际应用的整个过程,为读者提供了深入而实用的指导。让我们深入回顾这个journey,详细探讨每个主题的核心内容,并思考数据驱动决策的未来发…

Ubuntu网络服务无法启动问题

问题 Ubuntu20.04卡死重启后网络服务打不开&#xff0c;没有下图中的有线一栏&#xff1a; 查看网络服务状态如下&#xff1a; systemctl status NetworkManager此时桌面右上角没有下图中网络图标&#xff1a; 解决 命令&#xff1a; sudo service network-manager sto…

Excel如何快速比对两列数值是否相等

好文章百度安全验证 推荐选中全部数据&#xff0c;条件格式——突出显示----重复值

MT7621+MT7915(MT7905)+MT7975 (W7621A6G-SDK)编译固件与升级固件方法

一、搭建开发环境&#xff0c;编译固件。 1、安装在Ubuntu 14.04.5 x86_64系统后&#xff0c;然后安装下面命令行。 $ sudo apt-get install git g make libncurses5-dev subversion libssl-dev gawk libxml-parser-perl unzip wget python xz-utils vim zlibc zlib1g zlib1g…

网安新声 | 从微软“狂躁许可”漏洞事件看安全新挑战与应对策略

网安加社区【网安新声】栏目&#xff0c;汇聚网络安全领域的权威专家与资深学者&#xff0c;紧跟当下热点安全事件、剖析前沿技术动态及政策导向&#xff0c;以专业视野和前瞻洞察&#xff0c;引领行业共同探讨并应对新挑战的策略与可行路径。 近期&#xff0c;微软披露了一个最…

分布式基础理论——CAP理论和BASE理论

文章目录 CAP 理论BASE 理论参考资料 CAP 理论 CAP定理&#xff08;CAP theorem&#xff09;指出&#xff0c;在分布式系统中&#xff0c;设计读写操作时只能同时满足以下三个特性中的两个&#xff1a; 一致性&#xff08;Consistency&#xff09; : 所有节点访问同一份最新的…

1.Java:集合

集合作用&#xff1a; 1.动态保存任意多个对象。 2.提供操作对象方法比如add,remove,set,get等方法。 3.使用集合添加&#xff0c;删除代码简洁。 集合分类 集合分为单列集合以及双列集合。 单列集合&#xff1a; 双列集合&#xff1a; Collection接口特点 1.Collection…

数据湖之Delta Lake

Delta Lake&#xff1a;数据湖存储层概述 Delta Lake 是一种开源的存储层技术&#xff0c;构建在 Apache Spark 的基础之上&#xff0c;旨在解决传统数据湖的可靠性、性能和数据一致性问题。它通过引入 ACID 事务、数据版本控制、时间旅行和统一的批处理与流处理等特性&#x…

20240820飞凌的OK3588-C的核心板在Linux R4下使用poweroff关机

20240820飞凌的OK3588-C的核心板在Linux R4下使用poweroff关机 2024/8/20 14:03 经过测试&#xff0c;poweroff有效&#xff0c;关机之后&#xff0c;12V/0.024A12*0.0240.288W shutdown无效。 reboot -p无效。 rootok3588:/# rootok3588:/# shutdown -h now sh: shutdown: c…

ZHEYI自动采集壁纸系统网站源码 360壁纸官方数据接口采集

利用ZHEYI自动采集壁纸源码&#xff0c;您不需要自己手动添加壁纸&#xff0c;而是通过接口自动从360壁纸官方获取数据&#xff0c;大大节省了时间和精力。同时&#xff0c;该源码还具有高效稳定的特点&#xff0c;为您提供流畅的用户体验。 无论是在操作上还是在性能上&#…

Prometheus:pushgateway使用

1 项目目标 &#xff08;1&#xff09;熟练部署pushgateway &#xff08;2&#xff09;使用api增删改查数据 &#xff08;3&#xff09;使用python Client SDK Push数据到pushgateway 2.1 规划节点 主机名 主机IP 节点规划 prome-master01 10.0.1.10 服务端 prome-no…

Redis清空缓存

Windows环境下使用命令行进行redis缓存清理 1、redis安装目录下输入cmd 2、redis-cli -p 端口号 3、flushdb 清除当前数据库缓存 4、flushall 清除整个redis所有缓存

【秋招笔试】8.18大疆秋招(第一套)-后端岗

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention

时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention 文章目录 前言时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention 一、BO-CNN-BiGRU-Attention模型1. 贝叶斯优化&#…

Postman中Body添加注释后请求报错问题解决【保姆级教程!!!】

本文介绍关于Postman中Body添加注释后请求报错问题解决方法 如&#xff1a;请求返回下述报错 操作失败! 系统异常,JsonParseException: Unexpected character (‘/’ (code 47)): maybe a (non-standard) comment? (not recognized as one since Feature ‘ALLOW_COMMENTS’…

接受三个数字参数,返回最大

def mostNum(*nums): #nums为元组&#xff08;不支持修改&#xff09;&#xff0c;转化为列表liNumslist(nums)for i in range(0,len(liNums)-1): #冒泡法if liNums[i]>liNums[i1]:cliNums[i]liNums[i]liNums[i1]liNums[i1]creturn liNums.pop() #列表最后一个最大的数被返…

《C语言实现各种排序算法》

文章目录 一、排序1、排序的各种方式分类 二、插入排序1、直接插入排序2、希尔排序3、希尔排序时间复杂度分析 三、选择排序1、直接选择排序2、堆排序 四、交换排序1、冒泡排序2、快速排序3、快速排序hoare找基准值4、快排挖坑法找基准值5、前后指针法6、快速排序非递归实现 五…