首先介绍的就是我觉得应该熟悉 Mac 内置的一些软件及配置。
开启单词选词查询
作为程序猿,肯定离不开各种快捷键。对于 Mac 内置的一些快捷键,我们还是很有必要知道的。基本的复制/粘贴就不说了,常用的还有:
空 格键: 预览
cmd +, : 设置
cmd + - /= :缩 小 / 放 大
ctrl + u : 除到行首( 与 zsh冲突 zsh 中 是 除整行 )
ctrl + k : 除到行 尾
ctrl + p / n : / 移动 一 行 或 者 前 / 后 一 个 命 令
ctrl + b / f : 光 标 前 / 后 移char
esc + b / f : 光 标 前 / 后 移word( 蛋疼 能连续work )
ctrl + a / e : 到 行首 / 行 尾
ctrl + h / d : 前 / 后 字 符
ctrl + y : 粘贴
ctrl + w : 除前 一 个 单词
esc + d : 后 一 个 单词
ctrl + _ : undo
ctrl + r : bck - i - search / reverse - i - search 输入关键字 搜 索 历史 命 令
上面的这些快捷键特别是在敲命令时还是很有用的(可能有的确实是在命令行中才生效),特别是结合 zsh 自动补全等功能。
比较 DT 的是就是 esc 一起用的时候,不能连续使用。举个例子,Terminal 中输入了 git push origin source,光标在末尾,这时按住ctrl 不放, 按一下 w 即向前删除一个单词,第一次按 w 删除 source,再按 w 删除 origin。而 esc + d 不能这样结合使用(如下 gif 连续按就不 work),esc 必须中途释放再按才能 work。不知道是不是石头使用的姿势不对,有知道的朋友,还帮忙指出一下啊。
bash自动补全
啥?你说上面快捷键 ctrl + w 等不太好按?按键特别别扭?
你需要做的就是将 caps lock 映射为 ctrl, Keyboard -> Modifier Keys修改,目前我笔记本上的 ctrl 键无效。不过,一般情况下我用我的 HHKB,这种映射方式正好符合 HHKB 的布局。其实石头是在买 HHKB 之前就修改的这个映射,所以切换自如。
另外,借助之前介绍的Karabiner,可以将一些常用的方向键(上下左右)重新映射一下, 比如我目前是 s + h/j/k/l 来表示方向,手不用太移动就能直接按方向(HHKB 本身按方向太麻烦, Mac 内置键盘有方向键还需要大幅度移动手),用起来方便多了。
Mac 内置的更多的快捷键列表可以参考 Mac 官网[1]
其他还有一些常用的软件的快捷键,可以用之前介绍的软件 cheetsheet,长按 cmd, 可弹出当前 active 的软件的快捷键。
这个从快捷键中单独列出来了,就强调下这个功能。
cmd + shift + 3 截取整个屏幕。cmd + shift + 4 部分窗口,出现十字供选取,若此时按空格键(这个技能得点赞),会选取当前应用的窗口,再 tap 即可完成截图。
上面快捷键是截图后以文件形式保存在桌面(默认是桌面,当然你也可以自己修改保存位置), 在上面快捷键基础上再同时按 ctrl 就会把图片保存在内存/剪贴板中,直接去相应窗口粘贴即可。
类似 Centos 的 yum, Ubuntu 的 apt-get,能够方便管理安装软件包。Mac 上类似的应用还有port, 我刚开始试用过 port,貌似 brew 上的源会多一些。
brew-cask 是 brew 的一个加强版,可以安装一些桌面应用,例如 Chrome 等等之类。
这里就不多介绍了,详情可以到官网查看:
**iTerm2官网[4]**有介绍功能。以下是觉得可能常用的功能。
iTerm2 hotkey
iTerm2 search
这个功能可能会常用,程序猿得经常登录到远程服务器吧,密码又记不住。可以把常用密码保存起来,需要输入密码的时候,用快捷键 Option + cmd + f 弹出密码管理器,选择一个自动输入即可。
密码管理
iTerm2 imgcat
这个墙裂推荐啊。结合 oh my zsh[5],丰富的[插件资源(zsh)](https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins-Overview “插件资源(zsh “插件资源(zsh)”)”)。
语法高亮,自动补全等特别好,在此推荐的几个插件或功能。
alias gs = 'git status'
alias gb = 'git branch -va'
alias gco = 'git checkout'
alias ga = 'git add'
alias gc = 'git commit -m'
alias gp = 'git push'
alias gfom = 'git fetch origin master'
alias gfod = 'git fetch origin develop'
alias grod = 'git rebase origin/develop'
alias grom = 'git rebase origin/master'
iTerm2 zsh plugins
更多的还是请到官网查看。
文本编辑器,也有丰富的插件支持,直接到**sublime官网[6]**看吧。这个 App,我用得也不是很多。
这里分享一个小的功能,怎么在命令行用 sublime 打开特定的文件。其实就是添加一个软链即可。(直接 open filename 会以文件默认关键的软件打开)
➜ app - in - mac git : (source) ✗ subl dungeon - game.cpp
➜ app - in - mac git : (source) ✗ which subl
/ usr / local / bin / subl
➜ app - in - mac git : (source) ✗ ls - la / usr / local / bin / subl
lrwxr - xr - x 1 tanglei admin 62 1 24 2016 / usr / local / bin / subl - > / Applications / Sublime Text.app / Contents / SharedSupport / bin / subl
介绍 Vim 的文章也很多了,这里就不详细展开了。分享下石头用的部分插件。为了让多台电脑同步我的 vim 配置/插件等,我直接放 github 了(ref vimconfigs[7]),不同电脑只需要再建一个软链到github 中的 vimrc 即可。
vim 自动补全
具体效果等配置方法可以参考下面的两篇文章,插件具体用法可阅读具体插件的 doc。
Reference
其实介绍前文 介绍 Alfred 已经提到过,这里再介绍一下,程序猿必备神器。
内置各种语言,各种环境的各种文档。该 App 还提供各种 API 供其他工具交互使用。例如 Vim(不是想象当中自动补全功能,只是能够快捷地搜索 API), Sublime 等。 (p.s 要是有人写了一个 Vim 插件,能够支持调用 dash 的 API(如果有的话) 自动补全代码, 那应该会很受欢迎的)
dash 搜索 API
插件
类 Windows 下 Fiddler 抓包应用。
相关命令 tcpdump
一些好用的命令(基本的什么ls/cd/cp/rm之类的这里就直接忽略了),我觉得作为程序猿还是应该了解,至少只当某个场景下直接用相应的命令就能解决。具体参数可以再 --help 或者 man commond 再看。
结合这些命令可能就能完成某些复杂的功能,举个例子:
如线上的web 访问日志会记录 请求时间,请求路径,参数 等等。现在需要统计当天请求路径为 A,排名前10的参数,就可以 grep 路径A | cut 取出想要的数据列 | sort | uniq 之类的。
或者比如统计 http 404 请求最多的10个路径。再比如,随机生成3个长度为8包含字母数字的字符串(偶尔会用到,比如各种生产 secret key 的时候),直接用如下命令即可
➜ _includes git:(source) ✗ cat /dev/urandom | sed 's/[^a-zA-Z0-9]//g' | head -n 3 | cut -c 1-8MaL6nEmZ00m2Ub19rsc4AOQm
石头之前写过一篇综合应用,就是用 shell 脚本来完成一些统计功能。文章在这里**"大数据"分析首批北京积分落户同学**,文中介绍了如何根据一个 json 文件如何快速统计取得户口名额最多的top10公司,获取取得户口名额的人中姓氏最多的等等。
其他的可能较少用,但一旦用,能省不少时间。网上也有一些 online 的工具,但哪有这个快准狠。