** 更新于2017.01.15 **

团队里面使用mac的越来越多了,而且内网或者外网上已经有很多类似于mac使用指南的文章,所以本篇是个杂糅,不管你是mac新用户还是资深用户,都欢迎来交流一下各自的使用心得。

0. 开篇

mac os x系统对于普通用户来说是开箱即用的,但是对于码农来说肯定还是不行的,我们需要一些工具的辅助,并且在日常使用中掌握一些操作小技巧还是很有帮助的。

这里稍微科普一下mac os x的发音,最后一个x指的是罗马数字10,所以发音为ten,而不是唉客斯或者叉。

1. 工具篇

所谓工欲善其事必先利其器,好的工具,是值得我们花一些时间去学习使用的,况且,os x上的工具都很易用,所花的学习成本对比获利来说基本可以忽略不计

iTerm

由于mac也是类unix系统,所以原生自带各种unix终端工具,虽然系统自带了一个终端软件,但是用户体验确实不咋滴,幸好有iTerm,如果你日常工作会用到终端,那么强烈推荐安装iTerm。另外推荐配合使用zsh、oh my zsh、z,具体的可以阅读池老师的文章终极 Shell

另外,iTerm默认使用的字符编码是UTF-8,登上服务器看日志时,容易乱码,可以自己新建一份配置,使用GBK字符编码,当出现乱码时,右键选择edit-session就可以切换字符编码,并且是立即生效的

GoAgentX

有些时候,查些问题、资料或者做其他事的时候,网页或者某些内容可能会被牛逼的GFW给和谐掉,所以就必须翻点小墙来解决了

说到翻墙,那么就推荐大家使用GoAgentX了,它支持的姿势包括3proxy、COW、goagent、HTTPS/SSL、shadowsocks、Shell脚本、SPDY、SSH、Stunnel

Go2Shell

在使用Finder的时候,有时候是不是想要在终端中打开当前目录进行操作,如果你有这个需求,那么可以使用Go2Shell,安装完这个软件后,把它拖到Finder的工具栏上,点击Go2Shell,就会自动打开终端并且切换到当前Finder所在目录

随便说一下,在终端下想用Finder打开目录,可以使用命令open,比如打开终端当前目录:open .

Moom 在最新的10.12中,有兼容性问题,推荐Spectacle

刚从windows转移过来的用户,可能对mac没有窗口最大化感到很别扭,那么推荐使用Moom,它可以让你自由的选择窗口最大化、窗口占据屏幕1/2等操作

Alfred 2

这个可以称为是神器,熟练使用Alfred后,基本可以对dock说拜拜,使用Alfred可以很方便的启动、打开和搜索应用、文件等操作,可以快速的翻译单词、计算器计算等,购买收费的powerpack后,功能会更强大。具体的可以阅读池老师的文章神兵利器——Alfred

当然,10.10的Spotlight也很不错

Manico

日常办公,基本上也就那么6,7个常用的软件之间来回切换,告别鼠标切换、alfred切换,改成快捷键吧,可以试试Manico

Gas Mask

如果你需要经常在各种测试Hosts、预发布Hosts之间来回切换,那么可以试试这个Hosts管理软件

1Password

信息安全一直很重要,每个站点推荐使用复杂并且不重复的密码,1Password就是你需要的一站式解决方案。当前1Password从之前的平台收费改成了订阅收费,但是平台收费貌似依然是存在的。

iStat Menus

推荐用这个软件的时间代替系统原有的时间,因为它整合了时间、日历,可以非常方便的查看各种会议和事项,它还含有硬件温度、网络流量情况、风扇转速等数据

其他

解压缩:The Unarcheiver 视频播放:MplayerX 虚拟机:Parallels Desktop Markdown编辑器:Typora HTTP代理:Charles 读写NTFS:Tuxera NTFS 数据库工具:Sequel Pro

2. 小技巧篇

有了得心应手的工具之后,如果再在日常操作中学习积累一些小技巧,那么就是再好不过的事了。

截图

日常对截图的操作还是比较频繁的,有些人可能习惯使用旺旺来截图,或者QQ来截图,其实mac os x是自带截图功能的,而且支持全屏截图至剪切板、选择截图至剪切板、全屏截图至文件、选择截图至文件,具体的快捷键可以在系统偏好设置-键盘-快捷键-屏幕快照查看或修改。默认的快捷键有点复杂,但是多操作几次,就会形成反射弧的。

系统自带的截图,不支持截图后马上进行图片编辑操作,已切换到使用钉钉的截图了,不过单纯的截图操作依然推荐系统自带的

终端快捷键

经常使用终端的话,掌握一些常用的快捷键其实是很用帮助的。

移动到所在行首:ctrl + a
移动到所在行尾:ctrl + e
清除光标到行首的内容:ctrl + u
清除光标到行尾的内容:ctrl + k
移动到所在单词的词首:esc + b
移动到所在单词的词尾:esc + f
删除前一个单词:crtl + w
清除屏幕内容:ctrl + l
内容提示或补全:tab

brew

如果你熟悉Linux,一定会觉得通过apt-get、yum、pacman等命令来安装软件非常的方便,那么如果你想在mac上也体验这种便利,那么推荐使用brew以及brew cask

快速登陆服务器

鉴于身边小伙伴的需求,写了一个安装脚本,执行后即可使用,详情见github

sh -c "$(curl -fsSL https://raw.githubusercontent.com/diseng/quickLogin/master/quickLogin-install.sh)"

如果你使用iTerm来登录服务器,那么原始方式可以是每次敲上IP连上去,如果进一步,可以把服务器信息写到~/.ssh/config文件里,如果连密码也不想输,那么可以使用ssh登录,于是写了一个简单的脚本,功能如下:

1) s init 脚本环境初始化(第一次使用时请执行)"
2) s add Host HostName [User] [Port] 添加登陆机器的信息;a)Host为自定义的机器tag b)HostName为机器IP或者机器名 c)User和Port为机器用户名和SSH端口号 选填,默认为当前用户名和22端口"
3) s 显示可登陆列表"
4) s number|Host 使用number或者Host快速登录到机器,其中number为执行s是显示的机器序号,Host为自定义机器tag"
5) s help 显示帮助"

另外,iTerm登陆预发和线上的机器会经常断开连接,然后登陆跳板机不想每次都输域密码+令牌,可以在.ssh/config文件里面加入这些信息来解决

ServerAliveInterval 60
Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

脚本使用效果如下(生成的gif效果不好,显示的很慢,见谅)

ttyrecord

最后上述脚本如下,写的比较简陋,没有考虑异常情况,脚本不复杂,有问题可以自己看下脚本内容

#!/bin/zsh

function show()
{
	grep -e "Host [a-zA-Z1-9].*" ~/.ssh/config|awk '{print $2}'|cat -n
}

function init()
{
	softwareCheck
	if [ ! -d ~/.ssh ]; then
		echo "create ~/.ssh directory"
		mkdir ~/.ssh
		echo "done"
	else
		echo "~/.ssh directory already exist"
	fi
	if [ ! -e ~/.ssh/config ]; then
		echo "create ~/.ssh/config file"
		touch ~/.ssh/config
		echo "done"
	else
		echo "~/.ssh/config file already exist"
	fi
	if [ ! -e ~/.ssh/id_rsa.pub ]; then
		echo "create ~/.ssh/id_rsa.pub file"
		ssh-keygen -t rsa -f ~/.ssh/id_rsa -N '' > /dev/null
		echo "done"
	else
		echo "~/.ssh/id_rsa.pub file already exist"
	fi
	if [ `grep "ServerAliveInterval" ~/.ssh/config|wc -l` -eq 0 ]; then
		echo -e "ServerAliveInterval 60\nHost *\nControlMaster auto\nControlPath ~/.ssh/master-%r@%h:%p" > /tmp/sshconfig
		cat ~/.ssh/config >> /tmp/sshconfig
		mv ~/.ssh/config ~/.ssh/config.bak
		mv /tmp/sshconfig ~/.ssh/config
	fi
	echo "环境初始化成功,执行s help查看使用帮助"
}

function softwareCheck()
{
	type ssh-keygen >/dev/null 2>&1 || { echo >&2 "注意:使用此脚本,请确保机器上含有ssh-keygen和ssh-copy-id,请先安装ssh-keygen"; exit 1; }
	type ssh-copy-id >/dev/null 2>&1 || { echo >&2 "注意:使用此脚本,请确保机器上含有ssh-keygen和ssh-copy-id,请先安装ssh-copy-id(brew install ssh-copy-id)"; exit 1; }
}

function login()
{
#	gbk
	var=$(echo $1 | bc 2>/dev/null)
	if [ "$var" = "$1"  ]; then
		host=$(grep -e "Host [a-zA-Z1-9].*" ~/.ssh/config|awk '{print $2}'|sed -n "$var"p)
		ssh $host
	else
		ssh $1
	fi
#	utf8
}

function add()
{	
	if [ $# = 3 ]; then
		ssh-copy-id -i ~/.ssh/id_rsa.pub `whoami`@$3
	elif [ $# = 4 ]; then
		ssh-copy-id -i ~/.ssh/id_rsa.pub $4@$3
	elif [ $# = 5 ]; then
		ssh-copy-id -i ~/.ssh/id_rsa.pub -p $5 $4@$3
	fi
	echo "Host $2" >> ~/.ssh/config
	echo "HostName $3" >> ~/.ssh/config
	if [ $# = 3 ]; then
		echo "User `whoami`" >> ~/.ssh/config
	elif [ $# = 4 ]; then
		echo "User $4" >> ~/.ssh/config	
	elif [ $# = 5 ]; then
		echo "Port $5" >> ~/.ssh/config
	fi
	echo "" >> ~/.ssh/config
	echo "add done"
}

function help()
{
	echo "注意:使用此脚本,请确保机器上含有ssh-keygen和ssh-copy-id"
	echo "1) s init 脚本环境初始化(第一次使用时请执行)"
	echo "2) s add Host HostName [User] [Port] 添加登陆机器的信息;a)Host为自定义的机器tag b)HostName为机器IP或者机器名 c)User和Port为机器用户名和SSH端口号 选填,默认为当前用户名和22端口"
	echo "3) s 显示可登陆列表"
	echo "4) s number|Host 使用number或者Host快速登录到机器,其中number为执行s是显示的机器序号,Host为自定义机器tag"
	echo "5) s help 显示帮助"
}


if [ $# = 0 ]; then
	show
elif [ $# = 1 ]; then
	if [ $1 = "init" ]; then
		init
	elif [ $1 = "help" ]; then
		help
	else
		login $1
	fi
elif [ $# = 3 ] || [ $# = 4 ] || [ $# = 5 ]; then
	if [ $1 = "add" ]; then
		add $@
	fi
else
	help
fi

系统设置

  • 系统设置-触控板-光标与点击

    轻拍来点按 辅助点按 查找 三指拖移

滚动缩放和更多手势也学习一下吧

  • 系统设置-Mission Control-触发角

自己看一下有没有使用需求

其他

更加精确的调整音量、屏幕亮度等:fn+option+shift+F1/F2/F11/F12

使用空格可以预览几乎所有主流类型的文件

系统全局快捷键,这个建议感觉某个操作用的频度很高的时候,去查一下是否有快捷键,如果一下子上来就找一篇快捷键大全学习的话,我觉得没有必要。



blog comments powered by Disqus

Published

13 December 2014

Category

mac