The Wayback Machine - https://web.archive.org/web/20200706192926/https://github.com/oldratlee/vim-practice
Skip to content
Branch: master
Go to file
Code

Latest commit

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 �?典的�?置�?�行版/�?�件站点

  • spf13-vim - a distribution of Vim plugins and resources - Vim的�?置集�?�和�?置框架。
    • 包�?�很多�?�件/主题,无论是�?白还是高手,�?时好用是王�?�,用起�?�。
    • 直接使用,�?置的效果和包�?�的�?�件 已�?很�?错了。
    • spf13-vim首先是个Vim�?置框架,水准尽显�?
  • The Ultimate vimrc - Over the last 10 years, I have used and tweaked Vim.
    • 作者 10å¹´+ 在Vim�?置上的积累,�?对值得�?�考学习�?
  • Janus: Vim Distribution
    • �?�一个Vim�?置版本�?
  • Maximum Awesome - 三架马车Vim�?tmuxå’ŒiTerm 2的整套�?置。
    • 值得了解学习�?
  • Vim + Emacs distribution(本人没有入Emacs圈�?,作为广度了解一下)
  • Vim Awesome - a comprehensive, accurate, and up-to-date directory of Vim plugins,Vim�?�件�?览站点

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.