你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

从2000年开始用的Vim:一款历久弥新的史诗级编程软件

发布时间:2025-06-01

浏览次数:0

近期微信后台频繁出现关于 Vim 的问题,这不禁让我猜想,或许新一代的 Vim 开发者正在迅速崛起。Vim,这款神奇的编程利器,自2000年起便伴随我左右,长达16年的时间,仿佛杨过等待小龙女的那段漫长岁月。在这期间,我几乎每天都在使用这款工具。计算机编程的发展历程已有数十年之久,期间涌现了众多编程工具。在这其中,Vim以其独特的风格脱颖而出,经久不衰,穿越时光的尘埃,至今仍散发着璀璨的光芒。众多技术英才依托Vim,成功研发出了众多卓越的软件产品。

Vim 被视为最为朴素的编辑器,同时亦被视为功能丰富的编程利器,甚至被誉为一部传奇的编程软件。在我所在的部门,编写 PHP、Go 和 Lua 的开发者们仍旧依赖 Vim 进行编程。对于某些人而言,Vim 已然成为他们唯一的编程选择。而对于运维人员来说,Vim 同样是不可或缺的必备工具之一。

先前我曾在多处零星地记录了一些关于 Vim 的心得,随后将这些内容集结成册,收录于《人生元编程》一书中。在周末闲暇时,我取出该书,对其进行了重新整理和编排,结果惊喜地发现,竟然积累了近两万字的内容。于是,我删减了插件相关章节以及一些不必要的“闲言碎语”,最终形成了现在的这篇文章。

想看 Vim 插件篇的,去微信读书搜索 ,就能找到。

历史

Vim源自于Vi,但两者并不相同。Vi是一款历史悠久的计算机文本编辑器,其开发者为美国计算机科学家比尔·乔伊,该软件于1976年正式发布。同年,苹果公司也宣告成立。在《传统的黑客——史蒂夫·沃兹》一书中,我曾提及比尔·乔伊,他是 Sun 公司的联合创始人兼首席科学家,一位技术领域的传奇人物。在我看来,他最卓越的成就独立开发了 BSD 操作系统,并创立了 Vi 编辑器,同时,他还携手创建了 Sun 公司。此外,他还是 Java 语言的重要贡献者之一。单是完成其中任何一项工作,都足以在计算机发展史上留下浓墨重彩的一笔。然而,乔伊凭借个人之力,实现了这些卓越的科技成果,极大地推动了计算机科技的整体进步。

Vim 的问世相对较晚,其首个版本由布莱姆·米勒在1991年推出。米勒本人也是一位赫赫有名的程序员。在80年代,他曾购置了一台 Amiga 电脑。然而,当他打开电脑时,却发现缺少了他最常使用的 Vi 编辑器。这一情况让米勒感到十分不满,对他而言,这是无法容忍的。

米勒愤怒之下,决意独立研发一款文本编辑器,其功能全面模仿Vi,并命名为Vi(模拟)。事实表明,杰出的程序员们往往拥有这样的特质:若心中有所不满,便会动手创作,或是进行改进,或是进行创新,亦或是亲自编写,亦或是他人创作,正因如此,众多卓越的软件程序得以问世。Vim 在其不断演进的历程中,吸纳了众多新功能,其正式名称亦更改为 Vi(增强版),从而孕育出了现今的 Vim。目前,Vim 的最新稳定版已是7.4。该软件的开发主要采用 C 语言编写,关于这门语言的内容,我们将在后续章节中进行详细探讨。

场景

在众多情境中,选用最恰当的工具无疑是上策。有人可能会好奇,Vim究竟适用于哪些场景?简而言之,Vim特别适用于Unix/Linux服务器的编程任务,不过这取决于个人喜好。我个人曾用Vim编写过Java、Perl、Lua、Go等程序,尽管在Java编程时,我更倾向于使用IDEA。在 Unix/Linux 服务器上对文件进行编辑和调整时,Vim 是不可或缺的工具,再者,鉴于我平时主要使用 Mac 系统,因此阅读和查看代码时,自然而然地选择了 Vim 来进行操作。

众多人认为即便不使用Vim,也能保持高尚的品格,确实如此,在编写诸如HTML、CSS、JS以及C语言等程序时,最理想的选项或许是IDEA或XCode等工具,这些出色的软件能显著提高我们的工作效率,降低出错率,然而,若你渴望达到更高的境界,Vim无疑是一个值得拥有的选择。

Vim软件无需额外设置即可直接使用,即便不进行任何配置,也能执行其基础功能。一旦你熟悉了基本操作,接下来的内容将助力你提高使用效率,助你打造个性化的Vim编辑环境。

编辑模式

Vim是一款专为程序员设计的软件工具,历经多年,我至今未曾遇见过使用Vim进行文字编辑的普通用户。若您恰好是其中一位,请务必告知我。

编写程序者深知,在编程过程中,双手绝大多数时间都停留在键盘之上,无论是进行编码、插入、移动、定位、查找等操作,这些连续性的动作所花费的时间和频率,远超阅读、翻页、调整字体、调整格式等文案工作,而这些文案工作常常伴随着停顿和空隙。然而,编程中的停顿会对编程效率造成显著影响。因此,Vim的设计理念旨在通过模式切换、命令组合以及海量的插件支持,确保程序员在编程时,双手能够尽量保持在键盘中央,同时,无需使用鼠标。

要熟练运用 Vim,首先必须掌握其模式切换的原理。Vim 中普遍使用的模式共计四种:

Vim软件启动后,系统会自动进入普通模式。在此模式下,用户可以执行一系列操作,如移动光标、删除文字、覆盖现有输入、撤销上一步操作、粘贴文本等。

进入插入状态:选择“i”或“a”键进入编辑状态,此时按键操作将在文本缓冲区中累积字符,类似于常规编辑工具的编辑功能。

在可视模式下,用户可对文本进行选定,支持逐行、区域以及逐字的选择。选定内容后,用户能够执行复制、删除以及调整顺序等操作。

命令模式支持内部及外部指令的执行,用户可通过输入「: / ? !」进入该模式,其中「:」用于执行内部指令,「/」用于向上或向下搜索,「!」则用于执行外部指令。

Vim的模式与一般编辑器相异,其命令种类繁多且变化多端,因此初学者面临的难度较大。然而,只要持之以恒地练习,并成功度过最初的适应期,你便能深刻体会到Vim的精妙之处以及全键盘操作的便捷。实际上,Vim不仅能够高效地编辑文本文件,还能通过简单的指令完成更多任务。因此,若你仅将Vim视为一款文本编辑器,那你的认识就过于狭隘了。

举几个例子,大家领略一下 Vim 的风采:

若您希望在Vim编辑器中输入一个从1至100的连续数字序列,可以按照以下步骤操作:首先,输入特定的指令,然后,文本中便会自动生成所需的数字序列。

:r!seq 100

若您希望在现有文本的每行开头添加“序号. ”,请按照以下步骤操作:

设定变量i的值为1,接着执行全局替换操作,将所有等于i的". "替换为i.".",然后i的值增加1。

若您希望替换当前目录及其子文件夹中所有以 java 为扩展名的文件中的特定内容,请按照以下步骤操作:首先,在当前目录中执行相应命令。

vim
:n **/*.java
执行命令:对位于%s目录下的apache/eclipse/ge进行更新操作。

使用帮助

Vim自带了一套详尽的辅助系统,新手们能够借助这份手册来掌握Vim的基本知识。在Vim内部,输入指令“:help”即可访问帮助界面,该界面初始为英文版;若偏好中文版,可按照以下步骤安装中文帮助资料:

用户手册的界面是这样的:

Vim编程工具历史_Vim编辑器使用技巧_intellij idea产品学习手册

如何浏览帮助呢?请牢记如下秘籍:

当然,大家完全可以通过网络渠道获取 PDF 格式的用户手册以及相关辅助文档。

配置

Vim通过简洁的界面提供了多样的配置选项,其核心配置结构由一个文件与一个文件夹构成。在装有Vim的OS X/Linux/Unix系统上,若访问用户的主目录,便能看到名为.vimrc的配置文件以及.vim的配置文件夹,这两者包含了Vim的全部配置信息。

1、.vimrc

用户的主目录中存在一个名为.vimrc的文件,这是Vim编辑器为该用户定制的核心配置文档。此文件并非必须存在,若不存在,则需手动创建。该文件存放于用户的主目录内,通过路径~/.vimrc即可访问。每当Vim启动时,它将自动执行该文件中的所有指令。

我们可以利用.vimrc文件对Vim进行定制化设置,涵盖操作方法、界面风格、编写脚本以及启用插件等方面。在.vimrc文件中定义的每一条指令,都可在Vim启动过程中,通过冒号加命令参数的形式进行动态执行,从而实现即时更新和生效。

以下提供了一个.vimrc样例脚本,其中包含了若干常用配置,紧随其后的注释则是对这些配置的简要解释。

.vimrc文件中的注释通过双引号(")来标识,而在示例中,那些大括号({})仅用来指代不同的功能区域,它们是注释内容的一部分,并不具备其他特殊含义。

.vimrc的配置内容十分庞大,支持设定众多宏、函数、插件以及快捷键映射。我曾目睹过最长达1000多行的.vimrc配置文件。此处的示例相对简易,非常适合初学者使用。

语法功能支持
普遍适用的配置
设定AI功能,实现“自动缩进”功能。
设置bs为2,在插入模式中,按退格键进行删除操作。
启用代码匹配功能,set showmatch
设置最后状态为2,确保始终显示状态行。
启用扩展制表符功能,同时配合以下三个设置,可以调整代码中的制表符与空格缩进的数量。
set shiftwidth=4
set tabstop=4
设置光标所在行的下划线样式
设定编号,展示行序
启用自动读取功能,若文件在Vim编辑器之外被修改,系统将自动重新加载该文件。
设置忽略大小写选项,以便在搜索过程中不对字符的大小写进行区分。
设定文件编码为utf-8或gbk,以便使用这两种编码格式打开文件。
设定高亮检索结果,以便于识别匹配内容
将帮助系统语言设定为中文,set helplang=cn。
设置折叠方式为语法相关  "代码折叠功能"
"}}
配置专用于标签页,该设置允许用户通过按Ctrl键加H或L键来切换不同的标签页。
let mapleader = ','
nnoremap  gt
nnoremap  gT
nnoremap t : tabe
"conf for plugins {{ 插件相关的配置
"状态栏的配置 
"powerline{
设置GUI字体为PowerlineSymbols,适用于Powerline。
set nocompatible
set t_Co=256
设置 g:Powerline_symbols 的值为 'fancy'。
"}
"pathogen是Vim用来管理插件的插件
"pathogen{
call pathogen#infect()
"}
"}}

2、 .vim

.vim是Vim编辑器的配置文件存放目录,它位于用户的主目录之中,通过执行cd ~/.vim命令即可进入。此文件夹通常用于存放插件以及相应的辅助文档,其目录结构通常包括:

文档目录,提供辅助说明
自动加载插件目录,在Vim启动时会被启用。
插件文件夹,通常在操作Vim编辑器时,可以通过执行特定命令来打开。

当然,一旦你安装了大量的插件,该目录便会呈现出丰富多彩的景象,诸如各种文件夹便会相继涌现。通常,一个插件所包含的文件会分散在多个文件夹中,这使得管理变得相对繁琐。稍后,我们将向大家介绍两款专门用于管理插件的插件,它们能够使该目录变得井然有序,便于管理。这两款插件分别被命名为……和……!

基本概念

接下来,我们将对Vim编辑器中的几个核心要素进行阐述,包括缓冲区、窗口以及Tab-page标签页。

许多读者询问,在使用Vim打开文件后,文件的具体内容是存储在何处?难道每次对文件进行编辑时都需要对硬盘进行读写操作吗?显然并非每次编辑都需要对硬盘进行写入,实际上,Vim在打开文件时,会将文件内容加载至内存之中。在内存中,我们通常用“缓冲区”一词来指代正在编辑的文件,每个缓冲区与一个单独的文件副本相对应。完成编辑操作后,我们便可以保存该文件。该文件不仅囊括了其内容,还详细记载了编辑过程中的各项配置数据,诸如激活状态、隐藏属性以及上一次编辑的具体行数等信息。

Vim软件支持同时打开多个文件进行编辑,同时亦能关闭不再需要的文件。即便如此intellij idea产品学习手册,这些文件的副本仍旧存留在缓冲区里。我们可以通过输入命令:ls或直接按:键来查看这些文件,若需重新打开文件,则可以使用类似: n的指令,其中n代表文件的序号。自然,我们拥有更优的解决方案来应对此类问题,即需借助,首先需安装特定插件,请大家务必牢记该插件名称,我们后续还会用到它。

这是一个展示的对应界面。该界面能够与多个窗口相匹配,例如,我们能够使用split或冒号加空格的指令在数个窗口中同时打开同一份文件。一旦对某个窗口中的文件进行编辑,其他窗口中的内容也会随之同步更新。当然,我们完全可以在多个窗口中同时打开若干个文件,编辑完毕后通过输入“:wq”来保存并退出,然而务必留意,即便如此,只要Vim进程尚未被彻底关闭,那些被打开的文件依旧会保留在缓存里,随时可以重新打开。

Tab-page:这一部分相对简单明了,它指的是一组并排的窗口。我们可以在一个标签页中通过特定的操作打开一个文件,同时,在这个标签页内,还可以进一步打开多个独立的窗口。

下图清晰的表达出 、 和 Tab-page 的关系。

intellij idea产品学习手册_Vim编程工具历史_Vim编辑器使用技巧

掌握了这三个核心概念及其相互间的联系,对于熟练运用 Vim 编辑器将大有裨益。

几个小技巧

启动Vim编辑器后,您可以通过输入`:split`命令或使用`:`快捷键,亦或选择`new`选项来分别实现窗口的横向或纵向分割。在多个窗口间进行切换,您可以按下`ctrl + w`组合键,而要改变窗口的视角,则可以使用`ctrl + 方向键`进行操作。

使用 Vim 编辑器打开某个文件后,若需对文件中的每一行文本进行颠倒显示,可执行以下操作指令:

:g/^/m 0

在 Vim 编辑器中,通过按下 ctrl + g 组合键,您可以查询到文本的行数以及当前光标所处的具体位置;而若需统计字节数,则应执行 g 后再按下 ctrl + g 的操作。

4、对文本进行简单排序:

使用 shift 键加鼠标左键选中连续的多行文本,然后输入命令“: !sort”,观察排序后的效果。

若您希望将当前目录及其子文件夹内所有以 java 为扩展名的文件中的特定内容替换为另一内容,请按照以下步骤操作:首先,在当前目录内执行相应命令。

vim

:n */.java

:argdo %s///ge |

在第四个技巧中,我们之前已经讨论过,这里涉及到“概念”的应用。具体来说,它通过正则表达式在内存中同时打开多个文件,其中“argdo”用于在内存中执行Vim的命令。而“%s///ge”则表示在内存中执行字符串替换操作,其中“g”代表全局替换,而“e”则意味着如果文件内没有可替换的字符串,不会报错,而是继续执行。此外,“|”是管道符号,用于表示替换操作完成后,更新并写入文件。

Vim是一款让人越用越觉得喜爱的编辑工具,阅读完这篇文章后intellij idea产品学习手册,愿你也能对Vim产生浓厚的兴趣,它的名字寓意着“唯有速度不可阻挡”。

文章整理完毕,已是周六傍晚四点有余,然而夜幕降临尚早,我便决定小憩片刻。

那么,你用过哪些好用的编程工具呢?可以在评论里说说。

8月份更换了底部 赞助商:掘金。注意,这不是个炒股软件。

掘金,这是一个汇聚了众多高质量技术资源的技术交流平台,无论是探讨 Swift 编程,还是 React 开发,亦或是性能调优和开源库的使用,都能在这里找到你所需要的技术精华。只需长按图片上的二维码进行识别,或是在各大应用市场中搜索“掘金”,你便能够轻松掌握互联网开发领域的各类技术资讯。

如有侵权请联系删除!

13262879759

微信二维码