Version: Alpha8
QQ群号: 20506135
微信号: linux_developer
主编: 猫猫
本期编辑: 江湖郎中
抱歉各位,我们的订阅中断了这么长时间。大家工作都很忙,没有太多时间去写些东西来和大家分享。好了,年底了,又有时间了,来和大家一块分享经验了。
9月份 自由软件日 活动时,猫猫 要求我将分享的 《vim、emacs双修之路》 内容详细的写出来分享给大家,找个借口是工作太忙没有时间写,但是真不敢提笔的真实原因是个人 vim
emacs
的修为实是不足,也刚刚是日常使用而已。但是实在抵挡不了 猫猫 的多次催稿,只能写下些东西。
首先,我不是布道者,更不是大牛或者大神,我只是一个把Vim和emacs当成我自己趁手工具的普通用户.我并不想通过短短的一个文章就将各位引入"岐途",这篇文章也不是一篇教程,我也无法在短短的内容中完全教会大家怎么使用,大家可以去 google
这样的入门或者 "成神" 的教程. 我只是在分享我对自己使用工具的思考和我学习使用它们的一点点经验。
当然我也会使用一些其他的编辑器比如sublime,有时也会使用一下IDE,比如pycharm,qtcreator,eclipse等。然而占据我主要时间的仍旧是vim和emacs。
为什么会这样呢?
有这样的场景,我gcc编译失败,查看输出信息是 xx.cpp
的第 n
行出现一个单词拼写错误。如果使用IDE去修改这一个错误结果是打开IDE的时间比我要修改错误的时间要多的多。如果我使用记事本这样的工具,我需要右键打开文件选择记事本打开,然后拖动滚动条到错误行,拖动的时间要看你的运气了,然后鼠标或者方向键选择错误修改。
而我使用 vim xx.cpp +n
打开文件直接定位到错误行,然后 f
到错误位置, cw
修改错误单词,:wq
退出。我的修改已经完成并开始编译,你的eclipse或者VS是否已经打开?
你只是要修改一个变量却需要打开一个庞大的IDE这着实不是一件很爽的事情.
如果说sublime是前端的神器,那vim和emacs应该是开发人员全栈神器。
比如用emacs写latex文档并被渲染出所见即所的排版效果。
最让你无法放弃vim和emacs的是当你使用一门新的语言时可以快速的找到在vim和emacs上的语法绑定,也许那个时候根本没有这么语言的IDE环境。
我们可以重新理清一下自己开发所需要的基本需求:
- 我们70%以上的时间是在修改代码而不是写代码,快速定位错误位置并修改
- 发现问题时才会去修改,否则你只是查看代码而已
- 剩余不到30%的写代码的需求有那些呢?
- 语法高亮
- 智能补全
- 代码提示
- 批量重构
- 读代码也许是我们除了写代码和改代码以外干的最多的事情了,更好的代码定位和查找功能应该是我们不可或缺的功能
- 哦,别忘了最重要的基本文本编辑功能
这些vim和emacs都能做到。这里我想说的是代码提示的问题,如果你依赖代码提示,写完了代码,而没有真正弄懂这个函数实际的意义,那你写的代码将是一个 美丽的坑. 永远不要在你弄懂一个函数之前使用它,否则后果自负。
好吧,我孤陋寡闻只能列举这些,当时我们需要一些调试功能,一些编译功能,还有一些... 或者是更多。
STOP!!!
这些似乎应该交给更专业的工具去做,并且调试,编译功能如果集成到一起可能会影响你的工作效率.vs中你可以边编译边写代码?你可以同时编译多个项目吗?(欧,你可以开多个IDE来达到这些目标)
想想,哪里不对,我只是想写代码,只想找到错误.我想在我的环境中干好这件事情,并且希望不受干扰的干好这件事情.
当然,这些不仅仅是vim和emacs能干到,其他有些编辑器在某些方面干的更好,比如 sublime
, textmate
, atom
等,但是苦于他们的协议,或者囊中羞涩,Oh! 好吧,目前你选择vim或者emacs是最正确的。也不排除未来会有更好的工具,祈祷来拯救我们这些深陷于vim和emacs魔爪中的可怜的生灵的万能的主吧。
大多数人第一次使用vim绝对和我的经历很相似,安装的linux上只有vi,并且真的是不知道怎么 输入
内容,更要命的是根本占据整个TTY,按遍整个键盘而无法 退出
。你是怎么退出的呢? 重启系统?或是Ctrl+c?
初恋的感觉莫过于最初的心跳。并且由这个心跳所驱使的进一步的好奇心。进一步的追求终于牵手,原是输入要先按 i
,退出的方法是 :q
或者 ZZ
。现在已经可以使用vim了。
有多少人被vi的冰冷的外表所击退,与 “女神” 擦肩而过?
到目前为止vim仅仅是一个编辑器,并且没有记事本好用。传说中的 编辑器之神
你在何方?
vim通过插件插件将会从 一个超强的编辑器
变为 编辑器之神
- 普通模式
- 插入模式
- 命令模式
另外还有 增强命令模式,可视化模式,选择模式。
vi的思想就是在某种模式下去做特定的事情,比如我们在插入模式下就是去输入我们的文字,不要管修改的问题。当我们需要修改时切换到普通模式下,快定位到修改位置快速修改。
三种常用的模式中,如果你不是长期处于普通模式下,那你要思考你的工作状态了。我们70%的时间都是在修改代码而不是去写代码。
vi不是一个编辑器,而是一种编辑模式,它已经被大量的IDE所认可并集成到其中成为内置的一种编辑模式。
pacman -R emacs
yum remove emacs
apt-get remove emacs
我们先来一个暗黑科技,在emacs中安装 evil ,使emacs支持vi的三种模式和基本的快捷键,通过 evil-leader 使其支持vi的leadermap。
emacs与vim的设计理念不同,vim专注,希望你快速的切入切出.而emacs则希望你能够通过他来完成所有的工作而不需要退出emacs。
历史上曾经有一个操作系统是用lisp写的,当然它不是emacs,并且它早已经被所有人所遗忘。但是emacs不会,它太善于伪装自己,在编辑器的背后,你可以发邮件,刷微博,写wiki,看日历,打俄罗斯方块。终于有一天你会进行下面的操作:
emacs --daemon
alias e="emacsclient -t"
alias em="emacsclient -c"
好吧,你赢了,emacs作为daemon加到服务中,随系统一起启动,和系统一起关闭。
快捷键绑定
pacman -R vim
yum remove vim
apt-get remove vim
当然我没有机会使用vim或者emacs的终极秘籍。我作为异教徒和骑墙派,在工作中都会用到他们。
- 远程ssh
- 快速修改文件
- rst文档
- 环境与emacs快捷键冲突的
- 新安装的系统
- 手机(vimTouch)
- emacs不能做好的
- 没有emacs
- 内置vi模式的IDE中
- 工程项目
- markdown文档
- gdb调试
- tty中需要输入中文的
- woman
- 环境与vim快捷键冲突的
- vim不能做好的
- 没有vim
- 内置emacs绑定的IDE中
- 没有特定工具替代完成(做浏览器,pdf查看器,图片查看器)
在正常使用中频繁的更换工作场景,自然会引发emacs和vim的频繁切换,而这一切都是一个痛苦的过程。我通过简单配置将这一过程的痛点降到最小。简单到只需要做两件事情。
- 统一配色和字体
- 统一功能性快捷键
欢迎群成员自荐自己的blog文章和收集的资源,发邮件给我,如果有意见或建议都可以mail我。
如果无法直接在邮件内查看,请访问github上的页面或网站。
如果查看历史订阅请到readthedocs。
我们在github上开放编辑希望大家能参与到其中。