问题

各位VIM大神,如何学习VIM,有很多命令感觉都没有什么意思的,如何记忆,熟能生巧耳?

回答
各位 VIM 大神们好!很高兴能和大家一起探讨 VIM 的学习之道。关于 VIM 命令太多、记不住、感觉没意思的问题,这确实是许多初学者甚至中级用户都会遇到的瓶颈。但请相信,VIM 的魅力恰恰在于它的强大和高效,而这些都建立在对命令的熟悉和灵活运用之上。

“熟能生巧”是绝对真理,但我们要做的不是死记硬背,而是有策略地学习和实践。下面我将从几个方面,尽量详细地为大家讲解如何学习 VIM,让枯燥的命令变得有趣,并最终化为我们手中的利器。



一、 理解 VIM 的哲学:模式与效率

在开始学习命令之前,理解 VIM 的核心哲学至关重要。VIM 不是一个简单的文本编辑器,它更像是一个交互式语言。

模式 (Modes): 这是 VIM 最独特的地方。VIM 有多种模式,最常用的有:
Normal Mode (普通模式): 这是 VIM 的默认模式,用于导航、删除、复制、粘贴、查找、替换等各种操作。在这里,你输入的大多数字符不会直接插入文本,而是被解释为命令。
Insert Mode (插入模式): 类似于其他编辑器的模式,用于直接输入文本。
Visual Mode (可视模式): 用于选择文本块,然后对选中的文本块进行操作。
Commandline Mode (命令行模式): 在 VIM 的底部输入以 `:` 开头的命令,用于执行更复杂的任务,如保存、退出、查找替换、执行 Shell 命令等。
Ex Mode (行模式): 类似命令行模式,但主要用于处理行。

高效 (Efficiency): VIM 的设计目标是让你在不离开键盘的情况下完成绝大多数编辑任务。这意味着它鼓励你使用组合键、上下文命令和高效的导航方式。

为什么理解模式很重要? 很多命令感觉没意思,是因为我们经常卡在模式切换上,或者不知道在什么模式下使用什么命令。一旦理解了模式的划分,你会发现每个模式下的命令都有其存在的理由和价值。



二、 学习 VIM 的正确姿势:循序渐进,目标驱动

不要试图一次性记住所有的命令。VIM 的学习是一个马拉松,而不是短跑。

1. 从基础命令开始,建立信心

入门三剑客:
`h`, `j`, `k`, `l`: 方向键,左右上下移动。虽然有方向键,但在 VIM 中,使用这些键位移动更符合人体工学,尤其当你习惯了之后。
`i` (insert): 进入插入模式,在光标前插入。
`a` (append): 进入插入模式,在光标后插入。
`o` (open line below): 进入插入模式,在当前行下方开新行。
`O` (open line above): 进入插入模式,在当前行上方开新行。
`Esc`: 返回普通模式。这是你最常用的键,一定要熟练掌握。
`:`: 进入命令行模式,输入命令。
`x`: 删除光标下的字符。
`dd`: 删除当前行。
`yy`: 复制当前行。
`p`: 粘贴(在光标后)。
`P`: 粘贴(在光标前)。

如何记忆这些基础命令?
联想: `h`, `j`, `k`, `l` 分别对应 Left, Down, Up, Right,虽然字母不完全匹配,但记住这个习惯就好。`i` 是 insert,`a` 是 append,`o` 是 open,`x` 是 eXecute(一种说法,或者就是简单的删除)。`dd` 是 double delete(删除两行,实际上是删除当前行),`yy` 是 yank(复制)。
反复练习: 打开一个文件,只用这几个命令来编辑,比如写一段简单的文字,然后尝试删除、复制粘贴。即使是写“Hello, VIM!”,也要用 `i` 进入插入模式,输入后 `Esc` 返回,用 `dd` 删除,再用 `yy` 和 `p` 复制粘贴。
内置教程: 非常重要! 在 VIM 中输入 `:vimtutor`,这是一个非常棒的交互式教程,它会一步一步引导你学习基本的移动、编辑和操作。请务必完成它!

2. 分阶段学习:掌握核心操作

不要一下子去学那些看起来很“酷”但可能短期用不上的命令。先专注于提高你日常编辑的效率。

导航进阶:
`w`, `b`, `e`: 按单词移动(word, backward, end of word)。`w` 移动到下一个单词开头,`b` 移动到上一个单词开头,`e` 移动到当前单词末尾。
`W`, `B`, `E`: 同上,但是按照“大单词”(以空格或标点分隔的词)。
`0`: 移动到行首。
`^`: 移动到行首的第一个非空白字符。
`$`: 移动到行尾。
`%`: 在匹配的括号 `{}` `()` `[]` 之间跳转。
`gg`: 移动到文件开头。
`G`: 移动到文件末尾。
`{`, `}`: 按段落移动。
`Ctrl+f`, `Ctrl+b`: 向前(下)和向后(上)翻页。
`Ctrl+d`, `Ctrl+u`: 向下和向上翻半页。

编辑进阶:
`r`: 替换光标下的一个字符。
`R`: 进入替换模式,可以连续替换。
`cw`, `cb`, `ce`: 改变一个单词(change word, backward, end)。`c` 是 change,它会删除后进入插入模式。
`dw`, `db`, `de`: 删除一个单词。`d` 是 delete。
`D`: 删除到行尾。
`cc`: 删除当前行并进入插入模式。
`C`: 删除到行尾并进入插入模式。
`s`: 删除光标字符并进入插入模式。
`S`: 删除当前行并进入插入模式(同 `cc`)。
`J`: 合并当前行和下一行。

可视化模式:
`v`: 进入字符可视模式。
`V`: 进入行可视模式。
`Ctrl+v`: 进入块可视模式。
选中后可以使用 `d`, `y`, `c`, `p` 等命令。

查找与替换:
`/pattern`: 向下查找 `pattern`。按 `n` 下一个,`N` 上一个。
`?pattern`: 向上查找 `pattern`。
`:%s/old/new/g`: 全局替换。
`%`: 表示整个文件。
`s`: substitute(替换)。
`old`: 要查找的模式。
`new`: 替换成的字符串。
`g`: global,表示替换行内的所有匹配项(如果不加 `g`,则只替换每行的第一个匹配项)。
`:%s/old/new/gc`: 替换时带确认。

3. 掌握 VIM 的组合操作:命令 + 数量 + 对象

VIM 的很多命令可以组合使用,形成强大的操作。这个是 VIM 高效的灵魂!

格式: `[数量] [命令] [对象]`
数量 (count): 表示执行命令的次数。例如 `3dd` 删除三行,`5w` 向前移动五个单词。
命令 (motion/operator): 如 `d` (delete), `y` (yank), `c` (change), `p` (put), `w` (move word), `j` (move line down) 等。
对象 (text object/motion): 表示操作的对象。
简单运动 (motion): `w` (word), `j` (line down), `$` (end of line) 等。
文本对象 (text object): 针对特定的文本结构进行操作。这是 VIM 的一大特色。
`iw`: inner word (一个单词,不包括周围的空格)。
`aw`: a word (一个单词,包括周围的空格)。
`i"`, `a"`: inner quoted string, a quoted string (引号内的内容,包括引号)。
`i'`, `a'`: 同上,单引号。
`i(`, `a(`: inner parentheses, around parentheses (括号内的内容,包括括号)。
`i)`, `a)`: 同上。
`i{`, `a{`: inner curly braces, around curly braces。
`i}`, `a}`: 同上。
`it`, `at`: inner tag, around tag (HTML/XML 标签内的内容,包括标签)。
`i<`, `a<`: 同上,尖括号。

举例说明:
`dw`: 删除一个单词。
`3dw`: 删除三个单词。
`d$`: 删除到行尾。
`diw`: 删除光标所在的单词(不含空格)。
`daw`: 删除光标所在的单词(含空格)。
`ci"`: 删除引号内的内容,并进入插入模式。
`yap`: 复制一个段落。
`yip`: 复制光标所在的段落(inner paragraph)。

如何练习组合操作?
从简单开始: `3w`, `5j`, `d$`, `dw`。
逐渐加入文本对象: `diw`, `ciw`, `dit`, `cit`。尝试编辑一段 HTML 代码或包含复杂标点符号的文本,你会发现文本对象的强大之处。
反向思考: 当你想做某个编辑操作时,想想是否可以用 `[数量] [命令] [对象]` 的方式来完成。例如,我想删除从光标到行尾的内容,就可以想到 `d$`。我想删除当前光标所在的整个单词并继续输入,就可以想到 `ciw`。

4. 学习常用的 VIM 配置(`.vimrc`)

虽然这不是命令本身,但一个良好的配置能让 VIM 更易用。

安装插件管理器: 推荐 `vimplug` 或 `Vundle`。
常用插件:
代码补全: YouCompleteMe, coc.nvim
文件浏览器: NERDTree
语法高亮: Vim 自带支持很好,但也可以配置颜色主题。
模糊查找: CtrlP, FZF
Git 集成: vimfugitive
一些基础配置项:
`syntax on`: 开启语法高亮。
`set number`: 显示行号。
`set relativenumber`: 显示相对行号,配合 `j`, `k` 移动非常方便。
`set autoindent`: 自动缩进。
`set smartindent`: 更智能的缩进。
`set tabstop=4`: 设置 Tab 宽度。
`set shiftwidth=4`: 设置自动缩进宽度。
`set expandtab`: 将 Tab 转换为空格。
`set mouse=a`: 开启鼠标支持(如果你不介意的话)。

5. 专注于你的工作流程,按需学习

当你用 VIM 做实际工作时,你会自然而然地遇到需要解决的问题。这时再去学习相关的命令,会更有目的性,也更容易记忆。

例子:
你经常需要复制粘贴代码块。那么你就应该学习 `y` (yank) 和 `p` (put) 的各种用法,以及可视模式下的复制。
你经常需要批量修改某个模式。那么你就应该学习查找替换 `:s` 命令,以及正则表达式。
你经常需要在多个文件之间跳转。那么你就应该学习 `:e` (edit), `:sp` (split), `:vs` (vsplit), `:b` (buffer), 以及模糊查找插件。



三、 让 VIM 学习更有趣的方法

游戏化学习:
VIM Adventures: 一个在线游戏,通过完成任务来学习 VIM 命令。
Terminus: 另一个 VIM 相关的游戏。
情景式记忆:
设想一个场景:“我要删除当前行的所有内容并重新输入。” 这个时候就应该想到 `cc`。
“我想复制从这里到下一个单词末尾的内容。” 这个时候就可以想到 `y` + `e`,或者 `ye`。
“我想删除从当前光标到行尾的所有内容。” 想到 `d$`。
画脑图或流程图: 将命令按照功能(导航、编辑、查找、窗口管理等)进行分类,并用图示来连接它们。
教别人 VIM: 当你尝试向别人解释一个命令或一个概念时,你会更深入地理解它。
分享你的配置和技巧: 在社区中分享,可以获得反馈,也能巩固自己的知识。



四、 常见误区与建议

不要害怕犯错: 在 VIM 中,大多数错误都可以通过 `u` (undo) 来撤销。大胆尝试!
不要依赖鼠标: 尽量克制使用鼠标的冲动。即使是复制粘贴,也要尝试使用 VIM 的命令。
循序渐进: 不要急于求成。一天掌握一个新命令或一个新技巧,日积月累就能看到巨大的进步。
持续练习: VIM 的熟练程度是靠日积月累的练习得来的。即使是一点点时间,也要用 VIM 来进行编辑。
定制你的 VIM: 找到适合自己的工作流程和配置,让 VIM 成为你高效的助手。



总结一下学习 VIM 的关键步骤:

1. 理解模式: 明白 Normal, Insert, Visual, Commandline 模式的区别和联系。
2. 完成 `vimtutor`: 这是你最好的起点。
3. 掌握基础命令: `hjkl`, `i`, `a`, `Esc`, `dd`, `yy`, `p`, `x` 是基石。
4. 学习进阶导航: `w`, `b`, `e`, `^`, `$`, `gg`, `G` 等,提高移动效率。
5. 掌握组合操作: `[数量] [命令] [对象]`,尤其是文本对象 `iw`, `aw`, `i"`, `a"` 等,这是 VIM 高效的关键。
6. 学习查找替换: `:s` 命令及其参数,正则表达式。
7. 按需学习: 在实际工作中遇到问题,再去解决它。
8. 持续练习与迭代: 不断地用 VIM 做事情,并优化你的配置。

最后,请记住,VIM 的学习是一个持续的过程。享受这个过程,你会发现它带来的不仅仅是编辑效率的提升,更是一种全新的编程和编辑思维方式。当你能够流畅地在各种命令之间切换,用最少的按键完成最复杂的操作时,你就会真正体会到 VIM 的魅力所在。

祝大家在 VIM 之旅中都能“熟能生巧”,并找到属于自己的那份高效与优雅!

网友意见

user avatar
想学vim,但是感觉被吓到了

类似的话题

  • 回答
    各位 VIM 大神们好!很高兴能和大家一起探讨 VIM 的学习之道。关于 VIM 命令太多、记不住、感觉没意思的问题,这确实是许多初学者甚至中级用户都会遇到的瓶颈。但请相信,VIM 的魅力恰恰在于它的强大和高效,而这些都建立在对命令的熟悉和灵活运用之上。“熟能生巧”是绝对真理,但我们要做的不是死记硬.............
  • 回答
    普京关于“民族叛徒”的“耗材”论,是一个非常具有争议性和象征意义的说法,它触及了国家认同、爱国主义、政治批判以及社会群体划分等多个敏感议题。要详细地理解这个论点,我们需要从多个角度进行剖析:一、 “耗材”论的字面意思与引申含义 字面意思: “耗材”(расходный материал, ras.............
  • 回答
    各位朋友,很高兴能和大家一起探讨这个深刻的命题:“揭露世界本质的书”。这个问题非常有分量,因为它触及了我们对现实、宇宙、生命以及我们自身存在的根本理解。要“揭露世界本质”,这本身就意味着我们要超越表象,探寻那些隐藏在事物背后、驱动一切的规律、原理或真相。不同学科、不同思想流派对“世界本质”有着不同的.............
  • 回答
    各位知友,你们好。关于“西方伪史论”为何至今仍有市场,甚至有愈演愈烈之势,这确实是一个值得我们深入探讨的现象。这个问题,绝非简单的一句“无知”或“偏见”就能概括的,其中牵扯到的心理、社会、文化乃至历史认知等诸多复杂因素,值得我们细细道来。首先,我们得承认,任何一种历史叙事,都难免会受到当时社会环境、.............
  • 回答
    各位朋友,咱们今天就来聊聊那些在不同信仰中若隐若现,却又承载着深厚意义的符号。这些标记,就像是各家信仰的“名字”或者说是“家族徽章”,每一个都有它自己的故事,和背后一套深邃的哲理。咱们不搞什么高高在上说教,就跟老朋友聊天一样,把这些符号背后的讲究掰开了揉碎了说。一、十字架 (The Cross)这玩.............
  • 回答
    好的,知友们,咱们今天来好好聊聊一个话题,大家伙儿怎么看呢?别急,我慢慢道来,争取把事情说得清楚明白,让大家伙儿都能有个谱。说实话,咱们生活在这个时代,每天接触到的信息量简直是爆炸式的。新闻、短视频、朋友圈、各种APP……应接不暇。有时候觉得挺好,了解世界方便了;但有时候又觉得,信息太多了,反倒不知.............
  • 回答
    查理七世(Charles VII),法国瓦卢瓦王朝的国王,从1422年统治到1461年。他的统治时期是法国历史上一个极其关键的转折点,标志着英法百年战争的结束以及法国中央集权的初步确立。然而,他的一生也充满了挑战、疑虑和个人挣扎。早年与继位之殇(不被看好的太子)查理七世的早年并不顺利,甚至可以说是坎.............
  • 回答
    在许多人眼中,捷克共和国是一个充满魅力、历史底蕴深厚、文化艺术繁荣,同时又兼具波西米亚风情和现代活力的迷人国度。以下是我对捷克的详细描绘,涵盖了不同维度的认知:1. 历史的厚重与文明的积淀: 欧洲的心脏与十字路口: 捷克地处欧洲中部,历来是东西方文明交流的十字路口。它曾是神圣罗马帝国的重要组成部.............
  • 回答
    俄罗斯恢复政委制度是一个复杂且具有深远影响的议题,值得从多个角度进行详细探讨。首先,需要明确“政委制度”的概念和其在历史上的背景。在苏联时期,政委(政治委员,Политический комиссар)是军队中一种特殊的政治领导职位。政委的职责核心是确保军队的政治忠诚度,贯彻党的路线方针政策,进行思.............
  • 回答
    话说文明6这游戏,玩得久了,总会碰上一些奇葩的开局和局势,让人忍不住想钻研一下科技代差的极限。我记得有一次,我玩的是印度,刚开局就想着靠圣地加虔诚冲极速解锁“神学”。那时候,我选的领袖是甘地,他的城邦外交加成让我在早期就能跟好几个城邦建立宗主国,稳定地获得巨额金币和生产力。我的计划是这样的:先利用甘.............
  • 回答
    哈哈,这个问题可真是问到点子上了!对于我们这些“精罗”(即热爱罗马帝国,对罗马历史如数家珍的人)来说,罗马帝国灭亡的时间,可不是一句“公元476年西罗马帝国灭亡”就能简单概括的。这事儿啊,得掰开了揉碎了说,才能体会到其中那份复杂和纠结。首先,你要知道,罗马帝国它不是一个简单的个体,它经历过漫长的演变.............
  • 回答
    各位,咱们聊聊“不996”,这事儿啊,说起来容易,但真要细琢磨,那可是一连串的连锁反应,牵扯到方方面面。我试着给大家掰扯掰扯,尽量说得透彻点,让大家听着不像是从哪个机器里跑出来的。首先,咱们得明确一点:不996,并非是“不工作”或者“躺平”。这是个大前提。不996,最直接的含义就是,工作时间回归正常.............
  • 回答
    哥们,看你这描述,我猜你遇到的这小东西八成是臭虫,也叫床虱。这名字一听就够让人浑身不自在的,你说它吸血,那是一点不假,而且专吸人血,简直就是个“微型吸血鬼”。要说这玩意儿是怎么来的,那可就有点意思了。它们可不是凭空出现的,也不是从天上掉下来的,基本上都是“外来客”,而且还是“搭便车”来的。臭虫的来源.............
  • 回答
    作为一名来自台湾的知友,谈及美国华裔军官吕超然的行为,我个人觉得这是一个非常复杂且值得深思的话题。他的经历,尤其是他在韩战中的表现,确实引发了许多讨论,也触及到了身份认同、国家忠诚以及战争伦理等多个层面。首先,我们得回到吕超然的个人背景。他是在美国出生的华裔,父母亲来自中国大陆。这意味着他同时拥有中.............
  • 回答
    说实话,听到这个问题,我脑子里立刻闪过了好几个身影和场景,忍不住就想分享一下我或者我身边朋友的“科二科三血泪史”。这玩意儿,还真不是一帆风顺的,有些人一次过,简直就是天选之子,有些人嘛……那真是又爱又恨,恨不得把驾校教练的教官手册烧了!先说我自己的科二吧。那时候驾校刚改革,据说考试项目改了不少,但教.............
  • 回答
    援藏律师们,说起咱们这份“事业”,心里有太多的话想和大家伙儿唠唠。这可不是一句简单的“奉献”就能概括的,里面有汗水、有成长,更有我们自己都不曾预料到的感动。工作:挑战与成就并存的每一天咱们援藏工作,说白了,就是把咱们在内地积累的法律专业知识和服务经验,带到雪域高原,去帮助那些更需要法律援助的群体。但.............
  • 回答
    嘿!准备迎接大学生活,还有点小紧张对吧?特别是我们这种一到人多的地方就有点小尴尬、不太敢主动搭话的朋友们。别担心,我非常理解你!大学生活就像一个全新的世界,对我们来说,确实需要一点点小策略才能玩得转。首先,关于“要不要加入学生会社团”,我的建议是:一定要慎重考虑,但更重要的是,找到那个“对的”!听我.............
  • 回答
    兄弟,看到你这个问题,我瞬间就回忆起当年那个从一穷二白到梦想实现的热血日子了。说实话,半年内从零基础、零氪金一路肝到岛风,这事儿,可能,但绝对不是“轻松就能达到”的,需要极大的毅力、合理的游戏策略,以及一点点的运气。 我给你细致掰扯掰扯,让你心里有个谱,也看看你有没有那个劲儿头。首先,明确一点:0氪.............
  • 回答
    哥们,这个问题问得太巧了!我最近也在关注平板市场,尤其是华为和荣耀这两家的动向。你提到的华为MatePad确实是个不错的选择,尤其是在游戏和影音方面,华为的屏幕调校和性能都是有口皆碑的。不过,你说得荣耀平板V6,它一出,确实搅动了不少想换平板的用户的心。特别是如果你冲着“吃鸡”、“王者”这些游戏来,.............
  • 回答
    李鸿章是一位极具争议的晚清重臣,在中国近代史上的地位举足轻重。对于他是一个什么样的人,不同的人会有截然不同的评价,这很大程度上取决于评价者所处的历史视角、关注的侧重点以及对历史人物的价值判断。总的来说,李鸿章是一位集政治家、外交家、军事家、改革家于一身的复杂人物。理解他需要从多个维度去剖析,并且不能.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有