💘 Vim is awesome! Here is my practice and study log.
OTHER License
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
配置发行版了,我还一直没有去上手 😑,真是山外有山而学无止境啊~ 😲Editing is a rewording activity. -- Alan J. Perli 编辑是推敲改写的过程。 —— 艾伦·杰·佩利(计算机程序设计领域的科学家,首届图灵奖的获得者)
人类智慧输出包含了『录入』和『编辑』操作。
目前,『键盘录入』/『键盘编辑』是主流方式。 键盘操作效率的关键是『打字指法』/『盲打』。
对于录入,当然还有语音录入等等(期待脑电波的录入方式成为现实 😄)。 对于中文,还多一样,即『输入法』,如五笔、拼音。
『编辑器』 对于 编辑 的重要性 不言而喻。
综上,智慧输出包含了:
上面『打字指法』和『编辑器』的顺序重要的,如果你还不能 盲打,那么不要想着要找一个的编辑器就能高效了! 👯
Vim
入坑路径Vim
整体评论性文章,觉得值得入门上手。Vim
名声在外,问题其实是入门门槛。vimtutor
,上手了解些基本操作。这时候心理上要注意:
Vim
环境生存下来。首先要避免为了退出Vim
要去重启机器吧~Vim
实用技巧 - 以思维的速度编辑文本》边操作,完成实践和理念储备。spf13-vim
发行版,舒适强大专业的Vim
环境配置。spf13-vim
可能的一些坑。surround
。Vim
is awesomeVIM
is awesome — But don’t overdo itVim
练级攻略 - coolshell.cn | 英文原文 Learn Vim
ProgressivelyVim
Vim
/Vim
使用感觉/上手的高效配置/好用的插件。Vim
/ 程序员的编辑器 —— Vim
Vim
的风格、能力和一致性设计。Vim
使用效率的 12 个技巧Vim
PluginsVim
不是IDE
?』系列:
Emacs
的文章(能有瑜亮般的对手而相互竞争与学习,比起高处不胜寒的孤寂可以说是幸运!)
Vim
到Emacs
到Evil
Emacs
只是个强大的平台,提供各种定制来满足每个人的不同需求。所以Thanks Evil
,我已把Emacs
打造成了理想的『Vim
化的Emacs Editor
』,我可以纵情使用更方便的方式来工作。Emacs
是一种信仰!世界最强编辑器介绍》vimtutor
内容比较精简且有中文版的:
Vim
Cheat Sheet中文版 - vim.rtorr.comvi
/Vim
Cheat Sheet and Tutorial中文版(右图,点击看大图)内容比较丰富的:
Vim
Cheat-Sheet (右图,点击看大图)Cheat Sheet有几个就够用了,别多看了你~ 当然还有更多Vim Cheat Sheet 😂
Vim
user manual/reference,即是Vim
的内置帮助系统,内容丰富!!Vim
的内置帮助 :h
:h 'option'
:h command
:h :ex_command
:h ctrl-w
Vim
帮助系统的帮助,即如何使用Vim
的帮助系统: :h helphelp
Vim
书籍豆列
Vim
实用技巧 - 以思维的速度编辑文本》 | Practical Vim, Second Editionvi
和Vim
编辑器(中文版) | 《Learning the vi
and Vim
Editors》,行文稳健(很合我的风格):
vi
/ex
)再说明Vim
,从历史发展的过程更能深入理解功能适用场景。vi
/Vim
的周边信息,如vi
/Vim
的名家名言,各个变种,vi
/Emacs
的文化等等Vim
| 中文译文Vim
方方面面资料汇总。Vim
配置/插件的资源spf13-vim
- a distribution of Vim
plugins and resources - Vim
的配置集合和配置框架。
spf13-vim
首先是个Vim
配置框架,水准尽显!vimrc
- Over the last 10 years, I have used and tweaked Vim.
Vim
配置上的积累,绝对值得参考学习!Janus
: Vim
Distribution
Vim
配置版本!Vim
、tmux
和iTerm 2
的整套配置。
Vim
+ Emacs
distribution(本人没有入Emacs
圈子,作为广度了解一下)
Vim
Awesome - a comprehensive, accurate, and up-to-date directory of Vim
plugins,Vim
插件浏览站点YCM
YCM
Youtube视频地址,讲解了入门Vim
时
Vim
是个持续的过程,可以不断提高能力,进而逐步提升效率。Vim
!因为 工作紧急需要的效率 与 Vim
刚开始学习时摸索的低效 有矛盾!Vim
命令记忆法还给出实用的Tips:
Hack
(定制)你的键盘
.vimrc
- 你的新朋友!
dotfiles
),或是借鉴 https://github.com/thoughtbot/dotfiles
vimtutor
定期适量的学习 / 通过游戏http://vim-adventures.com/来学习~Youtube视频地址,2007-02-13,Vim
作者 Brian Moolenaar 在Google
做的演讲,讲解了编辑器的选择、达到高效编辑的方法和理念。
Vim
比Emacs
更好』这个问题,但你可能会觉得Emacs
并不爽~ 😂Notepad
这样简陋的编辑器,你浪费了大量的生命! 😲Vim
吧~ 😜 除此再没有其它的出路!(There is NO other RULE!)这部分的总结页:
附原文:
@oldratlee 这是我最喜欢的一节 😂
附原文:
How not to edit effectively
欢迎高手指点!请提交Issue。
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
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
一样,字符编码也是一个很具计算机风味的话题,这里不解释,如果不清楚可以自己搜索研究一下。
问题说明:
如题。
解决方法:
" 设置写文件时使用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
Vim
字体设置问题说明:
合适字体可以方便识别,提高效率和心情,不能说不重要! 💋
Vim
命令,字体由终端配置。GUI Vim
由Vim
自己来配置。Mac
下,终端常用的是iTerm
/terminal
应用,GUI Vim
用的是MacVim
应用。
解决方法:
详见单独一页的说明:设置Vim
字体。
Vim Map
问题说明:
下面的场景下,会想查看所有的Vim Map
:
Vim
可以定制自己命令,为了不重写已有的快捷键(Map
)Map
了解决方法:
redir > map.txt | silent map | redir END
" 如果文件已经存在加上!来覆盖输出的文件
redir! > map.txt | silent map | redir END
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
更多说明参见:
Vim
中文分词支持的问题问题说明:
不像英文,中文的词的分离没有像空格这样明显分隔,词相关的移动变得很麻烦。
解决方法:
目前还 没有 找到解法。总得来说,这个问题不大,可以替代的做法:
Hack
/加速系统的按键重复后,可以简单地用hjkl
在小/大范围内快速导航。CTRL-D/CTRL-F
)。fz/Fz/tz/Tz
n/N
Vim
分词的相关资源
Vim
spf13-vim
- a distribution of Vim
plugins and resources
The Ultimate vimrc
Janus
: Vim
Distribution
Maximum Awesome
spacemacs
- A community-driven Emacs
distribution - The best editor is neither Emacs
nor Vim
, it's Emacs
and Vim
!
SpaceVim
- A community-driven vim
distribution inspired by spacemacs
!