V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daya0576
V2EX  ›  Vim

从零学习 vim 一个多月, 感觉最有用的三个教程

  daya0576 · 2018-02-25 19:11:09 +08:00 · 19328 次点击
这是一个创建于 2497 天前的主题,其中的信息可能已经有所发展或是发生改变。

学 vim 的过程中走了很多弯路, 分享一下对自己帮助最大的三个教程:


1. vimtutor

最好的入门教程: 直接命令行输入vimtutor.
(要是早点知道就好了...)

2. Pratical Vim:

涵盖了大部分的常用技巧, 而且每个 tip 都有实际的栗子.
(网上有盗版 PDF, 但 JD 上好像也有卖实体书.)


3. Learn Vimscript the Hard Way

感觉挺不错的, 对各种概念原理解释的很全面, 关键是每章有课后题, 自己动手才能真正理解.
很渣渣可惜只看了三分之一, 终于能看懂了 vimrc 了.
剩下如果坚持看完的话应该就可以自己编写插件了.

链接: http://learnvimscriptthehardway.stevelosh.com/
中文版: http://learnvimscriptthehardway.onefloweroneworld.com/


p.s. 一开始尝试使用 vim 也是挺痛苦的, 毕竟鼠标真的很方便, 但禁用了方向键, 强迫自己用 vim 开发了三天后(Pycharm+ideavim), 慢慢就会发现用 vim 写代码真的是一种享受.


我的学习笔记: 链接

77 条回复    2023-08-02 18:48:41 +08:00
boywhp
    1
boywhp  
   2018-02-25 19:40:18 +08:00
反正我是必须用鼠标的, 盲打至今都没学会, 真是醉了,不过我发现用 VIM 看 C 代码确实舒服,写代码还是 IDE 吧。
Immortal
    2
Immortal  
   2018-02-25 20:05:40 +08:00   ❤️ 3
我也一直都用 idea 系列的编辑器+vim 插件
在试过 sublime vscode 这些编辑器后 发现还是 ideavim 的插件更贴近原生
以前有点热衷于用纯 vim,折腾各种插件,后来慢慢觉得 idea+vim 插件才是最完美的选择,有了 vim 的脸滚键盘和 idea 的强大功能,perfect !
顺便一说,如果楼主也喜欢 vim,chrome 浏览器下也有一个很不错的 vim 插件,[cvim]( https://chrome.google.com/webstore/detail/ihlenndgcmojhcghmfjfneahoeklbjjh) 需要 fq
ZZZZone
    3
ZZZZone  
   2018-02-25 20:10:20 +08:00 via Android
我大一刚踏进校门的时候, 学长就教我们用 vim, 慢慢摸索, 没有去刻意学习。 后来习惯性的不用鼠标和方向键。
现在干什么都离不开 vim 了, 写代码用 vim, 写博客用带 vim 模式的 markdown 软件, 浏览器也用的楼上说的插件😁。
changrui0608
    4
changrui0608  
   2018-02-25 20:30:07 +08:00   ❤️ 2
我还记得新换的 mac,打开 vimtutorial 发现是中文,当时就惊了
carlclone
    5
carlclone  
   2018-02-25 20:34:41 +08:00
@Immortal 跟你完全一样 idea+ideavim + cvim
qonco
    6
qonco  
   2018-02-25 20:35:35 +08:00 via Android
一个月了到啥程度啦?
AEANWspPmj3FUhDc
    7
AEANWspPmj3FUhDc  
   2018-02-25 20:46:16 +08:00
@ZZZZone
可以说说哪个 markdown 软件带 vi 模式的吗?
找了好久没找到,是支持 linux 的么?
OpenJerry
    8
OpenJerry  
   2018-02-25 20:46:17 +08:00
mark
shalk
    9
shalk  
   2018-02-25 20:48:58 +08:00 via iPhone
ChrisTsai
    10
ChrisTsai  
   2018-02-25 20:53:02 +08:00
@ivlioioilvi vscode 的 markdown 插件配合 vim 插件,我是这么用的
AEANWspPmj3FUhDc
    11
AEANWspPmj3FUhDc  
   2018-02-25 21:00:27 +08:00
@ChrisTsai
以前用 windows,也用的 vscode 写 markdown,体验还不错。
但是现在用 linux,已经把 CapsLock 键映射为 Esc 键,但在 vscode 中却不能识别。
ech0x
    12
ech0x  
   2018-02-25 21:50:02 +08:00   ❤️ 4
map <Left> <Nop>
map <Right> <Nop>
map <Up> <Nop>
map <Down> <Nop>
imap <Left> <Nop>
imap <Right> <Nop>
imap <Up> <Nop>
imap <Down> <Nop>
imap <BS> <Nop>
imap <Del> <Nop>

这个绝对可以让人快速熟悉 vim
vansarw
    13
vansarw  
   2018-02-25 21:53:28 +08:00
@boywhp 看代码还属 source in sight, 只可惜这货没有跨平台
shinytea2017
    14
shinytea2017  
   2018-02-25 22:38:31 +08:00 via Android   ❤️ 1
@ivlioioilvi, Vnote, 不算 markdown editor, 而应算 markdown 笔记应用吧.
everettjf
    15
everettjf  
   2018-02-25 22:39:44 +08:00
vimtutor 入门,Learn Vimscript the Hard Way 进阶。我是看的这两个,同样推荐。
Antidictator
    16
Antidictator  
   2018-02-25 22:42:25 +08:00   ❤️ 3
和 VIM 相爱的故事要从我的笔记本上下键坏了开始..哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈 哈哈
hilow
    17
hilow  
   2018-02-25 22:49:25 +08:00 via Android
大家能详细描述 vim 有那些不可替代的优点吗?
我还是觉得 sublime 这样的 ide 更方便。
鼠标加快捷键还是更方便些吧?
而且 ide 能随意拖拽文件夹,查看多个不同项目。
AEANWspPmj3FUhDc
    18
AEANWspPmj3FUhDc  
   2018-02-25 22:59:16 +08:00
@ivlioioilvi
回复一下自己。
对于在 linux 上 ,将 capslock 映射为 esc 后不能识别的问题,可以参考这个 issues。
https://github.com/Microsoft/vscode/issues/23991
LeungJZ
    19
LeungJZ  
   2018-02-25 23:07:20 +08:00
弱弱的问一句,到底 vim 有哪些不可取代的功能?还是有哪些异于其他编辑器的地方?
ecnelises
    20
ecnelises  
   2018-02-25 23:39:21 +08:00 via iPhone
@LeungJZ
1.基于模式的编辑
2.简介灵活的命令
3.平台一致的体验
LeungJZ
    21
LeungJZ  
   2018-02-25 23:45:42 +08:00
@ecnelises 啥叫基于模式的编辑?感觉略懵逼。
ZJsnowman
    22
ZJsnowman  
   2018-02-25 23:51:14 +08:00 via Android
@changrui0608 中文,怎么弄出来呢?
limbo0
    23
limbo0  
   2018-02-26 00:41:37 +08:00
@hilow vim 编辑效率高, ide 编程效率更高, vim + ide 美滋滋, 而且可以跨软件享受一致性体验
danielzhang0212
    24
danielzhang0212  
   2018-02-26 05:14:35 +08:00
@ech0x 这招够狠,哈哈
20015jjw
    25
20015jjw  
   2018-02-26 06:51:56 +08:00 via Android
@ech0x 就是有个 hard mode 可以打开 比你这个还 6hhh
ZZZZone
    26
ZZZZone  
   2018-02-26 08:29:50 +08:00 via Android
@ivlioioilvi 我用的 cmd markdown 我是 mac+win 都有使用, 跨平台同步挺方便的。
还有蚂蚁笔记和 csdn 博客, 都用过。
linux 还没折腾, 试过 vim 的 markdown preview 插件。
boywhp
    27
boywhp  
   2018-02-26 08:41:58 +08:00
@vansarw 我最开始也是用 source insight 的看 C 代码的, 后来我用了 VIM 后, source insight 就再也没用过了
不过我不用 VIM 写 C 代码, 我用渣一样的 code blocks
bintianbaihua
    28
bintianbaihua  
   2018-02-26 09:11:44 +08:00
coolshell 的博客也不错的
ironx
    29
ironx  
   2018-02-26 09:14:43 +08:00 via Android
不要在上面浪费时间了
changrui0608
    30
changrui0608  
   2018-02-26 09:37:02 +08:00
@ZJsnowman mac 的话直接在终端里 vimtutor 就是中文了,其他 linux 发行版没玩过。。
zhuangzhuang1988
    31
zhuangzhuang1988  
   2018-02-26 09:43:35 +08:00
中二的时候学过,工作后用 vs 发现原来这么舒服
YzSama
    32
YzSama  
   2018-02-26 09:50:14 +08:00
mark Vim 一直处于会用几个指令。。
daya0576
    33
daya0576  
OP
   2018-02-26 10:03:15 +08:00
@qonco 在 Pycharm 里用的 ideavim, 效率终于和原来差不多了, 但写代码会"舒服"很多. 就像书里说的:
> 写程序就像画画, 艺术家大部分的时间其实都是在构图, 思考, 真正用画笔接触画布的时间其实占比很小. 这就像 VIM, 大部分停留在 Normal Mode.

---

但是 Pycharm 不支持 vim 插件(只有 surround), 还是让我有点绝望. 而且偶尔会有一些小 bug. (但是 pycharm 的 navigation 实在是太好用了)
可能未来会尝试 vscode+vim 或者一些配好的 vim.

有个痛点就是移动到当前屏幕上某个位置(有个 AceJump 插件, 但是体验不是特别好). 还没想好怎么解决.

但用 vim 的好处就是可以一直折腾吧.. 可以玩一年?
maokabc
    34
maokabc  
   2018-02-26 10:07:40 +08:00 via Android
当年直接在里程碑 2 这类全键盘安卓机上学会的 vim,加上 make、javac 等工具在上面写了个 app,一套下来什么都熟悉了
daya0576
    35
daya0576  
OP
   2018-02-26 10:11:42 +08:00
@Immortal 哈哈, 我原来也有用这个, 但是后来发现一个加强版的: Surfingkeys( https://github.com/brookhong/Surfingkeys/blob/master/README_CN.md)

多了很多功能, 比如用 vim 编辑当前页面的文本框什么的, 虽然很少用到.. 哈哈.
tamlok
    36
tamlok  
   2018-02-26 10:14:18 +08:00
daya0576
    37
daya0576  
OP
   2018-02-26 10:17:03 +08:00   ❤️ 1
@LeungJZ 学 vim 还有个原因, 是当在 vim 改服务器上的配置, 但旁边有人看着的时候...会很尴尬.

之前有一次连粘贴也贴不上去.. (:set paste) 🌆
LeungJZ
    38
LeungJZ  
   2018-02-26 10:25:38 +08:00   ❤️ 1
@daya0576
服务器上的 vim 我只会
i 编辑
:wq 保存退出
:q :q! 退出
/s 搜索
dd 删除一行
粘贴的没试过,mac 可以直接 cmd+v 粘贴。。。
January
    39
January  
   2018-02-26 10:26:26 +08:00
Practical Vim
freezhan
    40
freezhan  
   2018-02-26 10:28:55 +08:00
@changrui0608 #4 我打开是繁体中文🙈
riggzh
    41
riggzh  
   2018-02-26 10:31:27 +08:00
vim 我只会 i :wq :q
pan020037
    42
pan020037  
   2018-02-26 10:39:29 +08:00
@changrui0608 #4 刚尝试了下 mac 下果真是中文 get 到了
DevNet
    43
DevNet  
   2018-02-26 10:46:12 +08:00
mac 上中文教程真 6
clearc
    44
clearc  
   2018-02-26 10:53:05 +08:00
@DevNet
@pan020037
@changrui0608

为什么我的 mac 里的是英文,你们 vim 是哪个版本。。。
DevNet
    45
DevNet  
   2018-02-26 10:56:07 +08:00
@clearc #44 MacOS10.13.3
$ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jul 26 2017 19:10:24)
Included patches: 1-503, 505-642
Compiled by [email protected]
Normal version without GUI.
changrui0608
    46
changrui0608  
   2018-02-26 11:10:08 +08:00
@clearc 系统自带的和 brew 安装的都是中文,看看是不是 macOS 太老(我是 2016 rmbp,再以前的系统不了解),或者系统语言不是中文
dychenyi
    47
dychenyi  
   2018-02-26 11:28:39 +08:00
我用 vim 好多年了,个人觉得会一些基本的就够用了。
ctrl +f/b , gg, gG, i,I, a,A, dd, d$, de, u, ctrl +r, shift v 模式 ctrl v 模式 , table edit(map 成,te)然后 gt,gT 切换。
搜索 /,:%s###g 匹配替换,Y 复制,p 粘贴, 再绑定一些注释快捷键。基本这些我觉得够用了。 熟悉之后水到渠成,信手捏来。。
TankyWoo
    48
TankyWoo  
   2018-02-26 11:29:32 +08:00
@clearc try:

LANG="zh_CN.UTF-8" vimtutor
WinMain
    49
WinMain  
   2018-02-26 12:11:00 +08:00
@Immortal
不容易呀,在二楼就能看到一个懂事儿的。
vim 其实只是一种输入模式,而不是简单的一个软件。
同 IDEA+VIM 插件,用鼠标简直不能操作。
wzw
    50
wzw  
   2018-02-26 12:23:56 +08:00
@WinMain #49 IDEA+VIM 是不是不需要鼠标了, 我现在也准备强迫自己用放弃鼠标, 所以记了很多 idea 的快捷键.
caixiexin
    51
caixiexin  
   2018-02-26 12:28:20 +08:00 via Android
@ChrisTsai vscode 的 vim 插件现在都没解决退出输入模式,中文输入法自动切换的问题吧?原生 vim 这个已经有了
rashawn
    52
rashawn  
   2018-02-26 12:28:40 +08:00 via iPhone
@LeungJZ 所有内容都是文本,上手麻烦,学习过程中能了解各种命令行工具
clearc
    53
clearc  
   2018-02-26 13:44:43 +08:00
@DevNet
@changrui0608 好吧,我版本没问题的,
谢谢 @TankyWoo 的提示,是 lang 的问题,以前一直没用 zh_cn
jhdxr
    54
jhdxr  
   2018-02-26 13:48:58 +08:00
快捷键用的足够熟练也不需要用鼠标。。。只是看你习惯哪个了。
BeForever
    55
BeForever  
   2018-02-26 13:52:25 +08:00
mark
symons
    56
symons  
   2018-02-26 13:52:42 +08:00
3. Learn Vimscript the Hard Way
symons
    57
symons  
   2018-02-26 13:53:00 +08:00
3. Learn Vimscript the Hard Way
这个我也看过,可惜没深入下去
haha33223f
    58
haha33223f  
   2018-02-26 14:20:51 +08:00
放弃鼠标? 那我才买的 500 块钱鼠标没用啦?
xiaogu0322
    59
xiaogu0322  
   2018-02-26 14:30:58 +08:00
Mark
bcys
    60
bcys  
   2018-02-26 14:37:24 +08:00
mark
Paddington
    61
Paddington  
   2018-02-26 14:44:33 +08:00
用了两年 VIM,最近还是放弃了。

发现看代码还是 JB 系方便( C/Golang/Python )

VIM 虽然本地我配了一堆插件很爽,但是尼玛经常要上服务操作啊,这时候就悲剧了,很多方便的操作都不能搞。
satanandroid
    62
satanandroid  
   2018-02-26 14:58:37 +08:00
看了你们说的,在 windows 的 git bash 输了 vimtutor 果然是中文版
Immortal
    63
Immortal  
   2018-02-26 16:11:30 +08:00
@Paddington 上面说的就是 jb+jb 的 vim 插件 ideavim 两者综合使用
Guosch
    64
Guosch  
   2018-02-26 17:07:08 +08:00 via Android
@Immortal 哈哈,cvim 重度用户,日常浏览网页基本不需要鼠标。
theohateonion
    65
theohateonion  
   2018-02-26 17:14:35 +08:00
有了 vim 基本上换编辑器无压力呀. 我觉得 vim 的正确使用方法是把 vim 当成一种编辑模式而不是一个编辑器. 毕竟 Jetbrain 爸爸好(逃) BTW 我是 spacemacs 党
ecnelises
    66
ecnelises  
   2018-02-26 17:55:21 +08:00
@LeungJZ 在 Vim 的各种模式特别是普通模式当中,简单的几个按键就可以代表非常复杂的操作
WinMain
    67
WinMain  
   2018-02-26 19:33:58 +08:00
@wzw 85%的操作不需要鼠标。
inflationaaron
    68
inflationaaron  
   2018-02-27 03:08:40 +08:00 via iPhone
Spacemacs 欢迎你
wlwood
    69
wlwood  
   2018-02-27 07:55:51 +08:00 via Android
@Paddington 哈哈,为啥那几个叫 jb 系?
wlwood
    70
wlwood  
   2018-02-27 08:02:15 +08:00 via Android
@Paddington 哦哦,看明白了😂😂😂
skywind3000
    71
skywind3000  
   2018-03-01 12:10:20 +08:00
我是推荐想用鼠标就用鼠标的,降低点门槛。
skywind3000
    72
skywind3000  
   2018-03-01 12:10:32 +08:00
想用光标键就用光标键。
wwb721
    73
wwb721  
   2018-03-02 14:04:35 +08:00   ❤️ 1
https://devhints.io/vim 这个 cheatsheet 总结得很好。
chemzqm
    74
chemzqm  
   2018-03-08 19:23:59 +08:00   ❤️ 1
Learn Vimscript the Hard Way 除非你要写 vimscript,一般用户没必要看太深入
个人比较推荐 https://github.com/mhinz/vim-galore
rudyyuan
    75
rudyyuan  
   2019-09-18 23:23:27 +08:00 via Android
推荐下俺的博客 https://vimjc.com
bnpysse
    76
bnpysse  
   2020-06-26 21:23:16 +08:00
还是觉得在实践中学习和应用 VIM,上手最快,如果手里没代码来写的话,可能入门就会慢一些。

不过,一旦掌握了这个利器,真得就不想再换其它的编辑器,尤其是改代码的过程中,绝对是享受,大家也知道,改代码的时间会远远大于写代码的时间的。。。。
c1462066778
    77
c1462066778  
   2023-08-02 18:48:41 +08:00
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2544 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 10:45 · PVG 18:45 · LAX 02:45 · JFK 05:45
Developed with CodeLauncher
♥ Do have faith in what you're doing.