给 VIM 新手建议

2015-12-26 21:05:21 +08:00
 join
前几天看到一个帖子,一个哥们问新手如何学习 VIM 的建议。底下的人都回复:“无他,唯手熟尔”。一个工具用熟悉以后确实会用得很好。但是我发现身边有的人用 VIM 用了很多年,却连一些最基本的操作都不大会,有些甚至连 hjkl 都不会使用。这个问题的出现真的不是可以用手熟来解释了。我就我自己这几年来使用 VIM 的一些心得和观察给新手提供以下建议。

## 认识 VIM
我们都知道 linux 的哲学是一个程序只做好一件事情,并做到最好。 wc, cat,tail, head, grep, ls, cd 。这些工具是对这个哲学的最好诠释。 VIM 也符合这个哲学, VIM 经过这么多年的发展依然没有太多的变化,变化的只是外部各种各样越来越强力的插件。 VIM 本身还依然保持娇小的身材,没有去解决除了编辑文本以外的问题。

## 网上的教程全部都是错的
网上有各种各样的教程都在介绍如何将 VIM ‘伪装’ 成一个强力的 IDE 。这些文章表面上看起来是教程,实际上是作者在告诉别人:“看,我这辆坦克多么多么厉害,它能发射各种各样的导弹”。这些教程除了教你把一个工具搞复杂以外,并没有带来任何有用的东西。 VIM 它本身不是 IDE ,它距离 IDE 还差很远。但它能让用户可以使用各种各样的语言来写代码。这也是为什么我现在还在用 Ctrl+N 来做补全而不使用各种强力的补全插件来做补全的原因。 VIM 它本身也并不完美,插件系统也有各种各样的问题,这么多年过去了连中文输入法都没有完美支持。但做为一个写代码的工具它已经做到了一个编辑器的极致了。 VIM 最好的教程是它自带的 vimtutor ,很少有软件能把教程做得这么好。 vimtutor 里面提及的那些操作几乎涵盖了 VIM 平常 90% 的操作,反复跟着教程练习几遍就能完全使用 VIM 了。可惜我见过的大部分的 VIM 用户都没有一开始去使用 vimtutor 进行入门练习,这就是我们经常会见到一个使用 VIM 好几年的用户居然连 hjkl 都不会的原因。

## 让工具适应你
VIM 有各种各样的插件和网上其他人开放出来 vimrc 配置文件。这些现成的东西是使用是有成本的,你必需要先学会使用这些东西才能让工具适应你。直接使用别人的 vimrc 与现成的插件包是非常不可取的,它们会把你的工具彻底搞复杂让你没法适应。理想的状态应该是理解 vimrc 文件每一行配置的含义,然后根据自己的习惯来做调整。需要什么插件去网上搜索,完全学会一个插件后再添加另一个插件。

## 总结:
1.认识 VIM 的局限,他能干什么,干不好什么。
2.入门请认真仔细使用 vimtutor 命令进行入门练习,最好多重复练习几遍。
3.拒绝别人现成做好的东西的诱惑,慢慢的打造属于自己的工具。
5344 次点击
所在节点    Vim
29 条回复
zwy
2015-12-26 21:27:13 +08:00
VIM 这类工具的学习路径,和代码重构的目标是一致的
重复 3 次或者以上的操作,必定有其抽象解决方法
只是看用家有没有这个心态去总结

有人用了好多年 notepad 并安于现状,就好像总有一部分人写 10 年一模一样毫无长进的代码
join
2015-12-26 21:32:46 +08:00
@zwy 你说得很对,有时候我觉得一个软件做得好不好就在于复杂度的控制。
join
2015-12-26 21:36:15 +08:00
我写这篇文章的思路跟写代码是很像的,在使用别人现成做好的东西一定要控制住诱惑,搞明白它是怎么回事,否则别人做的东西一旦出问题将会给你带来麻烦。
klmd99
2015-12-26 21:54:03 +08:00
我只会 hjkl ,在 sublime 下好方便
klmd99
2015-12-26 21:55:55 +08:00
还有 o
dsdshcym
2015-12-26 22:10:31 +08:00
@zwy 支持这种说法, Vim 技能的提高就是对自己操作的重构
bramblex
2015-12-26 22:11:33 +08:00
我只会对目的是写代码而不是玩 vim 的新手这么建议。

然而像我这样把 vim 当玩具的并且玩得很开心的。当然是爱怎么折腾怎么折腾啊 /w\
比如我就玩得很开心 https://github.com/bramblex/BlxVimrc
lululau
2015-12-26 22:14:01 +08:00
学习 + 常用吧,推荐个学习材料: http://learnvimscriptthehardway.stevelosh.com
chemzqm
2015-12-26 22:56:48 +08:00
当年忽悠我用 vim 的同学早就投奔 sublime 了,用他的话说就是浪费好多时间。
他就是个玩 vim 插件的, vimrc 也都是网上下载的,只追求功能强大的同学还是用好自己的 IDE 吧,为了装个逼折腾 vim 并不值得。
学习 vim 不仅是手指练习,还包括熟练使用 vim 完善的帮助文档,理解 vim 里面 buffer , quickfix , location list , patterns 等等基础概念,最终你才能学会用 vim 的方式去思考代码编辑。
现在的一些流行 vim 插件总喜欢加上各种乱七八糟的功能,使用结果就是各种搞不清楚的命令,难以预料的结果,以及 vim 运行效率的降低,所以我不得不安利几个简洁的插件:

简单配对: http://www.vim.org/scripts/script.php?script_id=2339
一键注释: https://github.com/chemzqm/mycomment.vim
tab 补全: https://gist.github.com/chemzqm/287b0e98560e2e0a1491

都没几行代码,会些 vimscript 就可以自己改了
chemzqm
2015-12-26 23:10:40 +08:00
话说新版的 macvim 修复了 noimd 选项,设置后会自动禁用你的输入法,防止误操作,但是输入中文还是蛋疼。
vim 的中文翻译感觉很一般,经常各种莫名其妙,看不懂的时候建议看英文文档。
lufengd3
2015-12-26 23:40:13 +08:00
"让工具适应你" 这个总结的不错
congeec
2015-12-26 23:50:18 +08:00
那些所谓的教程真是给 vim 用户抹黑。。。。
asj
2015-12-26 23:58:11 +08:00
Vi 的最核心特点不在于更高效,而是更抽象。与其说是一个文本编辑器,不如说是一门操作文本的语言。
所以我认为程序员确实应该学学 Vi ,不在于这样写高效,而是多了一个视角把敲代码这件事本身代码化。
Andiry
2015-12-27 00:18:13 +08:00
不懂为什么用 vim 就一定要用 hjkl 。上下左右有什么问题?
ThomasZ
2015-12-27 00:22:14 +08:00
@Andiry 上下左右离主键区太原,右手在键盘的移动太大, hjkl 就不用你去移动了,能更迅速
Geeker
2015-12-27 00:23:22 +08:00
嗯,我也喜欢用各种工具提升效率,但又不希望被工具绑架和奴役
Evovil
2015-12-27 00:45:17 +08:00
@Andiry 手脱离键盘, 远
同理 emacs ctrl+CFPN
Epirus
2015-12-27 00:59:30 +08:00
不要随便给人建议~ share your .vimrc
JerningChan
2015-12-27 01:08:32 +08:00
vim 對中文直接不好?我並沒有發現呀...
不知你是不是又因爲用 win 下邊的 vim...
反正我在 mac 上有時都直接用 vim 來寫中文文檔...
而且一點問題都沒有...
我覺得呢,但一樣東西,你在深入了解過後,再去玩的話,會有不一樣的感覺
linux40
2015-12-27 10:01:57 +08:00
对,所以我不用 vim 。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/246349

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX