• 拥抱Mac之码农篇


    拥抱Mac之码农篇

    使用Mac大概两年时间。之前用着公司配的一台27寸的iMac。无奈机械硬盘严重拖慢速度,影响工作心情。于是入手Macbook Retina 13。这两年的开发工作所有在Mac上完毕,也积累了一点心得。遂总结此文。文章主要介绍一些我觉得能够提高程序猿工作效率的工具软件,希望对使用Mac的码农有点帮助。

    包管理

    Mac系统上基本的包管理有MacportHomebrew。类似于Debian系列的apt-get。Redhat的yum,主要用来安装一些开源软件,这些工具的存在大大简化了开源软件的安装过程,要不然安装一个软件可能须要提前安装一大堆依赖的软件。

    网上貌似普遍推荐Homebrew,所以当时也直接选择了Homebrew,两者的优缺点大家能够Google一下。按网上的说法主要是两者对依赖包处理方式不一样。引用知乎上的一个回答:

    Flink是直接编译好的二进制包。MacPorts是下载全部依赖库的源码。本地编译安装全部依赖,Homebrew是尽量查找本地依赖库。然后下载包源码编译依照。Flinkeasy出现依赖库问题,MacPorts相当于自己独立构建一套。下载和编译的东西太多太麻烦,Homebrew的方式最合理。

    Homebrew通过下面命令安装就可以:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    Homebrew上全部的软件以ruby代码封装成formula的形式提供,通过命令brew install xxx下载formula,得到formula中定义的软件的地址,通过wget获取软件安装包,然后本地解压编译。

    经常使用命令介绍

    搜索软件包

    在安装之前能够先搜索想要的安装包。这里以搜索macvim为例,输入下面命令:

    brew search macvim

    安装软件包

    brew install macvim

    列出已安装的软件包

    brew list

    删除软件包

    brew uninstall macvim

    升级过时的软件包

    • brew update

    • brew upgrade

    配置快捷键

    作为一个程序猿,我相信Control键是最常使用的键位之中的一个,而键盘默认Control位置按起来十分变扭,easy按错,我的做法是将Caps Lock映射成Control键,个人感觉体验非常赞。

    终端

    终端是码农的利器,一个好的终端会带来效率的提升。这里推荐iTerm2。非常方便的快捷键呼出和隐藏,强大的分屏支持。方便的历史命令自己主动完毕,丰富的UI定制等等,详细可參考iTerm 2 Features

    这里简介一下我经常使用的iTerm2快捷键:

    • cmd + t: 新建标签页, cmd + 数字:
    • ctrl + h:清空当前行
    • cmd + d: 垂直分屏, cmd + shift + d:水平分屏, cmd + [ 和 cmd + ]:分屏切换
    • cmd + ; : 历史命令自己主动完毕
    • cmd + shift + h:剪贴板历史

    强烈建议大家略微花点时间学习并打造一个适合自己的iTerm2。

    Shell

    我之所以喜欢用Mac工作,非常大一部分原因就是喜欢Mac上的Shell环境。熟悉Shell的朋友都知道命令行界面在大部分情况下是能够高效替代图形界面,但由于命令行界面使用门槛高。并且图形界面长得更讨人喜欢,所以命令行界面才沦为少数人的工具,能够说是码农专用工具。

    这里毫无疑问推荐oh-my-zsh。github上高达18000的stars可见其受欢迎程度。通过下面命令安装:

    wget --no-check-certificate http://install.ohmyz.sh -O - | sh
    

    只是默认的oh-my-zsh长得略丑,而且也不太好用,通过配置~/.zshrc能够让oh-my-zsh脱胎换骨。

    首先选择一个美丽的theme,终端是使用频率最高的软件之中的一个,UI不美观会影响工作心情。我这里比較喜欢robbyrussell主题,不同主题的样式可參考这里

    配置你须要的插件,在~/.zshrc中编辑plugins=(git ruby osx brew sublime)将你须要的插件选上,全部支持的插件可參考这里

    这里对oh-my-zsh有一个不错的介绍。

    编辑器

    这里推荐MacVim和Sublime

    MacVim

    首先说说MacVim,MacVim为vim提供了Mac上的原生GUI。假设你纠结为啥不用CUI的vim,那么能够看下这里对MacVim的一个讨论。

    安装MacVim最快的方式是运行brew install macvim

    vim的精髓就是强大的插件支持。当然最繁琐的也是配置的插件。幸运的是github上已经有了非常完好的解决方式 janus。依照说明完毕janus的安装后,你基本上拥有了一套还不错的vim配置了。

    我基于janus以及自己的习惯做了一些改进,点我:

    • 删除了一些不太用得到的插件,比方一堆用不到的主题(插件多了会影响vim的性能)
    • 替换了一些插件(比方将自己主动补全插件supertab替换成YouCompleteMe,这货真心非常强大。vim上最智能的C风格语言自己主动补全插件,基于clang实现)
    • 添加了一些插件,比如surround, auto-pairs
    • 添加一些快捷键,參考这里的最后

    我也不打算讨论vim能怎样怎样提高编辑速度。这里推荐一篇stackoverflow的文章What is your most productive shortcut with Vim?

    Sublime

    首先我个人很推荐使用vim的编辑方式,尽管学习曲线有点不那么友好,可是一旦熟悉后,你就会明确这种付出是值得的。何况如今的IDE基本都提供了vim的插件,包含以下要介绍的sublime。

    假设你对vim不熟。而且根本不打算学习vim,那么sublime是一个不错的选择。基于我是个vim控。对sublime的使用频率也笔记比較低,因此努力找了一篇还算不错的介绍sublime的文章,当然比較推荐下载sublime的vim插件。

    IDE

    这里要重点推荐一下Jetbrains系列的IDE工具。

    首先我是个Android开发,最早的时候在Windows下使用eclipse开发,后来用Mac上的eclipse。周围的同事基本也都是eclipse开发,由于eclipse是google官方推荐的IDE,用着也没认为哪里不好。但也没少吐槽,最大的问题还是eclipse真的非常慢,并且bug不少(比方全局搜索常常会弹出一个错误对话框)。一次偶然的机会读了一篇关于赞美Intellij IDEA的文章,google后发现大家一致推荐Intellij。罗列了各种Intellij比eclipse好的地方。于是业余也開始尝试一下Intellij,后来Google官方推出Android Studio使得Intellij IDEA成为其御用IDE,于是铁了心将项目都迁移到Intellij上。Intellij也提供了eclipse模式的快捷键配置,整个迁移过程基本没什么学习成本。

    在我的推荐下,周围不少同事也開始使用Intellij。特别是刚接触Android开发的同事我都会极力推荐他们直接使用Intellij。

    假设你非得让我说出有哪个功能Intellij有而eclipse没有,这的确会难倒我,由于eclipse通过插件的方式也基本都能支持到intellij也有的功能,可是你会发现Intellij非常多小点做得就是比eclipse体验更好,比方Intellij通过cmd + shift + g能够实现对xml文件里keyword的引用查找。也能够实现对文件的引用查找。比方查找某个layout在哪里被引用。这差点儿是我平时开发中用得最多的功能之中的一个。而据我所知eclipse是没有支持的。当然这样的点还有不少。还有就是再也不会像eclipse那样无缘无故的卡半天。

    当然我也没有深入去比較两者的不同。这类文章网上到处都是,对我而言最直观的感受eclipse做到的是能用。而Intellij做到的是能用而且体验好,假设读者有兴趣,我在这里也推荐一篇文章

    基于Intellij优秀的体验后。我開始关注Jetbrains旗下的其它IDE,比方RubyMine,WebStom。PyCharm,AppCode。全部IDE的使用体验基本和Intellij保持一个水准,在使用上也保持一致。同一时候Intellij通过插件也能够实现Ruby或者Web开发。当然这些IDE都是收费的,而且也不廉价,Intellij有社区免费版。大家在开发相关语言的时候能够考虑使用Jetbrains的IDE。我相信不会令你失望的。

    这里罗列一些我常常使用的快捷键(eclipse风格):

    • cmd + shift + r:高速定位文件
    • cmd + o: 方法索引
    • cmd + shift + g: 高速查找引用。支持各种元素的引用查找
    • ctrl + h: 全局搜索
    • ctrl + f: 当前文件搜索
    • cmd + 1的应用,比方定义一个未声明的方法或者变量,cmd + 1会帮助你创建。比方使用了未import的class,cmd + 1会帮你自己主动import
    • cmd + n: 自己主动生成代码,比方自己主动生成override方法,自己主动生成构造函数

    效率工具Alfred

    作为检索工具,Mac自带的Spotlight功能已经十分强大了,但Alfred提供了除了检索以外很多其它的功能。官方是这么描写叙述Alfred:

    Alfred saves you time when you search for files online or on your Mac. Be more productive with hotkeys, keywords and file actions at your fingertips.

    我已经将Alfred作为我一切操作的入口,快捷键呼出->输入命令->打开,整个操作一气呵成,全然不须要借助touch pad或者鼠标,大大提高了工作的效率。

    我一般使用Alfred主要基于下面场景:

    • 简单查找文件, cmd + num高速定位结果集中的文件,回车打开,cmd + 回车打开文件所在的目录。

    • 复杂操作文件:find定位文件,open定位并打开文件,in在文件里进行全文检索,in命令真心好用。
    • 高速启动App
    • 高速运行系统功能。比方清理废纸篓(Empty Trash),强行关闭未响应的app(fq xxx)等
    • workflow的使用,Alfred的精髓主要在这里,你能够自己定义自己的workflow,比方我想高速翻译单词hello,我仅仅要安装yd翻译的workflow后。在Alfred中输入yd hello就能够得到结果。推荐知乎上的一篇文章借助 Alfred 2 的 Workflows 功能能够做哪些好玩的事情?

    最好的熟悉Alfred方式就是打开它的设置项,在设置里基本能看到Alfred全部的功能,我就是通过这样的方式熟悉的。

    设计工具

    平时工作常常会遇到须要画个架构图或者流程图来表达你的设计。Mac上比較推荐Omni Graffale,类似于Microsoft Visio,这款软件功能十分强大,摘了一段百度百科上的介绍:

    OmniGraffle能够用来绘制图表,流程图。组织结构图以及插图,也能够用来组织头脑中思考的信息,组织头脑风暴的结果。绘制心智图,作为样式管理器,或设计网页或PDF文档的原型

    OmniGraffle通过插件形式支持Stencils的扩展,Stencils是一组用于拖放的形状,眼下也有大量的第三方Stencils来满足你的各种创意和设计。

    Omni Group是一家仅仅在Apple平台开发软件的公司。旗下其他几款App的体验都做得很出色。比如:

    • OmniOutliner是一款简单易用的用于搜集并组织信息的软件。一般我会用来做会议纪要。或者写大纲。
    • OmniPlan使得项目管理变得更加easy,用来写项目周报是个不错的选择。
    • OmniFocus是一款强大的GTD软件,用来管理你的任务。这东西入门不easy,我前也花了不少时间在这上面。好不easy入门了,坚持用了几个月,最后也没坚持下来。

    只是以上几款App的价格有点吓人,大家量力而行。

    文档撰写Markdown

    写文档应该是大部分码农比較痛苦的事情,特别是纠结于排版的时候,因此基于纯文本书写的Markdown在程序猿之间開始流行开来,非常多程序猿使用Markdown来书写博客,著名的博客平台WordPress和jekyll都能非常好的支持Markdown,包含github的Readme也是兼容Markdown语法。Markdown使用易读易写的纯文本格式编写文档,然后转换成有效的HTML。

    Markdown的宗旨是易读易写。使用Markdown书写的文档具有非常高的可读性。不会看起来像是由很多Tag或者命令组成的。其设计理念来自于纯文本电子邮件格式。

    Markdown精选了一些符号作为语法。你花半小时基本就能学会。本文使用Markdown完毕。这里有Markdown具体的语法介绍,这篇文章写得也不错。

    在Mac下比較推荐Mou。非常小巧的一个免费软件,但基本具备一个Markdown编辑器该有的功能。左边书写。右边就能够看到结果,同一时候你也能够在Mou中配置CSS来更改最后生成的HTML的效果,比方有Github风格,Solarized风格。也能够导出PDF或者HTML。这里有大量Mou的CSS主题。

    这里推荐一个比較流行的博客写作平台Git+Github+Markdown+Jekyll,有兴趣的同学能够搜索对应keyword,整个搭建过程并不复杂,这里就不赘述了。

    代码管理

    假设你平时使用git,那我比較推荐Sourcetree。它是一款功能非常强大的gitclient,比方具备git项目的管理,能够同步github和bitbucket上托管的代码。能够图形化运行各种git命令,有着简单友好的diff功能(用来做简单的code review是个不错的选择),提供git-flow的支持,它差点儿提供了git全部功能的图形化操作,但出于效率考虑,有些简单的git操作直接在终端里完毕就可以。

    使用git避免不了要选择一款优秀的diff和merge工具。在曾经我会推荐直接使用vim作为diff工具(配置~/.gitconfig就可以),只是如今Windows上非常流行的BeyondCompare公布Mac版本号了。可惜是个收费软件。有30天的免费试用期,眼下也没破解,建议入手正版,貌似也不贵。

    写在最后

    尽管啰嗦得讲了一大堆。但每个涉及到的点都没有讲细,这篇文章的主要目的是对那些刚接触Mac的同学能有一个比較好的引导,使他们能高速熟悉Mac有哪些工具能够提高开发效率,当然这里也仅仅是一个建议,每个工具必定都有其替代品,我推荐的仅仅是我个人的喜好和品味,大家可依据自身情况选择。

    假设你眼下还没有Mac。又误打误撞读了此文,而且你是个程序猿,那么请拥抱Mac吧。

  • 相关阅读:
    神经网络(2)---neurons and the brain
    P2P system:How Chord tackles failures
    如何成为更好的自己
    P2P system: Chord
    P2P system: FastTrack and BitTorrent
    P2P system: GNUTELLA
    P2P system: Napster
    P2P system: Introduction
    幸福公开课(2)
    MTV与MVC 多对多表的创建方式 前后端传输数据编码格式 ajax 批量插入数据 自定义分页器
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6993114.html
Copyright © 2020-2023  润新知