2020 年如何学习 Vim 为什么要学习 Vim 学习 Vim 的技巧/窍门 Vim 资源 如何使用 :help 结论

2025-06-07

2020 年如何学习 Vim

为什么要学习 Vim

学习 Vim

学习 Vim 的技巧

Vim 资源

如何使用:help

结论

关注@learnvim获取更多 Vim 技巧和窍门!

我第一次发现 Vim 的时候,觉得它是一款过时的编辑器,而且用起来特别难。直到有一天,我看到我的朋友在 Vim 上耍了个花招。我觉得那是我见过最酷炫的东西。几年过去了,Vim 现在已经成了我的主要编辑器。

在 2020 年,许多人都在使用 VSCode、Sublime 和 Atom 等现代编辑器,学习 Vim 是否值得?

确实。

我将向你展示如何开始学习 Vim。以下是我将涵盖的内容。你不必循序渐进地阅读。

你可能会觉得 Vim 不适合你。这完全没问题。Vim 和其他编辑器一样,只是一个工具而已。归根结底,只要能完成工作就用什么工具就用什么。

为什么要学习 Vim

Vim 一开始并不容易上手。就像开车一开始就不容易一样。骑自行车一开始就不容易。编程一开始也不容易。很多事情一开始都不容易。那么,为什么我们会因为 Vim 一开始就不容易而停止学习它呢?

如果你问:“为什么我 2020 年了还要学习 Vim?市面上有很多很棒的文本编辑器。” 以下是使用 Vim 的一些优势:

  • 轻的。
  • 具有挑战性(适合那些喜欢挑战的人)。
  • 几乎无处不在(如果您需要通过 SSH 连接到服务器,您将找不到 IDE,但几乎总能找到 Vim)。
  • 与命令行良好集成(使用!,您可以执行诸如ls、之类的命令curl。您也可以ex使用运行命令:)。
  • 收获满满,令人满足。(理解 Vim 语法、自定义 Vim、学习 Vim 脚本等等,开启了一个全新的可能性领域。就像玩电子游戏一样,你可以升级、学习新技能,并将它们巧妙地结合起来。)
  • 独特的内置功能。(时间旅行、宏、文本对象、点命令几乎是 Vim 独有的内置功能)。

挑战:

  • 第一次很难退出。
  • 学习曲线陡峭(没有你想象的那么糟糕)。
  • 第一次使用它会降低生产力(学习总是需要时间的。你不必一开始就使用 Vim。保留你常用的编辑器。在你自己的业余项目中随时学习 Vim。当你准备好时再切换)。

学习 Vim

在第一部分中,我将展示一些从零开始学习 Vim 的实用步骤。在第二部分中,我将分享一些实用的技巧。

学习 Vim 的步骤

  • ✅ 了解如何退出 Vim
  • ✅ 完成:vimtutor:Tutor)。
  • ✅ 学习最基本的入门命令:
i (insert mode)
Esc (normal mode/ exit insert mode)
x (delete one character)
h/j/k/l (direction. Personally I would avoid arrow keys from the beginning)
:e {filename} (load document)
:w {filename} (save document)
:q (exit)
:q! (exit + ignore unsaved changes)
Enter fullscreen mode Exit fullscreen mode

接下来,学习稍微高级一点的命令:

dd (cut a line)
yy (copy a line)
p (paste)
/{pattern} (search for text)
n (go to the next result)
:s/pattern/replacement (replace text)
Enter fullscreen mode Exit fullscreen mode

这些应该足够你入门了。还有很多功能我上面没有列出。随着时间的推移,你会逐渐了解它们。

不要觉得你必须掌握 Vim 的全部功能。即使知识有限,你也可以快速高效地工作。有些常用的功能你甚至可能永远不会用到。使用对你最有帮助的功能和工作流程。

学习 Vim 的技巧

  1. 学习 Vim 就是学习一项实用技能。你不是通过阅读自行车书籍来学习如何骑自行车的。你是通过骑自行车来学习如何骑自行车的。你正在建立肌肉记忆。目标是能够不假思索地完成某件事。每天只学几样东西,并学好它们。
  2. 不要复制粘贴别人的vimrc。这会让你看不到 Vim 的原生功能。从空白开始vimrc。了解每一行的作用。你会惊讶地发现,你可能不需要那么多插件。
  3. 学习触摸打字
  4. 启动时,强制自己使用hjkl。你可以在 vimrc 中添加以下内容:
noremap <Up> <Nop>
noremap <Down> <Nop>
noremap <Left> <Nop>
noremap <Right> <Nop>
Enter fullscreen mode Exit fullscreen mode

或者安装vim-hardtime插件。

Vim 资源

下面,我整理了一些学习 Vim 的热门资源。

图书

我发现非常有用的书籍:

  1. 实用 Vim
  2. 掌握 Vim
  3. Vim 简明教程
  4. 更多书籍列表请点击此处

文章

“必读” Vim 文章:

  1. 最后一次学习 vim:教程和入门
  2. Grokking Vi
  3. 我为什么喜欢 Vim:正是那些鲜为人知的功能让它如此神奇
  4. 运算符,Vim 的真正力量
  5. 回归 Vim
  6. Vim 反模式

杂项在线资源

其他在线资源:

  1. Vim reddit上的 vim 讨论/技巧/问答
  2. Vimcasts教程
  3. Vimgolf训练
  4. OpenVim
  5. Vim 冒险
  6. Derek Wyatt Vim 教程
  7. 艰难地学习 Vimscript

插件列表

一旦你熟悉了,就可以随意添加插件了。这里有一个(个人意见)插件列表,可以让 Vim 更像“IDE”:

  1. 快速引用/括号:vim-surround
  2. 搜索:fzf.vim
  3. 实用配置:vim-sensible
  4. NERDTree:nerdtree(替代:netrw,或其增强版vim-vinegarranger
  5. Emmet:emmet-vim
  6. 标签:vim-gutentags
  7. 自动完成:(youcompletemecoc.nvimdeoplete
  8. 语言包:vim-polyglot
  9. tmux 集成:vim-tmux-navigator
  10. 评论:vim-commentarytcomment
  11. LSP 支持/语法:ale
  12. Git:vim-fugitive(也包括vim-gitgutter
  13. 缩进:indentline
  14. 文本对象:vim-textobj-user

如何使用:help

在某些时候,您将需要开始使用 Vim 的内置功能:help来掌握 Vim。

了解如何使用 Vim 的内置帮助很有用。

自动完成

Vimhelp允许你使用 Tab 键自动完成。如果你想了解更多关于 Vim 的信息colorscheme,可以输入:h color并按下<TAB>。Vim 会显示不同的选项供你选择。你可以使用 向前导航<TAB>,使用 向后导航<SHIFT> + <TAB>

跳转到定义

在帮助中,有时您会看到链接(颜色不同)。将光标放在链接上,可以使用 跳转到定义C-]

C-o您可以使用和切换上一个/当前窗口C-i

帮助

Vim 有一个不太为人所知的功能,叫做:helpgrep。它的作用就像字面意思一样:grepping help。它会在所有帮助部分中搜索短语。

例如,如果你想查看与“colorscheme”相关的所有内容,你可以执行:helpgrep colorscheme"。Vim 会搜索所有“colorscheme”关键字,并将它们列在 Quickfix 窗口 ( :h quickfix) 中。

一些有用的导航:

  1. 使用以下命令列出所有 helpgrep 结果:clist
  2. 前往下一场比赛:cnext
  3. 转到上一场比赛:cprev

结论

2020 年学习 Vim 还来得及吗?不。

你必须学习 Vim 才能成为更好的程序员吗?绝对不是。我见过很多比我更优秀的程序员,他们甚至不用 Vim。

Vim 有挑战性吗?要成为 Vim 大师需要花费一生的时间(我现在还是 Vim 的学习者)。Vim 与我用过的其他编辑器都不一样。总有一些东西可以探索。Vim 很有挑战性,而且是充满乐趣的挑战。

最后——我再强调一遍——用最适合你工作的工具。也许是 Vim,也许是 VSCode,也许是 Notepad++——或者两者都用。精通多种工具总是好的。

让我们把事情做好吧。

文章来源:https://dev.to/igredible/learning-vim-in-2020-1mma
PREV
在 Tmux 中轻松复制文本的方法总结
NEXT
How To Search And Replace String Across Multiple Files in Vim Single-file search and replace (substitution) Args Method1: Using argdo Method2: perform substitution with macros and repeat it