MacBook 兼具命令行的高效与图形界面的酷炫,实在是程序员必备利器。本文主要介绍我在两年的使用过程中总结出的一些最佳实践,供大家参考、借鉴。
Mac OS 简介
Mac OS可以被分成操作系统的两个系列:
一个是老旧且已不被支持的“Classic”Mac OS(系统搭载在1984年销售的首部Mac与其后代上,终极版本是Mac OS 9)。采用Mach作为內核,在Mac OS 7.6.1以前用“System vX.X”来称呼。
新的OS X结合BSD Unix、OpenStep和Mac OS 9的元素。它的最底层建基于Unix基础,其代码被称为Darwin,实行的是部分开放源代码。
关于为什么Mac系统没有采用Linux内核,而是采用了BSD还有个小故事,感兴趣的大家可以看Mac OS X 背后的故事(二)——Linus Torvalds的短视这篇文章。
尽管 Mac 的文件系统目录和 Linux 差不多,但还是有些差距,可参考下面的表格:
Mac 开发环境部署
包管理器 Homebrew
The missing package manager for macOS
brew
相当于Ubuntu
下的apt-get
,CentOS
中的yum
。非常方便实用,一条命令即可安装:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
文本编辑器 Atom
Atom 新时代的文本编辑器,功能和 Sublime 差不多,但是免费开源,快捷键也类似,可以无缝迁移。两个非常实用的快捷键:
Multiple Selection
Control+Command+G
(在 Linux/Windows 下,是Alt+F3
)选中多行
Shift+Command+L
终端 iTerm 2
Mac自带的终端不是很强,程序员们需要一个强劲的终端来工作,于是有了 iTerm2,这个终端可以很方便的用快捷键来达到分屏(CMD+D)、开多个Tab(CMD+T)、在多个Tab之间进行切换(CMD+数字),其中有一点不好的是不能按字移动,如果我们在终端上键入"OPTION+向左键",会输入一个特殊字符,我们需要自定义两个Action为Send Escape Sequence的快捷键,效果如下图:
我这里把向前按字移动设为了"OPTION+CMD+向左键",向后按字移动设为了"OPTION+CMD+向右键"
当然,说到了 iTerm2,不得不提到终端复用软件 tmux,tmux 默认配置文件在 Mac 上很别扭,你可以参考我这里的配置文件,这样 tmux 就可以像 vim 一样实现各种分屏的效果了。如果你还不知道 tmux 为何物,强烈推荐你看这个13分钟的视频,绝对物超所值,感谢 happypeter 的分享。
终端中输入命令时,移动光标有两种方式,一个是 emacs,一个 vi,可以通过 set 命令来设置,默认的是 emacs 模式,也可以通过set -o emacs
来显式设置,有如下快捷键:
ctrl + a
Move cursor to beginning of linectrl + e
Move cursor to end of linemeta + b
Move cursor back one wordmeta + f
Move cursor forward one wordctrl + w
Cut the last wordctrl + u
Cut everything before the cursorctrl + k
Cut everything after the cursorctrl + y
Paste the last thing to be cutctrl + _
Undo
如果想使用 vi 模式,可以使用如下命令set -o vi
开启。
开启vi 模式后,默认是 insert 模式,按下esc
键进入命令模式。
h
Move cursor leftl
Move cursor rightA
Move cursor to end of line and put in insert mode0
(zero) Move cursor to beginning of line (doesn't put in insert mode)i
Put into insert mode at current positiona
Put into insert mode after current positiondd
Delete line (saved for pasting)D
Delete text after current cursor position (saved for pasting)p
Paste text that was deletedj
Move up through history commandsk
Move down through history commandsu
Undo
参考:
Getting Started with BASH
How To Use the Emacs Editor in Linux
其他一些有用的快捷键:
Ctrl + r
搜索历史命令!!
执行上条命令Ctrl+X Ctrl+E
调用默认编辑器去编辑一个特别长的命令
~/.bashrc
Linux 一般通过~/.bashrc
进行环境变量的配置,但是在 Mac 下配置后,发现根本没有效果,这是为什么呢?
其实这是个比较基础的问题,shell有两种:登录式shell与非登录式shell,直观理解,登录(login)式shell就是在你打开shell要求你输入用户名与密码的shell,我们在使用桌面Linux时一般只在登录时接触到这种shell,等我们进入系统后,再打开的Terminal就是非登录式shell了。这两种 shell 读取配置的文件是不同的:
登录式Shell启动时会去读取
~/.profile
文件(Redhat、Mac上为~/.bash_profile
)非登录式Shell会去读取
~/.bashrc
文件
这也就解释了为什么在 Linux 系统上只需要修改 ~/.bashrc
后即可生效的原因。但在 Mac 上有些不同,开机后再通过 Terminal.app(或iTerm.app) 打开终端时,这时的 shell 是登录式shell,因为Terminal.app(或iTerm.app)这个应用程序是通过/usr/bin/login
这个命令打开终端的,所以不会去source ~/.bashrc
了。
解决方法也很简单,在~/.bash_profile加上下面一句代码就ok了
[ -r ~/.bashrc ] && source ~/.bashrc
Mac下ls
命令默认是没有颜色的,不是很直观,可以自己设置一个alias,参考链接
export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
alias ls='ls -FG'
alias ll='ls -l'
系统快捷键
查看桌面
F11
HOME
Command + <-
END
Command + ->
锁屏
Shift + Control + 电源键
(Windows 下为Win+L
)强制关闭程序
Command + Option + esc
(Windows 下为Ctrl+Alt+Delete
)
Finder
Finder是Mac上的文件浏览器,其中有个比较严重的问题时,没有“剪贴(cut)”功能,当我们选中一个文件后,菜单中的“Edit”->“Cut”是灰色的,也就是无法使用,这是因为Finder中的“Cut”只适用于文本,对于文件就无能为力了。
我们当然可以通过打开两个Finder窗口,然后“拖”过去。但是这样未免太麻烦了,其实我们可以这么做:
首先
Cmd + C
复制文件然后找到你想要放到文件夹
最后
Cmd + Option + V
就能实现“剪贴”的效果了。
参考:Why is it not possible to use the “cut” command to manipulate a file in the Finder?
JAVA_HOME
Mac下的使用*dmg
文件安装JDK后,JAVA_HOME在那里呢,可以通过执行/usr/libexec/java_home
这个命令来获取JAVA_HOME
export JAVA_HOME="$(/usr/libexec/java_home)"
修改hostname
Mac下修改hostname也和Linux下不同,命令是
sudo scutil --set HostName
查看USB设备
system_profiler SPUSBDataType
常用软件
日常使用的软件首选通过App Store
进行安装,默认安装在/Applications
下,个人从互联网上单独下载的软件放在这里面即可出现在Launchpad
中找到。
对于通过App Store
安装的软件,在Launchpad
界面,按住Option
键可进行删除。但是需要注意一点的时,应用程序一般都会有些历史文件,存放的位置有如下三处
~/Library/Application Support/
~/Library/Cache/
~/Library/Preferences/
.plist
使用find + grep
的方式就能轻松找出来了。网上也有诸如AppCleaner、AppZapper的小软件,大家可以根据需要自取之。
下面介绍下我日常实用的一些免费软件,供大家参考。
图片截屏、编辑
Mac上的截图工具已经很好了,Cmd + Shift + 3/4
就够用了,但是如果想在图片上写些文字,马赛克某部分,就不行了,推荐用 Snip,才 2M 大小,虽说是腾讯开发的,但是不流氓。可以设置快捷键,我设定的是Cmd + Shift + 6
。
更重要的一点是,Snip 可以解决Retina下截屏2x问题(就是截出来的图超大),就光这个特点就足以让你使用snip。
我平常用图片编辑就是修改像素大小,mac自带的preview就够用了。 像旋转、添加文字功能Preview也有,基本能够满足大部分人的需求。
如果你依赖于Evernote,可以试试圈点,洋名skitch,同样很好很强大。
录屏 gif
很多时候我们需要把自己的操作展示给别人看,比较好的做法是通过录屏软件将自己的操作保存成 gif 格式的图片。
开源免费的licecap 很好的解决了这个问题。
流程图制作工具
对于程序员来说,流程图应该是再亲切不过的了,一张图胜过千言万语。之前我都是用 Keynote 来画,但是实在是不好用,后来在知乎上发现了在线版的ProcessOn,大大减少了我画流程图的时间,上手也比较快。
视频播放器
Mac下的自带的播放器QuickTime,功能实在是太弱了,支持的格式既少又难用,快进什么的貌似都没快捷键,只能手动点击进度条,试用了一段时间的Mplayer,发现效果也不好,会有视频卡顿的现象,最终选择了 VLC,一直用的还不错。
音乐频播放器
官方的 iTunes 实在是不适应,喜欢简洁清爽的朋友可以试试 VOX
*.webarchive
在windows下保存网页时,如果想把网页上的资源,比如css、js、image等一起下载下来,会单独生成个文件夹,但是用 Mac 上的 Safari 保存整个网页时,是以webarchive
为后缀名的文件进行保存的,如何把打开这种文件呢?推荐:
http://sourceforge.net/projec...
常见问题
不能写 NTFS
用惯了 Windows 的大家都习惯用 NTFS 文件系统格式,但是很遗憾,这个文件系统是微软自己搞得,不是开放的,所以 Mac 是不支持的,如果你以前的 NTFS 格式的硬盘放到 Mac 上,会发现只能进行读操作,不能写入,这属于正常现象,不要惊慌。
解决的方法也很简单,把移动硬盘格式化成FAT32(单个文件大小不能超过4G)或FAText 格式都可以,Mac 自带的磁盘工具就可以进行格式转化,当然你需要先把移动硬盘上的数据拷贝出来。
Wi-Fi 时常中断
Mac 生于乔帮主之手时,为了凸显尊贵,接口与一般的电脑有很大不同。常见的网线没办法直接连接 Mac 电脑,需要单独购买一个以太网转接器,所以大部分同学都是使用无线连接,但 Mac 这里应该是有个 bug,而且是很久的 bug,我用 Mac 两年了,偶尔会遇到几次,网上解决的方法有如下几种:
修改网络位置,不是其默认的“自动”就好
修改路由器,把无线信道改为6或9
关闭蓝牙,Mac 中,同时打开蓝牙与 Wi-Fi 会冲突。详情
如果你的 Mac 也遇到了 Wi-Fi 问题,可以试试上面三个解决方法。
总结
Once you get Mac, you never come back!
参考
OS X 的一些技巧汇总
PS: 微信公众号,头条,掘金等平台均有我文章的分享,但我的文章会随着我理解的加深不定期更新,建议大家最好去我的博客 liujiacai.net 阅读最新版。