指尖的诗篇:在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

Flutter 三方库 objectbox_generator — 自动化构建鸿蒙极速 NoSQL 数据库映射(适配鸿蒙 HarmonyOS Next ohos)

Flutter 三方库 objectbox_generator — 自动化构建鸿蒙极速 NoSQL 数据库映射(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 Flutter 三方库 objectbox_generator — 自动化构建鸿蒙极速 NoSQL 数据库映射(适配鸿蒙 HarmonyOS Next ohos) 在高性能移动应用开发中,本地数据的持久化存储效率往往是决定用户感知流畅度的木桶短板。传统的 SQLite 虽然结构化程度高,但在处理大规模对象关系映射(ORM)时,复杂的 SQL 拼接和反射解析往往会成为性能瓶颈。 ObjectBox 作为一个专为移动设备打造的、跨平台的超高速 NoSQL 数据库,已经成为了许多追求极致体验开发者的首选。而在 Flutter for OpenHarmony 开发中,配合 objectbox_generator,我们可以通过注解驱动的自动化流程,掌握这套高性能数据库的核心用法。 ⚠️ 鸿蒙适配现状提示:截至本文撰写时,ObjectBox 的 Dart 插件尚未提供官方的 OpenHarmony

By Ne0inhk
Flutter 三方库 lazy_evaluation 的鸿蒙化适配指南 - 深度调优计算性能、实现“按需而动”的极致资源管理方案

Flutter 三方库 lazy_evaluation 的鸿蒙化适配指南 - 深度调优计算性能、实现“按需而动”的极致资源管理方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 lazy_evaluation 的鸿蒙化适配指南 - 深度调优计算性能、实现“按需而动”的极致资源管理方案 前言 在高性能应用的开发中,我们常说“最好的优化就是不做无用功”。然而,在复杂的逻辑链中,我们往往会预先计算一堆可能根本不会被用到的变量或模型,这在资源受限的移动设备(尤其是需要极速响应的鸿蒙设备)上是对电池和 CPU 的极大浪费。 惰性求值(Lazy Evaluation)是一种优雅的策略:它确保一个昂贵的计算过程只在程序真正需要其结果时才执行,且结果会被缓存以备后用。 lazy_evaluation 为 Dart 提供了一种极简的封装,完美补齐了编译器层面某些惰性特性的缺失。在 OpenHarmony 系统的适配实操中,我们将看到它如何帮助我们实现更精细的初始化策略,以及如何在确保“鸿蒙式流畅”的同时,极限压榨硬件能效。 一、原理解析 / 概念介绍

By Ne0inhk
Linux 动静态库完全指南:制作、使用、原理与实战

Linux 动静态库完全指南:制作、使用、原理与实战

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 库的基础认知:是什么?有哪些? * 1.1 库的本质 * 1.2 库的分类与系统位置 * 1.3 预备工作:自定义库源码 * 二. 静态库:编译时链接,独立运行 * 2.1 整体图示:理清思路 * 2.2 静态库制作流程(Makefile 自动化,更简便) * 2.3 静态库使用场景与命令 * 2.4 静态库核心特点 * 三. 动态库:运行时链接,

By Ne0inhk
鸿蒙跨平台实战:React Native在OpenHarmony上的AccessibilityInfo辅助功能开关详解

鸿蒙跨平台实战:React Native在OpenHarmony上的AccessibilityInfo辅助功能开关详解

鸿蒙跨平台实战:React Native在OpenHarmony上的AccessibilityInfo辅助功能开关详解 欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 摘要:本文深入探讨React Native中AccessibilityInfo模块在OpenHarmony 6.0.0 (API 20)平台上的实现与应用。作为无障碍功能的核心组件,AccessibilityInfo提供了获取设备辅助功能状态的能力。文章将从技术原理出发,详细分析跨平台适配机制,并通过实战案例展示在OpenHarmony环境下的具体实现。所有代码示例基于React Native 0.72.5和TypeScript 4.8.4编写,已在AtomGitDemos项目中验证通过。读者将掌握如何开发符合无障碍标准的应用,确保在鸿蒙设备上提供一致的用户体验。 1. AccessibilityInfo组件介绍 AccessibilityInfo是React Native提供的核心无障碍功能模块,用于检测和响应设备辅助功能状态的变化。在Ope

By Ne0inhk