环境与工具3:从打字开始 | vim | sublime
作为程序员,最不爽的一件事是被亲戚叫去修电脑。
“喂,怎么跟你们讲,我是写代码的,不是修电脑的!什么?代码是什么?!”
小白:为什么程序员就不能修电脑了?
小程:会不会修都有可能,关键在于程序员会觉得修电脑是很掉价很low的事情。修电脑,找专业的维修员就对了,给点机会别人赚钱嘛。
小白:那如果是下图的那位让你修电脑呢?
小程:……我不仅会修电脑,我还会弹吉他与画画。

修电脑不是程序员的基本技能,而打字,却是程序员的基本技能之一。
写代码、写说明文档、写心得记录等,打字都是必不可少。一个好的键盘是硬件上的需求,而一个好的编辑器则是软件基础的重要内容。
小白:不是算法与数据结构才是最重要的吗?
小程:作为一线开发工程师,绝不能只重思路而不管操作细节。程序员应该经常想办法改善工作流程与工具,才能真正提高工作效率,而编辑器就是其中要考虑的一个工具。
本文解决一个问题:程序员务必找到属于自已的编辑器。
对于写程序来说,用什么编辑器,很多时候是很自然的结果。比如,如果是开发windows桌面软件的,那自然就选择微软的集成开发环境即IDE了,诸如vc、vs之类;再比如xcode、android studio 之类的选择,都跟开发平台直接相关。之所以选择这些IDE,是因为它们不仅可以编辑代码,而且还能编译与调试程序,甚至可以直接运行程序到目标设备。集成而且靠谱,是IDE应该提供的特质。对于特定平台的大项目的开发,特别是团队合作时,选择一个统一而合适的IDE是必要的。
但是,如果是写说明文档,写心得体会或文章编辑,用IDE就不是一个好的选择,毕竟只用到了编辑的功能,没有必要去启动一个庞大的集成开发环境那么笨拙而且操作缓慢。就算是要编译调试,也是可以考虑用编辑器加编译器或调试器的办法来实现,而不使用IDE。
小白:说那么多,就是鼓吹要有一个轻便的文档编辑器了,是吗,吹神?
小程:是的!有这个东西可以给你工作提速,而且能让你很爽。
有一堆编辑器可以选择:
notepad++
textmate
editplus
notepad2
ultraedit
vim
emacs
sublime
......
以上选择哪一个都可以,只要你用得顺手。当然,如果选择一个跨平台的,有可能更好,因为换一个平台不必另择新欢。
这里只介绍 sublime跟 vim。
(1)sublime text
sublime是一个容易上手而且能实实在在提高工作效率的工具,值得花时间去掌握(除非你已心有所属,而且已容不下第二个了)。
小白:我应该怎么精通这个武器呢?
小程:原则上,在使用时,不要急着去操作,而是多想一想,是不是可以更省事的操作?是不是有更好用的插件等着我去用?你应该不断地去改进你的工具。至于,具体如何使用sublime,搜索一下教程或经验总结就好,实战地用。
sublime的使用经验不在这里展开,但我会介绍一个有趣的插件,即plantuml。
plantuml,让你可以写代码来绘图。
使用plantuml绘图,实际就是写python代码。
(a)安装plantuml插件
在菜单tools中找到Command Palette(或者shift+cmd+p),输入add repository并回车,输入
https://github.com/jvantuyl/sublime_diagram_plugin.git
并执行。
再次打开Command Palette(shift+cmd+p),输入install package,
选择“Package control:install package”,执行完后,输入diagram,
再找到sublime_diagram_plugin并安装。
重启sublime,在Preferences -> Packages Setting,
如果看到 Diagram, 说明已经安装成功。
(b)安装graphviz
需要绘图工具库graphviz的支持,安装:
brew install graphviz
(c)使用puml
新建一个file,开始写代码绘图。按command+m,会显示一个png图,比如:


小白:哇,写代码就可以绘图,这个好酷!
小程:对于简单的图,这个工具是一个很好的选择,但对于复杂的而且有方向指向的图,别的工具很可能是更好的选择。并且,sublime的优势远不止这个插件的使用。
(2)vim
vi,一个古老而声名远播的编辑器。它用键盘解决一切问题,可以让你着迷。
vim的入门是有难度的。同样,这里不介绍它的学习,只是演示一下它的使用,如果有兴趣可以再深入了解。
macvim的演示

小白:哇,到处是刀光剑影!
小程:在熟练掌握vim后,是可以做到指哪打哪的,就是这么实在!

环境与工具3:从打字开始 | vim | sublime的更多相关文章
- 环境与工具2:建立高效的mac环境
你的工作与生活离不开电脑,电脑是一个工具,也是一个环境.环境是不是绿水青山,是不是得心应手,这是很重要的事情.小程平时使用macbook来学习跟娱乐,最近重装了系统,很多环境与工具都需要重新组建. 那 ...
- ArchLinux安装后所需要的环境和工具
ArchLinux安装后所需要的环境和工具 工具: Dolphin 文件管理器 ntfs-3G 移动硬盘挂载 octopi 实时检查更新 KDE Connect 手机电脑远程连接 DBeaver Co ...
- .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
前言 一直以来,从事的是.net winform的编程,虽然对移动互联这块很感兴趣,但是由于现有的工作和移动互联之间隔的太远,也就没有时间和精力好好的去研究和实现.今年年初辞职了,刚好朋友那里希望建立 ...
- php环境搭建工具推荐
楼楼最近由于一系列原因,使用了几款php环境搭建工具,安装配置方便,所以在这里推荐一下.第一款是XAMPP(网址http://www.xampps.com/),软件包原来的名字是 LAMPP,但是为了 ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...
- 新兵训练营课程——环境与工具Java[转]
原文地址:http://weibo.com/p/1001643874239169320051 程序员在开发过程中会用到很多工具来提升开发和协作效率,这次介绍的是目前微博平台在开发过程中用到的一些工具, ...
- PHP 环境搭建工具
PHP环境搭建工具 一键集成工具 直接安装后部署到相关目录即可浏览 phpStudy 下载地址:https://pan.baidu.com/s/1i6C3Ph7
- PHP开发环境搭建工具有哪些?
对于php开发小白来说搭建一个php运行环境就是一道坎! 因为要做php开发,搭建一个能够运行php网站的服务器环境是第一步,传统的php环境软件非常复杂,好在很多公司开发了一键搭建php安装环境,一 ...
- Java开发环境及工具安装配置
Java开发环境及工具安装配置 Windows JDK 下载地址 https://www.oracle.com/java/technologies/javase-downloads.html 安装配置 ...
随机推荐
- CentOS下SVN服务的启动与关闭
CentOS下SVN服务的启动与关闭 操作系统:CentOS 6.5 SVN版本:1.8.11 启动SVN服务: svnserve -d -r /home/svn /home/svn 为版本库的根 ...
- Handler Timer TimerTask ScheduledExecutor 循环任务解析
使用Handler执行循环任务 private Handler handler = new Handler(); private int mDelayTime = 1000; private Runn ...
- SDL中按键对应的值
想用SDL的按键检测,网上找了半天都没找到SDL中按键的值的定义,索性自己去看头文件,在SDL_keysym.h中. 其实很多键的值和它们的ASCII码是相同的. 其他更多的用法,可以参考这篇博客:h ...
- pytroch nn.Module源码解析(1)
今天在写一个分类网络时,要使用nn.Sequential中的一个模块,因为nn.Sequential中模块都没有名字,我一时竟无从下笔.于是决定写这篇博客梳理pytorch的nn.Module类,看完 ...
- Android中ListView的简单使用
动态添加单行列表: 首先前提是你的布局文件里有一个ListView 单行列表的添加只需要一个list集合即可,使用ArrayAdapter数组适配器绑定更新就行了 首先声明一个ArrayAdapter ...
- Dapper 封装oracle底层访问数据库
如下代码,修改成只支持oracle: using System; using System.Collections.Generic; using System.Data; using System.L ...
- 用递归方法求n的阶乘
代码: #include<iostream> using namespace std; int fact(int n); int main() { int n; loop: cin > ...
- JS HTML DOM代码(1)
<!DOCTYPE html> <html> <style type="text/css"> #容器 { width: 400px; heigh ...
- ASP.NET Core知多少(6):VS Code联调Angular + .NetCore
ASP.NET Core知多少系列:总体介绍及目录 1. 引言 最近在看<程序员的成长课>,讲到程序员如何构建技能树,印象深刻.作为一名后台开发的程序员,深感技能单一,就别说技能树了.作为 ...
- Axure环境安装,组件引入,使用示例
资源下载: Axure的中文官方下载地址:https://www.axure.com.cn/3510/ Axure汉化包:https://www.axure.com.cn/2616/ Axure元件库 ...