指尖的诗篇:在Vim的世界里书写代码与梦想,Linux下vim编辑器的使用详解

指尖的诗篇:在Vim的世界里书写代码与梦想,Linux下vim编辑器的使用详解

文章目录

在这里插入图片描述

前言

在浩瀚的Linux世界中,Vim是一颗璀璨的明珠。它不仅仅是一个文本编辑器,更是无数开发者的心头好,是所有程序员与技术爱好者不可或缺的工具之一。Vim是一种专注且极具魅力的编辑器,它所赋予的力量,远远超出了一个简单的文本编辑任务。对于那些了解它的人来说,Vim不仅仅是一个工具,它是思想的延伸,是工作流的象征。今天,我们将细细探讨Vim编辑器在Linux环境中的使用,揭开它神秘的面纱。

一、Vim的起源与背景

Vim,原名Vi IMproved(Vi的增强版),是由布拉德·乔恩逊(Bram
Moolenaar)于1991年发布的。它基于UNIX系统中的Vi编辑器,Vi作为一个传统且强大的文本编辑器,已经陪伴了几代Linux用户的成长。而Vim则在此基础上进行扩展与优化,拥有了更多的功能,使得它在编辑工作中更为高效和便捷。

与Vi相比,Vim不仅仅有基本的编辑功能,还提供了丰富的插件扩展语法高亮自动完成等功能,这些都使得它成为了程序员、开发者和系统管理员必不可少的工具。

1.1 安装vim

在 Ubuntu 系统上,可以通过以下命令安装 Vim:

sudoapt update sudoaptinstallvim
在这里插入图片描述


要注意的是当我们以普通用户的身份去下载安装包的时候,是需要sudo提权的

二、Vim的模式设计:极简而深邃

  • 命令模式:Vim 启动后默认的模式,可以使用快捷键执行命令,此模式下用户的所有输入都会被当作命令,一般不会 给你作为文本输入
  • 插入模式:用于文本输入,按 i 进入插入模式,按 Esc 返回普通模式,此模式下可以进行代码编写
  • 底行模式:用于输入命令,按 : 进入命令行模式,此模式下可以进行退出保存等多种命令操作

三、vim的强大功能

3.1 打开和退出文件

首先我们先创建一个文件,之后用vim进入

touch filename vim filename 

进入之后默认是命令模式,我们可以通过按下 i进入插入模式,进行如下代码的编写
在完成输入后,按esc返回命令默认,之后shift ;同时按下,即可弹出左下角的冒号,此时可以输入以下命令进行保存退出。

:q 如果没有修改,直接退出
:q! 强制退出,不保存修改
:wq 保存修改并退出

快速按两下大写z也可以实现保存退出。

在这里插入图片描述

3.2 基本编辑操作

  • 进入插入模式:按 i(在光标前插入)或 a(在光标后插入)。
  • 删除字符:在普通模式下,按 x 删除光标下的字符。
  • 撤销操作:按 u 撤销操作,按 Ctrl + r 重做操作。

3.3 移动光标

需注意,在vim中鼠标无法直接参与光标的移动,需要通过键盘指令进行。

  • h:向左移动一个字符。
  • j:向下移动一行。
  • k:向上移动一行。
  • l:向右移动一个字符。
  • gg:移动到文件开头。
  • G:移动到文件结尾。
  • Ctrl + f:向下翻一页。
  • Ctrl + b:向上翻一页。

3.4 删除文字

其中,#代表数字

  • 「x」:每按一次,删除光标所在位置的一个字符
  • 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
  • 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
  • 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
  • 「dd」:删除光标所在行
  • 「#dd」:从光标所在行开始删除#行

3.5 复制

需要注意这些命令都需要在命令模式进行,如果在插入模式下会被认为是输入的字符。

  • 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  • 「#yw」:复制#个字到缓冲区
  • 「yy」:复制光标所在行到缓冲区。
  • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
  • 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

3.6 替换

  • 「r」:替换光标所在处的字符。
  • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

3.7 更改

  • 「cw」:更改光标所在处的字到字尾处
  • 「c#w」:例如,「c3w」表示更改3个字

3.8 跳至指定的行

  • 「ctrl」+「g」列出光标所在行的行号。
  • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

3.9 撤销上一次操作

  • 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
  • 「ctrl + r」: 撤销的恢复

3.10 查找和替换

查找文本:在命令模式下,输入 /text 查找 text,使用 n 移动到下一个匹配项。
替换文本:在底行模式下,输入:

:%s/old_text/new_text/g 

四、vim的强大功能

  1. 语法高亮
    在Vim中,语法高亮是其最基础的功能之一。通过启用语法高亮功能,Vim可以帮助开发者清晰地区分代码中的不同元素,如关键字、变量、函数等。对于编程语言的支持,可以通过插件进行扩展,Vim几乎支持所有主流编程语言的语法高亮。
  2. 多文件编辑
    Vim并不仅仅局限于一个文件。通过 :split 或 :vsplit 命令,你可以轻松地将屏幕分割成多个窗口,进行多文件编辑。这种功能极大提高了工作效率,尤其是在处理多个文件时,你不再需要频繁地切换窗口,所有操作都可以在同一界面内完成。
  3. 插件系统
    Vim强大的插件系统使得它可以根据用户需求进行定制和扩展。无论是代码自动补全、Git集成,还是Markdown预览、数据库操作,Vim几乎可以做到。最流行的插件管理器是Vundle和Pathogen,它们让你可以轻松安装和管理插件。
  4. 搜索与替换
    在Vim中,查找和替换功能不仅仅限于文本内容。你可以通过正则表达式进行复杂的搜索,甚至在整个项目中进行批量替换。命令如 😒/old/new/g 会将当前行的 old 替换为 new,而 :argdo 命令允许你在所有打开的文件中进行替换。
  5. 自动完成
    Vim不仅支持基本的代码补全,还能够根据你所输入的上下文自动提供更符合需求的补全项。你可以通过插件如 YouCompleteMe 或 Deoplete 来进一步增强代码自动补全功能,提高编码效率。
  6. 版本控制与Git集成
    Vim还拥有强大的Git集成功能。通过安装插件,如 fugitive.vim,你可以在Vim内执行Git操作,如查看版本历史、提交更改、解决冲突等,而无需离开编辑器。这种集成方式为程序员带来了极大的便利。

分屏操作

  • 水平分屏
:split 文件名
  • 垂直分屏
:vsplit 文件名
在这里插入图片描述


其中,

  • vim +文件名,wq之后若该文件原先不存在,则会自动创建
  • 命令行输入vs 文件名,可以实现分屏操作
  • ctrl按住不动,快速按两下w,可以实现光标在分屏幕之间的切换。
  • 光标在哪个分屏幕,代表正在对该区域进行操作。
  • wq!中的!表示强制,意为强制保存并退出

四、Vim的学习曲线:一段与自我对话的旅程

Vim被认为有较陡的学习曲线,这无疑是事实。刚开始使用时,你可能会感到困惑和不适应。特别是与传统的图形化编辑器相比,Vim没有鼠标操作,所有功能都需要通过键盘快捷键来完成。但这恰恰是Vim的精髓所在,它并非让用户去适应,而是引导用户从内心开始改变与计算机交互的方式。

然而,Vim的难学并非毫无意义。每一段痛苦的经历,都会带来极大的回报。习惯了Vim的操作,你将获得一种与计算机对话的流畅感。它让你摆脱了鼠标的束缚,极大地提高了工作效率,并让你的思维变得更加简洁和专注。

小结

在这个信息化时代,Vim不仅是Linux用户的必备工具,更是一种技术精神的象征。它提醒我们,真正的高手并非追求繁琐和浮华,而是在简约中找到最深的力量。在Vim的世界里,每一次按键,都是通向更加高效和自由的道路。

愿每一个使用Vim的你,都能享受到那份属于文本的极致之美。

本篇关于vim编辑器的介绍就暂告段落啦,希望能对大家的学习产生帮助,欢迎各位佬前来支持斧正!!!

在这里插入图片描述

Read more

【Vue3】前端Vue3最常用的 20 道面试题总结(含详细代码解析)

【Vue3】前端Vue3最常用的 20 道面试题总结(含详细代码解析)

以下是老曹关于 Vue 3 最常用的 20 道面试题总结,涵盖 Vue 3 的核心特性如 Composition API、响应式系统(ref / reactive)、生命周期钩子、组件通信、Teleport、Suspense、自定义指令等高频知识点。每道题都配有详细解释和代码示例,适合用于前端开发岗位的 Vue 3 技术面试准备,大家可以码住随时翻出来查阅背诵和练习! 1. Vue 3 和 Vue 2 的区别是什么? 问题: 解释 Vue 3 相比 Vue 2 的主要改进点。(最主要,不是全部,全部后续老曹会再扩展) 答案: 特性Vue 2Vue 3响应式系统Object.definePropertyProxy架构单一源码模块化架构(Tree-shakable)

By Ne0inhk
一文搞懂Webhook:原理、实操与Langflow落地场景

一文搞懂Webhook:原理、实操与Langflow落地场景

Webhook作为现代系统集成的核心轻量通信机制,以“事件驱动”模式实现跨应用实时数据同步,解决了传统API轮询效率低、资源浪费的痛点。本文从定义、工作原理、核心优势、安全实践四个维度拆解Webhook,重点讲解Langflow产品中Webhook组件的实用操作,并结合企业协作、供应链管理、客户服务等实际场景,展示其如何快速实现无代码/低代码的自动化工作流,帮助开发者与业务人员高效落地跨系统联动需求。 一、什么是Webhook?核心认知拆解 简单来说,Webhook是一种基于HTTP回调的被动式通信机制,本质是“事件触发+自动推送”的桥梁——当系统A发生特定事件(如订单支付、代码提交、消息发送)时,会主动向系统B预先配置的URL(回调地址)发送请求,将事件数据实时推送至系统B,无需系统B主动查询(即轮询)。 类比生活场景:传统API轮询像你反复刷新快递物流页面查进度,而Webhook像快递员送货上门时主动打电话通知你,高效且无需额外操作。其核心价值在于“实时性”与“低资源消耗”,这也是它被广泛应用于现代应用集成的关键原因。 1.1 核心工作流程(4步闭环)

By Ne0inhk
Flutter 三方库 shelf_web_socket 的鸿蒙化适配指南 - 实现具备高性能全双工长连接与协议协商能力的端侧服务端架构、支持分布式实时信令与多端协同实战

Flutter 三方库 shelf_web_socket 的鸿蒙化适配指南 - 实现具备高性能全双工长连接与协议协商能力的端侧服务端架构、支持分布式实时信令与多端协同实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 shelf_web_socket 的鸿蒙化适配指南 - 实现具备高性能全双工长连接与协议协商能力的端侧服务端架构、支持分布式实时信令与多端协同实战 前言 在进行 Flutter for OpenHarmony 开发时,当我们的鸿蒙应用需要充当“控制中心”角色(如控制智能家居、开启本地调试服务或实现 P2P 实时对抗脚本时),如何在端侧直接拉起一个支持 WebSocket 协议的高性能微服务端?shelf_web_socket 是针对 shelf 后端框架封装的一款官方级 WebSocket 处理器。本文将探讨如何在鸿蒙端构建极致、透明的长连接交互引擎。 一、原直观解析 / 概念介绍 1.1 基础原理 该库本质上是一个 shelf 处理函数(Handler)

By Ne0inhk

web前端JS—基本语法

一、引入方式 1、内部脚本:将代码定义在HTML页面里面 * 将JS定义在<script></script>之间 * 可以在html里面的任意位置放置任意数量的<script></script> * 一般放置在<body>元素的底部,改善显示速度 <script> console.log('页面加载时执行'); function localFunction() { return '内部函数'; } </script> 2、外部脚本:额外定义一个.js文件,引入到HTML里面 * 只能包含js文件,不包含&

By Ne0inhk