Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Vim Practice 知识共享å??议(CCå??议) Attribution-NonCommercial-ShareAlike CC BY-NC-SA

0. �

0.1 Vim vs. Emacs

一上�就�说一个『宗教性�问题,很�险啊� 😄 这节�会说2个编辑器有什么�好,�者自己并�熟悉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å?ªæ˜¯ä¸ªå¼ºå¤§çš„å¹³å?°ï¼Œæ??ä¾›å?„ç§?定制æ?¥æ»¡è¶³æ¯?个人的ä¸?å?Œéœ€æ±‚。所以Thanks Evil,我已把Emacs 打造æˆ?了ç?†æƒ³çš„『Vim化的Emacs Editorã€?,我å?¯ä»¥çºµæƒ…使用更方便的方å¼?æ?¥å·¥ä½œã€‚
        这个�路已�被解决方案化了,�是spacemacs,已�是最�的Vim/Emacs�置�行版了,我还一直没有去上手 😑,真是山外有山而学无止境啊~ 😲

0.2 关于编辑本身

Editing is a rewording activity. -- Alan J. Perli
编辑是推敲改写的过程。 —— 艾伦·�·佩利(计算机程�设计领域的科学家,首届图�奖的获得者)

人类智慧输出包�了『录入�和『编辑��作。

目�,『键盘录入�/『键盘编辑�是主�方�。
键盘�作效率的关键是『打字指法�/『盲打�。

对于录入,当然还有语音录入等等(期待脑电波的录入方��为现实 😄)。
对于中文,还多一样,�『输入法�,如五笔�拼音。

『编辑器� 对于 编辑 的��性 �言而喻。

综上,智慧输出包�了:

  1. 键盘�作:
    • 打字指法
  2. 录入 => 键盘录入:
    • 输入法
  3. 编辑 => 键盘编辑:
    • 编辑器

上�『打字指法�和『编辑器�的顺���的,如果你还�能 盲打,那么��想��找一个的编辑器就能高效了� 👯

1. 学习资料

1.1 关于『学习�本身的规律

  1. 学习一样新事物的先进,�在于刚开始看到的点,而在于�解 一整套 方法,整套方法背�蕴�体现的是�念。
  2. 上手新事物必然先�历一个能力下�阶段,因为你�放弃你所熟悉的,�新接纳新的一套方法。
  3. 有下�想法�学必然�锢于原地�步:
    • ä¸?愿去ç?†è§£ç?†å¿µï¼ˆæ•´å¥—方法),而是用当å‰?自己熟悉的技能点去比新事物的点。
    • ä¸?愿接å?—上手新事物的学习æˆ?本和先è¦?ç»?历能力下é™?的一个阶段。

1.2 个人的Vim入�路径

  1. 看一下Vim整体评论性文章,觉得值得入门上手。
    这点基本ä¸?是问题,Vimå??声在外,问题其实是入门门槛。
  2. 通过vimtutor,上手了解些基本�作。这时候心�上�注�:
    • è¿™å?ªæ˜¯äº†è§£åŸºæœ¬ï¼Œä¸?è¦?认为这一步å?¯ä»¥åœ¨æ—¥å¸¸ä¸­æ–¹ä¾¿çš„使用了。
    • 让自己å?¯ä»¥åœ¨Vim环境生存下æ?¥ã€‚首先è¦?é?¿å…?为了退出Vimè¦?去é‡?å?¯æœºå™¨å?§ï½ž
      (😂 �以看看Stack Overflow:帮助一百万开�者退出 Vim)
  3. 系统学习,边看《Vim实用技巧 - 以�维的速度编辑文本》边�作,完�实践和�念储备。
    这一步我��一个相对慢速但�续的过程,两三周时间。
  4. �置上spf13-vim�行版,舒适强大专业的Vim环境�置。
    很多人ä¸?推è??这么å?šï¼ŒåŽ»ä½¿ç”¨åˆ«äººçš„ä¸€å¤§å¥—é…?置。
    我这么�比较实用,原因是:��大��置打磨的时间投入,先接纳有心人的专业�验。
    中间会去填spf13-vim�能的一些�。
  5. 了解一些�典�件并�个实战,如surround。

1.3 文章/讨论

1.4 上手

  • vimtutor

1.5 速查

内容比较精简且有中文版的:

  1. Vim Cheat Sheet中文版 - vim.rtorr.com
  2. Graphical vi/Vim Cheat Sheet and Tutorial中文版(�图,点击看大图)
    该图的��链接,官网中文版。 # 这张图你肯定在别人桌�上�过 😄

内容比较丰富的:

  1. Beautiful Vim Cheat-Sheet (�图,点击看大图)
    # 个人觉得这个是信�表达最好的一个� 💘💖 该图的��链接,这个Sheet Cheat的评论和官网。
  2. Cheat Sheet - michael.peopleofhonoronly.com

Cheat Sheet有几个就够用了,别多看了你~ 当然还有更多Vim Cheat Sheet 😂

1.6 系统学习

  1. Vim user manual/reference,�是Vim的内置帮助系统,内容丰富��
    中文版 http://sourceforge.net/projects/vimcdoc/files/pdf-manual/
    1. 学会用Vim的内置帮助 :h :h 'option' :h command :h :ex_command :h ctrl-w
    2. Vim帮助系统的帮助,�如何使用Vim的帮助系统: :h helphelp
  2. 个人整�的 Vim书�豆列
    1. 个人先看的是《Vim实用技巧 - 以�维的速度编辑文本》 | Practical Vim, Second Edition
      以编辑ç?†å¿µå’Œå®žè·µæ¨¡å¼?为纲介ç»?,推è??之。
      ��共�感一射,编辑与�考�飞�
    2. 学习vi和Vim编辑器(中文版) | 《Learning the vi and Vim Editors》,行文稳�(很�我的风格):
      1. 先介�基本功能�说明如何组�技术,从熟悉到领会。
      2. �介�基本编辑器(vi/ex)�说明Vim,从历��展的过程更能深入�解功能适用场景。
      3. 还介ç»?vi/Vim的周边信æ?¯ï¼Œå¦‚vi/Vimçš„å??å®¶å??言,å?„个å?˜ç§?,vi/Emacs的文化等等
  3. vim-galore - Everything you need to know about Vim | 中文译文
    Vim方方��资料汇总。

2. Vim�置/�件的资�

2.1 �典的�置�行版/�件站点

2.2 �典�件介�

3. 分享视频�其笔记

3.1 Learning Vim in a Week

Youtube视频地�,讲解了入门Vim时

  • 观念上的改å?˜/注æ„?事项
    • 总有更好的å?𿳕
    • 学习Vim是个æŒ?续的过程,å?¯ä»¥ä¸?æ–­æ??高能力,进而é€?æ­¥æ??å?‡æ•ˆçŽ‡ã€‚
  • ä¸?è¦?在平时的工作使用中开始学习Vimï¼?因为 工作紧急需è¦?的效率 与 Vim刚开始学习时摸索的低效 有矛盾ï¼?
  • Vim命令记忆法

还给出实用的Tips:

  1. Hack(定制)你的键盘
    • 通过Seil修改Caplocké”®æˆ?ECSé”®
    • 通过karabiner修改键盘é‡?å¤?å‰?延迟和加速é‡?å¤?频率,以快速地在Vim中导航
  2. Graphical vi/Vim Cheat Sheet and Tutorial
    中文版 http://blog.ngedit.com/vi-vim-cheat-sheet-sch.gif
  3. .vimrc - 你的新朋��
    • 一定è¦? 版本控制 èµ·æ?¥ï¼?
    • å?¯ä»¥å?·å€Ÿä½ æœ‹å?‹çš„é…?置文件(dotfiles),或是借鉴 https://github.com/thoughtbot/dotfiles
  4. 通过官方的vimtutor定期适�的学习 / 通过游�http://vim-adventures.com/�学习~
  5. 通过看高手的�作视频方法�学习

3.2 7 Habits For Effective Text Editing 2.0

Youtube视频地�,2007-02-13,Vim作者 Brian Moolenaar 在Google�的演讲,讲解了编辑器的选择�达到高效编辑的方法和�念。

编辑器的选择

  1. 如果你已�熟悉精通了一个编辑器,挺好的。这里�会讨论『Vim比Emacs更好�这个问题,但你�能会觉得Emacs并�爽~ 😂
  2. 但��使用�Notepad这样简陋的编辑器,你浪费了大�的生命� 😲
  3. �么用一个觉得的爽的编辑器,�么转用Vim�~ 😜 除此�没有其它的出路�(There is NO other RULE!)

达到高效的3个基本步骤

这部分的总结页:

  1. �觉低效
    • å?‘现你浪费时间的地方
  2. 找到更快的方法
    • 阅读在线帮助
    • 阅读速查手册ã€?书ç±?等等
    • 问问朋å?‹æˆ–是å?Œäº‹
    • æ?œç´¢ç½‘络
    • 自己æ?žå®š
  3. 使之�为习惯
    • 动手å?šèµ·æ?¥
    • æŒ?续改进

附原文:

  1. Step 1: Detect inefficiency
    • Find out what you waste time on
  2. 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
  3. 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 的输入法切�问题:

  1. 安装��工具fcitx-remote-for-osx
  2. 安装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:

  1. Vim�以定制自己命令,为了��写已有的快�键(Map)
  2. 也看看想�功能是�是已�有Map了

解决方法:

redir > map.txt | silent map | redir END
" 如果文件已�存在加上!�覆盖输出的文件
redir! > map.txt | silent map | redir END

4.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

更多说明��:

4.7 Vim中文分�支�的问题

问题说明:

��英文,中文的�的分离没有�空格这样明显分隔,�相关的移动�得很麻烦。

解决方法:

目�还 没有 找到解法。总得�说,这个问题�大,�以替代的�法:

  • Hack/加速系统的按键é‡?å¤?å?Žï¼Œå?¯ä»¥ç®€å?•地用hjkl在å°?/大范围内快速导航。
  • 用è¯?以外的方å¼?也å?¯ä»¥æ¯”较快地完æˆ?导航,如
    • 在大范围的按段跳ã€?按页跳(CTRL-D/CTRL-F)。
    • 按æ?œç´¢è·³
      • fz/Fz/tz/Tz
      • n/N

Vim分�的相关资�

 


You can’t perform that action at this time.