为了账号安全,请及时绑定邮箱和手机立即绑定

Vim不仅仅是提速的工具

标签:
Python Linux Go

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

以删除一个词为例。当你刚开始学 Vim 时,你发现可以通过把光标移到词的开头并按 dw 来删掉这个词。接着你会发现 d 代表删除,而 w 表示移动(指定了在文本的哪个部分执行命令)。接着你还会发现可以使用其他移动命令来进行删除,比如 `d# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

可以删除到行尾,而 dj 可以删除当前行及其下一行(默认 j 会把光标移向下一行)。

Animated gif showing the ‘d’ motions of VIM

到这儿你可能会觉得需要记住很多特定命令来完成特定任务,但假设你现在需要复制文本而不是删除——这时你需要记住命令 y(yank),仅此而已。如果你已经知道 dw、`d# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

以删除一个词为例。当你刚开始学 Vim 时,你发现可以通过把光标移到词的开头并按 dw 来删掉这个词。接着你会发现 d 代表删除,而 w 表示移动(指定了在文本的哪个部分执行命令)。接着你还会发现可以使用其他移动命令来进行删除,比如 `d# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

可以删除到行尾,而 dj 可以删除当前行及其下一行(默认 j 会把光标移向下一行)。

Animated gif showing the ‘d’ motions of VIM

dj,只需将 d 改为 y,就可以复制到单词末尾、行末或当前行及其下一行:yw、`y# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

以删除一个词为例。当你刚开始学 Vim 时,你发现可以通过把光标移到词的开头并按 dw 来删掉这个词。接着你会发现 d 代表删除,而 w 表示移动(指定了在文本的哪个部分执行命令)。接着你还会发现可以使用其他移动命令来进行删除,比如 `d# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

可以删除到行尾,而 dj 可以删除当前行及其下一行(默认 j 会把光标移向下一行)。

Animated gif showing the ‘d’ motions of VIM

yj 都能像你预期的那样工作。

但随后你将了解到更高级的文本对象,例如使用这些文本对象 iwipi)。这些文本对象分别表示单词内的文本(iw)、段落内的文本(ip)和括号内的文本(i))。只需学习这三个新文本对象,你就可以通过在命令前加上 d 或 y 来删除或复制光标所在单词、段落或括号内的所有文本内容,无论光标位于单词、段落内还是括号内何处。

Animation showing some ‘y’ motions of Vim in action

假设你需要将一些文本全部改为小写,并且你在网上发现一个命令 gu 可以实现这一点。你可以用这个命令结合之前学过的任何移动命令,只需改变命令部分 — guw,`gu# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

以删除一个词为例。当你刚开始学 Vim 时,你发现可以通过把光标移到词的开头并按 dw 来删掉这个词。接着你会发现 d 代表删除,而 w 表示移动(指定了在文本的哪个部分执行命令)。接着你还会发现可以使用其他移动命令来进行删除,比如 `d# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

可以删除到行尾,而 dj 可以删除当前行及其下一行(默认 j 会把光标移向下一行)。

Animated gif showing the ‘d’ motions of VIM

到这儿你可能会觉得需要记住很多特定命令来完成特定任务,但假设你现在需要复制文本而不是删除——这时你需要记住命令 y(yank),仅此而已。如果你已经知道 dw、`d# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

以删除一个词为例。当你刚开始学 Vim 时,你发现可以通过把光标移到词的开头并按 dw 来删掉这个词。接着你会发现 d 代表删除,而 w 表示移动(指定了在文本的哪个部分执行命令)。接着你还会发现可以使用其他移动命令来进行删除,比如 `d# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

可以删除到行尾,而 dj 可以删除当前行及其下一行(默认 j 会把光标移向下一行)。

Animated gif showing the ‘d’ motions of VIM

dj,只需将 d 改为 y,就可以复制到单词末尾、行末或当前行及其下一行:yw、`y# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

以删除一个词为例。当你刚开始学 Vim 时,你发现可以通过把光标移到词的开头并按 dw 来删掉这个词。接着你会发现 d 代表删除,而 w 表示移动(指定了在文本的哪个部分执行命令)。接着你还会发现可以使用其他移动命令来进行删除,比如 `d# Vim不仅仅是提速的工具

没错,为了快那么几秒花几天时间确实有点傻,但这从来不是目的。

人们常误解Vim的一个地方是,我们使用Vim或NeoVim的理由不只是为了编写代码更快。这听起来可能有点愚蠢,为了这点好处而学习Vim确实有些荒唐。但请记住,这并不是唯一的原因。

其实我们学 Vim 都是为了能说“顺便提一下,我用 Vim”。

Porky Pig with the saying “That’s all folks!” above and “I use Vim by the way!” below

其实并没有。我的意思是,速度和梗确实是很酷的理由去喜欢使用Vim,但我只是觉得这还不足以成为学它的理由。我写这篇文章的目的是提供一些见解,解释为什么人们会坚持使用一个看似古老的编辑器,它在人们只能在PC上写绿色文字在黑色背景上时才有意义。

这里有一些需要注意的事项

在我开始这段旅程之前,我必须说明,刚开始使用Vim时,我的经历和大多数人一样顺畅。

第一次不小心我在输“git commit”时,搞砸了,忘了加“-m”和消息。结果我不得不关掉我的终端。

然后过了些时候,出于好奇,我决定看看它究竟是什么,并学习最基本的来理解它的要点。结果我尝试了所有可能的按键组合,做了所有可能的编辑动作——除了基本的事情,比如输入“Hello World”这样的简单事。

Meme comic story with two frames — the first has man reaching for a ball with the name Vim and the saying “Me trying to learn vim” on the man. The second frame has a monster with the saying “Realizing no characters appear when I press keys” hoding the man that was trying to reach for the ball.

只有几年后,我终于决定有效地学习如何使用 Vim 的移动操作(最初我是通过 VS Code 的 Vim 插件来完成的),最终加入了那些只用别人不用的工具的人。我这么说是为了让你们知道,如果你觉得 Vim 没用、过时或奇怪,那你并不孤单——在我们学会 Vim 的用法之前,我们所有人以前也是这么想的。

为什么 Vim 很酷

让我来解释一下,我特别喜欢 Vim,并不是因为它能帮你省下一些按键和时间。关键是流畅性。 我们不仅写得更快,思考和实际操作的过程也更加行云流水。

我喜欢的一个比喻是从点A到点B,就像有两种不同的路可走。第一条路就像一个迷宫,里面挤满了人,你每走一步都会被他们撞到,而且这条路上充满了选择,很多选择都是死胡同,你要时刻保持专注,不然很容易被这些选择搞晕。这就是我现在用IDE的感觉——我确实能到达点B,甚至凭借我现在的经验,还能很快到达。只是这个过程一点也不愉快。如果我经常需要匆匆忙忙地走这条路,就会觉得很累。

AI digital painting of a crowded city full of signs pointing everywhere

我用鼠标在IDE中操作的过程,由Dall-E 3渲染(因为写这篇文章已经花了不少时间和精力,而且没有用AI生成文字)

第二种方式就像在公园散步一样——如果你四处张望,可能会有些分心的事物,但它们通常是令人愉快的,如果你专注于目标,甚至不会注意到它们的存在。这就是 Vim-motions 给我的感觉。我可以轻松地看到我的目标,并且有一条明确的路线可以到达那里,所以如果我需要走得更快,那只是更顺畅的旅程。

AI digital painting of a beautiful park with a lake and many trees.

在我的 tmux + NeoVim 配置中导航代码时,体验由 Dall-E 3 渲染带来的快乐。

即使两种方式用时相同,从A点到B点,我还是更喜欢第二种方式,因为它更令人愉快且不那么累人。但事实证明,Vim 操作不仅更顺手,而且更快捷,因此大多数精通它的人通常会继续使用它。

这里提到的是Vim的移动命令,而不是Vim本身,因为有些人在使用Vim或NeoVim一段时间后会回到像VS Code或JetBrains这样的编辑器或IDE——但大多数人仍然会在这些编辑器中使用Vim的移动命令,因为它确实更好。对于不了解Vim(及其精神继承者NeoVim)的人来说,Vim是一款在终端上直接运行的命令行编辑器。我们用来在其中导航和编辑文本的方式(也就是Vim移动命令)非常有效,以至于许多扩展和插件会模仿这种行为,甚至在其他编辑器或IDE中也是如此。我想强调的是这些Vim移动命令,因为我认为Vim的大部分价值就体现在这里。

Suspicious Fry from Futurama meme with the sayings “But these so called Vim motions are counter-intuitive” above and “And you’re telling they are the best part?”

用户友好性是一个复杂的问题,对初学者友好只是其中一方面。Vim 对初学者并不友好,这一点是众所周知的。但在我的看法中,Vim 在其他方面为高级用户提供了一个其他工具都无法比拟的出色体验。很多时候,对初学者来说直观的操作,对有经验的用户来说可能会显得缓慢或烦人。

比如使用微软 Word。它有许多图标,通常会直接显示其功能,比如下划线按钮显示为带下划线的 U,斜体按钮显示为斜体的 I — 这使得初学者更容易上手,因为他们可以通过简单尝试来发现很多功能。然而,每次加样式都点击图标可能不太实际 — 如果你经常需要加样式,学习快捷键比如 Ctrl+U 或者 Ctrl+I 会更方便。它的用户友好之处在于,它会在你还没有学会或者不需要高级命令的时候引导你完成任务。等你学会这些高级命令,你就能更高效地工作了。

话说 Vim……它就像是文本编辑器中的“暗魂”。它就像是“不劳无获”的化身——没有简单的学习曲线,而是一座你必须攀登的高山。但是当你开始攀登这座山时,你会发现它能给你带来一种在易用的工具中根本找不到的生产力水平。它开始感觉甚至比传统的编辑方式更加直观——而当你理解了它的机制后,你会发现自己变得非常强大。

Skeptical third world kid with the sayings “So you’re admitting Vim is not beginner friendly” above and “but you want to convince me it’s intuitive?” below

我能理解这可能很难掌握,但请先忍耐一下。Vim 对初学者来说难学的原因在于它让你与文本交互的方式与大多数其他工具不同——所以你必须先了解它是如何工作的,才能理解发生了什么。在你学习基础知识的过程中,确实会发现做简单的事情会困难得多,因为它与大多数其他工具不同。当你开始上手时,你会发现在原来能做的事情之外,还能更容易地学习 Vim 中的新东西。

可以删除到行尾,而 dj 可以删除当前行及其下一行(默认 j 会把光标移向下一行)。

Animated gif showing the ‘d’ motions of VIM

yj 都能像你预期的那样工作。

但随后你将了解到更高级的文本对象,例如使用这些文本对象 iwipi)。这些文本对象分别表示单词内的文本(iw)、段落内的文本(ip)和括号内的文本(i))。只需学习这三个新文本对象,你就可以通过在命令前加上 d 或 y 来删除或复制光标所在单词、段落或括号内的所有文本内容,无论光标位于单词、段落内还是括号内何处。

Animation showing some ‘y’ motions of Vim in action

gujguiwguipgui) 都会像你预料的一样工作。如果你用 gU 替换 gu,它会将文本改为大写。

Animation showing some gu movements of vim in action

但是现在假设你用Vim已经很溜,想要秀一下你的技术。你可以安装由tpope开发的surround.vim插件,然后用像ysip}这样的命令惊艳众人。比如,ys代表插入包裹,ip代表你在括号内的移动,而}是你要用来包裹文本的字符。

Animation showing some advanced vim motions including some from surround.vim

如果你这些看起来太复杂,一次无法掌握,别担心,确实一次学太多内容太难了——学习 Vim 的最佳方式是先掌握一些如 dcy 的基本命令,并先用简单的移动命令,如 we,熟悉它们。当你习惯了这些命令并将其转化为肌肉记忆时,你就可以开始学习更多移动命令。好在你学到的每样东西都会丰富你的工具箱,并且可以和其他已经学会的技巧结合使用。

这就是为什么Vim变得如此直观:学习Vim一开始确实很难,但一旦你开始学习,你学到的每一个小细节都让你的能力像滚雪球一样快速提升。

Confused lady/Nazaré Todesco meme with the sayings “But what is the relation between this” above and “and the flow you mentioned before?” below

关键是,Vim 的移动操作常常感觉更像一种你使用的语言,而不是一系列快捷键——用得越熟练,就越能发现表达相同意思的更自然的方式。因此,你会发现更多的方法来表达相同的意思。

当你在学葡萄牙语时,并且想要在巴西要一瓶水时,你可能会学到说类似“Por favor, você poderia me trazer uma garrafa de água?”(你能给我来一瓶水吗?)这样的句子,而当你第一次说时,你可能需要停下来回忆每个单词。

当你更流利地使用这种语言时,像“Eu gostaria de uma água sem gás”(我想喝一瓶矿泉水)或“Me dá uma água sem gás, por favor”(请给我一瓶矿泉水,谢谢)这样的句子会更自然地脱口而出,并且基本上能达到同样的效果。有时你会听到当地人说类似“Uma água aqui, meu chapa”这样的话,这也可能以更短的方式达到同样的效果,但效果取决于诸如语调、语境和肢体语言等因素——就像使用别人的Vim配置可能感觉非常别扭一样。

而这正是 Vim 的操作的魅力之一——当你用得久了,一些命令和移动就会变成肌肉记忆,你会开始发现更多新的方法来做你想做的事情。你学得越多,就越容易做到你想做的任何事情。

此外,人们有一个误解,认为使用 Vim 可以更快地编写,而不是认为这应该用诸如自动补全、重构工具、代码片段或甚至类似代码助手的工具来实现,而是切换到其他编辑器。实际上,你完全可以在 Vim 中(尤其是 NeoVim)使用这些工具,并且它们并不互相排斥。而且,大部分 Vim 动作带来的生产力提升并不是来自于编写,而是来自于编辑过程。

在 Vim 中复制代码块并粘贴到别处,仅更改函数参数列表中的一个参数值,甚至完全覆盖函数的全部内容,这些操作在 Vim 中比使用鼠标快且更流畅。此外,通过使用键盘进行这些操作,您可以保持双手在主键位,立即进入“输入模式”——而如果您使用鼠标,则必须将右手移到键盘上以进行正确的打字。

这些小动作,比如从打字模式(双手放在主键位上)切换到鼠标操作(左手放在键盘左侧靠近Ctrl键的位置,右手握鼠标),再到键盘导航(右手放在键盘左侧靠近Ctrl键的位置,左手放在键盘的方向键或导航键,如HOME和END上),单独看速度时,这些动作可能显得微不足道,但实际上每个动作都会增加认知负担,从长远来看,消除这些小步骤可以提高从思考到编写代码的流畅性。

Willy wonka meme with the sayings “So now is the part where you say Vim is the only way” above and “and everyone else has to be enlightned?” below

嗯……其实不然。如果你希望获得最顺畅的 Vim 操作体验,并且愿意花费时间和精力来打造适合自己的理想编辑环境,那么 Vim/Neovim 作为文本编辑器是一个绝佳的选择。但它们可能不适合所有人,特别是那些一想到要花时间配置和适应编辑器而不是直接写代码就感到害怕配置的人。

对于大多数人来说,我认为在你最喜欢的文字编辑器中使用Vim的移动命令是最佳选择,因为它提供了Vim的主要功能,而避免了大部分操作上的复杂性。这样,如果你想变得非常快,你已经熟悉了大部分Vim的移动命令,那么切换到NeoVim会容易得多。

所以我建议所有开发者都试试在你们的编辑器或IDE里学习一些Vim的移动操作——至少是基础的移动操作。这样你就可以开始学习怎么利用Vim的强大功能,而无需担心设置一个你可能还不太了解是否喜欢的工具(反正你肯定会爱上它的,放心吧)。

觉得这些信息有用的话,请给我鼓掌哦。喜欢这种内容的话,就来关注我吧。我写各种开发和技术方面的文章。对了,我平时用的是 NeoVim。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消