Vim Practice

- 0. �?
- 1. å¦ä¹ 资料
- 2.
Vim�?置/�?�件的资�? - 3. 分享视频�?�其笔记
- 4. 个人关心的问题
0. �?
0.1 Vim vs. Emacs
一上�?�就�?说一个『宗教性�?问题,很�?�险啊�? Emacs,�?�说自己了解到的一点感觉。
Vim:编辑器之神;Emacs:神的编辑器。ðŸŽ
上�?�的这�?�调侃�?�?�?,�?�?的是效率
个人没入Emacs圈,牛掰编辑器先入的是Vim。自己作为一个Emacs圈外人,对于两者对比的感觉是:
Vim,从 编辑�?�念 出�?�并�?考很深,通过�?��?�编辑的è¯è¨€è¿›è€Œè„šæœ¬åŒ–/编程化的能力实现平�?�化。- 契�?�了 编辑器之『神�? 的说法。
Vim�??供了一套�?��?�编辑的è¯è¨€ï¼šdiw:delete in wordï¼Œåˆ é™¤å…‰æ ‡æ‰€åœ¨ï¿½?��?ï¼›ddï¼šåˆ é™¤è¡Œï¼ˆï¿½?�?命令是对行�?作)。xï¼šåˆ é™¤ä¸€ä¸ªå—符,5x:�?�?5æ¬¡åˆ é™¤å—符(�?ï¿½åˆ é™¤5个å—符)。- ä¸€æ—¦ä½ ç†Ÿæ‚‰ä¹ æƒ¯è¿™é—¨è¯è¨€ï¼Œç¼–辑的过程 就是 �?考的过程。
- �?�外,这门è¯è¨€æœ¬èº«å°±æ˜¯ï¿½?�编程的(�?�编程è¯è¨€ï¼‰ï¼Œï¿½?上�?�用数å—表示命令的�?�?执行次数,以�?��?�以用
norm命令或是�?把指令脚本化。这里�?展开了。
Emacs,平�?��?�念 很深,以平�?�化�?路承载和带动编辑�?�念。- 契�?�了 『神�?的编辑器 这个说法。�?��?ä½ å–œæ¬¢ï¿½?�以把
Emacsæ‰“é€ ï¿½?Vim,当然Emacs也�??ä¾›ä¸€å¥—è‡ªå·±ç¼–è¾‘é£Žæ ¼ï¼ŒåŸºäºŽç»„ï¿½?�快�?�键,现在�?��?软件都�??供快�?�键�?ï¿½åŠ é€Ÿï¿½?作,尤其是程�?员的IDE更是�?度�?赖熟练的使用快�?�键。 - 关于
Emacs的平�?�特质�?ï¿½ä»¥çœ‹çœ‹æ–‡ç« ï¼š- 程�?员的编辑器 ——
Vim,也�??到了一点:
vi追求的是快�?�——�?�动程�?迅速,编辑文本高效,功能专注,而Emacs追求的是功能的丰富强大以�?�集�?带�?�的方便,在Emacs里头�?�以�?�邮件,上新闻组,�?�MP3,�?览网页,玩游�?ï¼Œå‡ ä¹Žï¿½?�以login->emacs->logout了 :-),viå’ŒEmacs都是程�?员的编辑器,相比而言,Emacs更是�??供了一�?程�?员的生活氛围。 - 从
Vim到Emacs到Evil
Emacs�?�是个强大的平�?�,�??供�?��?定制�?�满足�?个人的�?�?�需求。所以ThanksEvil,我已把Emacsæ‰“é€ ï¿½?了�?�想的『Vim化的Emacs Editor�?,我�?�以纵情使用更方便的方�?�?�工作。
这个�?路已�?被解决方案化了,�?�是spacemacs,已�?是最�?�的Vim/Emacs�?置�?�行版了,我还一直没有去上手😑 ï¼ŒçœŸæ˜¯å±±å¤–æœ‰å±±è€Œå¦æ— æ¢å¢ƒå•Šï½žðŸ˜²
- 程�?员的编辑器 ——
- 契�?�了 『神�?的编辑器 这个说法。�?��?ä½ å–œæ¬¢ï¿½?�以把
0.2 关于编辑本身
Editing is a rewording activity. -- Alan J. Perli
编辑是推敲改写的过程。 —— 艾伦·�?�·佩利(计算机程�?设计领域的科å¦å®¶ï¼Œé¦–届图�?�奖的获得者)
人类智慧输出包�?�了『录入�?和『编辑�?�?作。
目�?,『键盘录入�?/『键盘编辑�?是主�?方�?。
键盘�?ä½œæ•ˆçŽ‡çš„å…³é”®æ˜¯ã€Žæ‰“å—æŒ‡æ³•�?/『盲打�?。
对于录入,当然还有è¯éŸ³å½•å…¥ç‰ç‰ï¼ˆæœŸå¾…脑电波的录入方�?�?为现实
å¯¹äºŽä¸æ–‡ï¼Œè¿˜å¤šä¸€æ ·ï¼Œï¿½?�『输入法�?,如五笔�?拼音。
『编辑器�? 对于 编辑 的�?�?性 �?言而喻。
综上,智慧输出包�?�了:
- 键盘�?作:
- æ‰“å—æŒ‡æ³•
- 录入 => 键盘录入:
- 输入法
- 编辑 => 键盘编辑:
- 编辑器
上�?ï¿½ã€Žæ‰“å—æŒ‡æ³•�?和『编辑器�?的顺�?�?�?çš„ï¼Œå¦‚æžœä½ è¿˜ï¿½?能 盲打,那么�?�?想�?��?找一个的编辑器就能高效了�?
1. å¦ä¹ 资料
1.1 关于『å¦ä¹ �?本身的规律
- å¦ä¹ ä¸€æ ·æ–°äº‹ç‰©çš„å…ˆè¿›ï¼Œï¿½?在于刚开始看到的点,而在于�?�解 一整套 方法,整套方法背�?�蕴�?�体现的是�?�念。
- 上手新事物必然先�?历一个能力下�?é˜¶æ®µï¼Œå› ä¸ºä½ ï¿½?æ”¾å¼ƒä½ æ‰€ç†Ÿæ‚‰çš„ï¼Œï¿½?新接纳新的一套方法。
- 有下�?�想法�?�å¦å¿…然�?锢于原地�?æ¥ï¼š
- �?愿去�?�解�?�念(整套方法),而是用当�?自己熟悉的技能点去比新事物的点。
- �?愿接�?�上手新事物的å¦ä¹ �?本和先�?�?历能力下�?的一个阶段。
1.2 个人的Vim入�?�路径
- 看一下
Vimæ•´ä½“è¯„è®ºæ€§æ–‡ç« ï¼Œè§‰å¾—å€¼å¾—å…¥é—¨ä¸Šæ‰‹ã€‚
这点基本�?是问题,Vim�??声在外,问题其实是入门门槛。 - 通过
vimtutor,上手了解些基本�?作。这时候心�?�上�?注�?:- 这�?�是了解基本,�?�?认为这一æ¥ï¿½?ï¿½ä»¥åœ¨æ—¥å¸¸ä¸æ–¹ä¾¿çš„使用了。
- 让自己�?�以在
Vim环境生å˜ä¸‹ï¿½?�。首先�?�?��?为了退出Vim�?去�?�?�机器�?�~
(😂 �?�以看看Stack Overflow:帮助一百万开�?�者退出 Vim)
- 系统å¦ä¹ ,边看《
Vim实用技巧 - 以�?维的速度编辑文本》边�?作,完�?实践和�?�念储备。
è¿™ä¸€æ¥æˆ‘�?�?一个相对慢速但�?ç»çš„过程,两三周时间。 - �?置上
spf13-vim�?�行版,舒适强大专业的Vim环境�?置。
很多人�?推�??这么�?�,去使用别人的一大套�?置。
我这么�?ï¿½æ¯”è¾ƒå®žç”¨ï¼ŒåŽŸå› æ˜¯ï¼šï¿½?��?大�?�?置打磨的时间投入,先接纳有心人的专业�?验。
ä¸é—´ä¼šå޻填spf13-vim�?�能的一些�?�。 - 了解一些�?典�?�件并�?个实战,如
surround。
1.3 æ–‡ç« /讨论
- Why
Vimis awesome VIMis awesome — But don’t overdo it
过犹�?�?�,�?好的东西,也�?明白什么时候�?�?�适,这是�??而说明是深的�?�解。- 简明
Vim练级攻略 - coolshell.cn | 英文原文 LearnVimProgressively
快速�?æ¥ä¸Šæ‰‹ä»‹ï¿½?。 - Coming Home to
Vim
快速上手使用。为什么使用Vim/Vim使用感觉/上手的高效�?置/好用的�?�件。 - 普通人的编辑利器 ——
Vim/ 程�?员的编辑器 ——Vim
è¿™2ç¯‡æ–‡ç« ä»¥æ™®é€šç”¨æˆ·/程�?员的视角,çŸçŸä¸€ç¯‡æ–‡ç« è®©ä½ æ„Ÿï¿½?�Vimçš„é£Žæ ¼ï¿½?能力和一致性设计。
以�?�系统å¦ä¹ 方�?,获得�??æ•´ä½“äº†è§£çš„å¥½æ–‡ç« ï¿½? - �??高
Vim使用效率的 12 个技巧 - Awesome
VimPlugins - æ± å»ºå¼ºçš„Blog:『�?说
Vim�?是IDE?�?系列: - 知乎上的一些�?题(看一下讨论扩展一下了解)
Emacsçš„æ–‡ç« ï¼ˆèƒ½æœ‰ç‘œäº®èˆ¬çš„å¯¹æ‰‹è€Œç›¸äº’ç«žäº‰ä¸Žå¦ä¹ ,比起高处�?胜寒的å¤å¯‚�?�以说是幸�?�?)- 从
Vim到Emacs到Evil
Emacs�?�是个强大的平�?�,�??供�?��?定制�?�满足�?个人的�?�?�需求。所以ThanksEvil,我已把Emacsæ‰“é€ ï¿½?了�?�想的『Vim化的Emacs Editor�?,我�?�以纵情使用更方便的方�?�?�工作。 - çŽ‹åž ä¹‹ã€Š
Emacs是一�?信仰�?世界最强编辑器介�?》
- 从
1.4 上手
vimtutor
1.5 速查
å†…å®¹æ¯”è¾ƒç²¾ç®€ä¸”æœ‰ä¸æ–‡ç‰ˆçš„:
VimCheat Sheet䏿–‡ç‰ˆ - vim.rtorr.com- Graphical
vi/VimCheat Sheet and Tutorial䏿–‡ç‰ˆï¼ˆï¿½?�图,点击看大图)
该图的�?��?é“¾æŽ¥ï¼Œå®˜ç½‘ä¸æ–‡ç‰ˆã€‚ # è¿™å¼ å›¾ä½ è‚¯å®šåœ¨åˆ«äººæ¡Œï¿½?上�?过😄
内容比较丰富的:
- Beautiful
VimCheat-Sheet (�?�图,点击看大图)
# 个人觉得这个是信�?�表达最好的一个�?💘 💖 该图的�?��?链接,这个Sheet Cheat的评论和官网。 - Cheat Sheet - michael.peopleofhonoronly.com
Cheat Sheetæœ‰å‡ ä¸ªå°±å¤Ÿç”¨äº†ï¼Œåˆ«å¤šçœ‹äº†ä½ ï½ž 当然还有更多Vim Cheat Sheet
1.6 系统å¦ä¹
Vimuser manual/reference,�?�是Vim的内置帮助系统,内容丰富�?�?
䏿–‡ç‰ˆ http://sourceforge.net/projects/vimcdoc/files/pdf-manual/- å¦ä¼šç”¨
Vim的内置帮助:h:h 'option':h command:h :ex_command:h ctrl-w Vim帮助系统的帮助,�?�如何使用Vim的帮助系统::h helphelp
- å¦ä¼šç”¨
- 个人整�?�的
Vim书�?豆列- 个人先看的是《
Vim实用技巧 - 以�?维的速度编辑文本》 | Practical Vim, Second Edition
以编辑�?�念和实践模�?为纲介�?,推�??之。
�?�?�共�?�感一射,编辑与�?考�?飞�? - å¦ä¹
viå’ŒVimç¼–è¾‘å™¨ï¼ˆä¸æ–‡ç‰ˆï¼‰ | 《Learning theviandVimEditors》,行文稳�?�(很�?ï¿½æˆ‘çš„é£Žæ ¼ï¼‰ï¼š- 先介�?基本功能�?说明如何组�?�技术,从熟悉到领会。
- �?介�?基本编辑器(
vi/ex)�?说明Vim,从历�?��?�展的过程更能深入�?�解功能适用场景。 - 还介�?
vi/Vim的周边信�?�,如vi/Vim的�??家�??言,�?�个�?��?,vi/Emacs的文化ç‰ç‰
- 个人先看的是《
- vim-galore - Everything you need to know about
Vim| 䏿–‡è¯‘æ–‡
Vim方方�?��?�资料汇总。
2. Vim�?置/�?�件的资�?
2.1 �?典的�?置�?�行版/�?�件站点
spf13-vim- a distribution ofVimplugins and resources-
Vim的�?置集�?�和�?置框架。- 包�?�很多�?�件/ä¸»é¢˜ï¼Œæ— è®ºæ˜¯ï¿½?白还是高手,�?时好用是王�?�,用起�?�。
- 直接使用,�?置的效果和包�?�的�?�件 已�?很�?错了。
spf13-vim首先是个Vim�?置框架,水准尽显�?
- The Ultimate
vimrc- Over the last 10 years, I have used and tweaked Vim.
- 作者 10年+ 在
Vim�?置上的积累,�?对值得�?�考å¦ä¹ �?
- 作者 10年+ 在
Janus:VimDistribution- �?�一个
Vim�?置版本�?
- �?�一个
- Maximum Awesome
- 三架马车
Vim�?tmuxå’ŒiTerm 2的整套�?置。- 值得了解å¦ä¹ �?
Vim+Emacsdistribution(本人没有入Emacs圈�?,作为广度了解一下)VimAwesome - a comprehensive, accurate, and up-to-date directory ofVimplugins,Vim�?�件�?览站点
2.2 �?典�?�件介�?
YCM- Welcome to world of
YCM
由@阳�?�有爱贡献编写�?
- Welcome to world of
3. 分享视频�?�其笔记
3.1 Learning Vim in a Week
Youtube视频地�?�,讲解了入门Vim时
- 观念上的改�?�/注�?事项
- 总有更好的�?�法
- å¦ä¹
Vim是个�?ç»çš„过程,�?�以�?æ–�??高能力,进而�?æ¥ï¿½??�?�效率。
- �?�?在平时的工作使用ä¸å¼€å§‹å¦ä¹
Vim�?å› ä¸º 工作紧急需�?的效率 与Vim刚开始å¦ä¹ 时摸索的低效 有矛盾�? Vim命令记忆法
还给出实用的Tips:
Hackï¼ˆå®šåˆ¶ï¼‰ä½ çš„é”®ç›˜- Graphical vi/Vim Cheat Sheet and Tutorial
䏿–‡ç‰ˆ http://blog.ngedit.com/vi-vim-cheat-sheet-sch.gif .vimrc- ä½ çš„æ–°æœ‹ï¿½?��?- 一定�? 版本控制 起�?��?
- �?�以�?ï¿½å€Ÿä½ æœ‹ï¿½?�的�?置文件(
dotfiles),或是借鉴 https://github.com/thoughtbot/dotfiles
- 通过官方的
vimtutor定期适�?çš„å¦ä¹ / 通过游�?http://vim-adventures.com/�?�å¦ä¹ ~ - 通过看高手的�?作视频方法�?�å¦ä¹
3.2 7 Habits For Effective Text Editing 2.0
Youtube视频地�?�,2007-02-13,Vim作者 Brian Moolenaar 在Google�?�的演讲,讲解了编辑器的选择�?达到高效编辑的方法和�?�念。
编辑器的选择
- å¦‚æžœä½ å·²ï¿½?熟悉精通了一个编辑器,挺好的。这里�?会讨论『
Vim比Emacs更好�?è¿™ä¸ªé—®é¢˜ï¼Œä½†ä½ ï¿½?�能会觉得Emacs并�?爽~😂 - 但�?�?使用�?
Notepadè¿™æ ·ç®€é™‹çš„ç¼–è¾‘å™¨ï¼Œä½ æµªè´¹äº†å¤§ï¿½?的生命�?😲 - �?么用一个觉得的爽的编辑器,�?么转用
Vim�?�~😜 除æ¤ï¿½?没有其它的出路�?(There is NO other RULE!)
达到高效的3个基本æ¥éª¤
这部分的总结页:
- �?�觉低效
- �?ï¿½çŽ°ä½ æµªè´¹æ—¶é—´çš„åœ°æ–¹
- 找到更快的方法
- 阅读在线帮助
- 阅读速查手册�?书�?ç‰ç‰
- 问问朋�?�或是�?�事
- �?�索网络
- 自己�?�定
- 使之�?ä¸ºä¹ æƒ¯
- 动手�?�起�?�
- �?ç»æ”¹è¿›
附原文:
- Step 1: Detect inefficiency
- Find out what you waste time on
- Step 2: Find a quicker way
- read the on-line help
- read the quick reference, books, etc.
- ask friends and colleagues
- search the internet
- do It yourself
- Step 3: Make it a habit
- do it
- keep on improving
如何�?�到低效地编辑
@oldratlee 这是我最喜欢的一节
😂
- 必须立�?ï¿½å¼€å§‹ç¼–è¾‘æ–‡æœ¬ã€‚æ²¡ç©ºåŽ»è¯»æ–‡æ¡£æˆ–æ˜¯å¦æ–°çš„命令。
结果一直�?�会用原始的命令。 - 想å¦ä¹ 编辑器�??供的�?一个功能,总是想用最快�?�的命令。
结果是浪费大�?的时间去å¦ä¹ 从�?会用到的内容。
附原文:
How not to edit effectively
- You have to get the text ready right now. No time
to read documentation or leam a new command.
You will keep on using primitive commands. - You want to learn every feature the editor offers
and use the most efficient command all the time.
You will waste a lot of time learning things you will never use.
4. 个人关心的问题
欢迎高手指点�?请�??交Issue。
4.1 䏿–‡è¾“入法在Vim便利切�?�的问题
问题说明:
本�?�Vim是有模�?的(Normal/Command/Insert/Replace/Visual/...),�?åŠ ä¸Šä¸æ–‡éœ€ï¿½?输入法切�?ï¿½ï¼ˆä½ å¤„åœ¨ä¸æ–‡è¾“入还是英文输入状�?ï¼‰ï¼Œä¸æ–‡ç¼–辑需�?在脑�?记�?当�?是哪个状�?的,个人觉得这很蛋疼。
�?�想的状�?期望:
- 当切�?�到如
Normal/Command模�?时,自动切�?�到英文输入法。 - 切回到
Insert模�?时,还原文å—输入时所用的输入法状�?ï¼ˆä¸æ–‡è¾“å…¥/英文输入)。
解决方法:
解法�?��?@CodeFalling的完美解决 Mac 下 Vim/Emacs 的输入法切�?�问题:
- 安装�?�?�工具
fcitx-remote-for-osx - 安装
Vim�?�件fcitx-vim-osx
PS: Thanks for your PERFECT works! @CodeFalling
4.2 Vim打开文件乱�?问题
问题说明:
Vim打开文件是乱�?,常�?çš„åŽŸå› æ˜¯ç¼–ï¿½?识别错误。
解决方法:
�?�以在.vimrc�?置文件ä¸è®¾ç½®å¥½Vim的用于�?试识别的编�?�?列,�?次使用�?列ä¸çš„编�?直到这个编�?�?�以æ£ç¡®æ˜¾ç¤ºæ–‡ä»¶ä¸çš„å—符:
" 需�?�?置到 .vimrc ä¸
set fileencodings=ucs-bom,utf-8,gb18030,utf-16le,big5,euc-jp,euc-kr,latin1如果�?然识别�?乱�?(比如文件包�?�多�?编�?çš„å—符,一定会有乱�?),�?�以在命令模�?显�?指定编�?�?新打开文件,命令如下:
" 用UTF8编�?�?æ–°æ‰“å¼€åŠ è½½å½“ï¿½?文件
:e ++enc=utf-8
" 用GBK编�?�?æ–°åŠ è½½
:e ++enc=gbk
" GB18030å—符集是GBK的超集,为了方便键入使用GBK�??
" �?�以进一æ¥åœ¨ .vimrc ä¸ï¿½?ç½®Mapping,�?得�?�??的键入
nnoremap <Leader>eu :e ++enc=utf-8<CR>
nnoremap <Leader>eg :e ++enc=gb18030<CR>æ›´å¤šåŽŸå› è§£ï¿½?和处�?�方法�?��?@滇�?çš„æ–‡ç« VIM文件编�?识别与乱�?处�?�,讲得深入浅出�?éžè¾Ÿå…¥é‡Œï¿½?
PS:
�?Vimä¸€æ ·ï¼Œå—符编�?也是一个很具计算机风味的�?题,这里�?解释,如果�?清楚�?�以自己�?ï¿½ç´¢ç ”ç©¶ä¸€ä¸‹ã€‚
4.3 转�?�文件编�?
问题说明:
如题。
解决方法:
" 设置写文件时使用UTF8编�?
:set fileencoding=utf-8
" 写文件(完�?文件编�?转�?�)
:w
" 为了方便键入,使用çŸé€‰é¡¹ï¿½??fenc并写�?一行
:se fenc=utf8 | w
" 文件转�?��?GBK编�?
:se fenc=gbk | w
" GB18030å—符集是GBK的超集,为了方便键入使用GBK�??
" �?�以进一æ¥åœ¨ .vimrc ä¸ï¿½?ç½®Mapping,�?得�?�??的键入
nnoremap <Leader>eU :set fileencoding=utf-8 \| w<CR>
nnoremap <Leader>eG :set fileencoding=gb18030 \| w<CR>�?�考资料: How can I change a file's encoding with vim? - vi.stackexchange.com
4.4 Vimå—体设置
问题说明:
�?�适å—体�?�以方便识别,�??高效率和心情,�?能说�?�?�?�?
- 对在控制�?�ä¸ï¿½?行的
Vim命令,å—体由终端�?置。 GUI Vimç”±Vim自己�?��?置。
Mac下,终端常用的是iTerm/terminal应用,GUI Vim用的是MacVim应用。
解决方法:
详�?�?�独一页的说明:设置Vimå—体。
4.5 查看所有的Vim Map
问题说明:
下�?�的场景下,会想查看所有的Vim Map:
Vim�?�以定制自己命令,为了�?�?写已有的快�?�键(Map)- 也看看想�?功能是�?是已�?有
Map了
解决方法:
redir > map.txt | silent map | redir END
" 如果文件已�?å˜åœ¨åŠ ä¸Š!�?�覆盖输出的文件
redir! > map.txt | silent map | redir END4.6 crontab -e修改失败
问题说明:
crontab修改�?�,报crontab: temp file must be edited in place出错信�?�,crontab没有修改。
$ crontab -e
# ... I do my thing in vim & :wq
"crontab.9ZcXiFaawt" 6L, 203C written
crontab: temp file must be edited in place解决方法:
在.vimrc�?置文件ä¸è®¾ç½®ï¼Œå¯¹äºŽcrontab文件�?使用备份文件:
" 需�?�?置到 .vimrc ä¸
autocmd BufNewFile,BufRead crontab.* set nobackup | set nowritebackup更多说明�?��?:
- How do I edit crontab files with Vim (I get the error: 'temp file must be edited in place') - vi.stackexchange.com
- Using vim to edit crontab on Mac OS/X
4.7 Vim䏿–‡åˆ†ï¿½?支�?的问题
问题说明:
�?�?è‹±æ–‡ï¼Œä¸æ–‡çš„�?的分离没有�?ç©ºæ ¼è¿™æ ·æ˜Žæ˜¾åˆ†éš”ï¼Œï¿½?相关的移动�?�得很麻烦。
解决方法:
目�?还 没有 找到解法。总得�?�说,这个问题�?大,�?�以替代的�?�法:
Hack/åŠ é€Ÿç³»ç»Ÿçš„æŒ‰é”®ï¿½?�?�?�,�?�以简�?�地用hjkl在�?/大范围内快速导航。- 用�?以外的方�?也�?�以比较快地完�?导航,如
- 在大范围的按段跳�?按页跳(
CTRL-D/CTRL-F)。 - 按�?�索跳
fz/Fz/tz/Tzn/N
- 在大范围的按段跳�?按页跳(
Vim分�?的相关资�?
Vimä¸Žä¸æ–‡åˆ†ï¿½? - google groupVim模�?ä¸‹èƒ½å¢žåŠ ä¸æ–‡åˆ†ï¿½?的支�?么?- 关于
Vim&Emacsçš„ä¸æ–‡åˆ†ï¿½?相关讨论
 






