Skip to content
master
Go to file
Code

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.