🗂 目录

Mac 的设置和软件 2018岁末版(2020.3更新)

Dec 31, 2018 • 预计阅读时间 9 分钟

过几年换电脑就做一次,由于上一份工作不常用 Mac,需要安装一系列的东东,还挺折腾的,所以记录一下。

💬 MBP,iMac,iPhone,已经很普遍了,不像 10~20 年前,那是高大上的东西,现在网上各种相关资料很多。几大块,顺序不重要。工具和软件很多,把基本的先搞定。


键盘 & 鼠标

不得不吐槽,Apple 家的我极不习惯(用过至少两代了),键盘换成了 K1 Bluetooth :low profile,无线,低噪声,原生 Mac 布键(可以切换至 Windows),18 种酷炫夜光模式

更新:K1 价廉物美,就是不耐操,疫情在家一年下来,电池很快掉电,键盘不灵敏了,几个常用键需要大力敲几次,MX Keys 已经备用:

MX Keys

鼠标换成了 Logi MX Master3

Logi MX Master3

Logi MX Master3 Settings

Mac 上的好鼠标太少,此前的用过两个雷神的 DeathAdder,基本寿命就是两年,手感,响应准确度等均弱于 MX Master3

以上两个东西性价比极好,网评可以看一波,至今我超级满意 👍🏻。

✦ 题外话:电脑座椅也相当重要,值得投入。

MacOS 基本配置

System Preference

✦ Keyboard

  • 功能键 Fn:默认情况下,F1-F12 都是特殊功能,比如调节屏幕亮度。而当你需要键入 F1-F12 时需要同时按住 Fn,这对于开发人员来说是非常不方便的。将 F1-F12 改成标准功能键。

  • 键盘控制:上图里选 Shortcuts,然后 ☑️User keyboard navigation to move focus between controls

  • Caps 切换输入法

Keyboard

✦ Dock

Dock

Finder

Finder -> Preference -> Advanced
Finder Advanced

Finder -> View -> Show View Options
Finder View Options

其它

macOS 默认只允许运行通过苹果应用商店下载的软件。macOS 如果想安装第三方应用需要到 Preference/系统偏好设置 > Security & Privacy/安全性与隐私 > General/通用 中开启,Allow apps downloaded from: 🔘 Anywhere

✦ Disable System Integrity Protection (SIP)

需要重启 Mac 进入 Recovery 模式(开机时同时按下 ⌘ r)

$ csrutil disable
$ reboot

重启后查看 SIP:

$ csrutil status
System Integrity Protection status: disabled

✦ Disable Gatekeeper

macOS 如果想安装第三方未签名的应用需要在终端中执行命令行:

sudo spctl --master-disable

✦ 显示隐藏文件

希望在 Finder 里看到这个目录的内容

$ chflags nohidden ~/Library
$ defaults write com.apple.finder AppleShowAllFiles true
$ defaults write com.apple.finder _FXShowPosixPathInTitle true
$ killall Finder

✦ screenshot

默认情况下,macOS Mojave 将屏幕截图存储在 Mac 的桌面上。现在,如果您启用了 iCloud 同步,那么它会不断上传到您的帐户。这是不安全的,也很占空间。

$ defaults write com.apple.screencapture location ~/Downloads
$ defaults write com.apple.screencapture type PNG
$ killall SystemUIServer

每次截图自带阴影效果,可以关闭或开启:

关闭

$ defaults write com.apple.screencapture disable-shadow -bool true; killall SystemUIServer

开启

$ defaults write com.apple.screencapture disable-shadow -bool false; killall SystemUIServer

其它很多设置,根据自己的喜好可以网上参考一番。

✦ iTune/Music.app

Account -> Authorizations -> Authorize This Computer

MacOS 常用快捷键

众人皆知/常用:⌘ A ⌘ C ⌘ V ⌘ X ⌘ Z ⌘ F ⌘ N ⌘ Tab ⌘ Space ⌘ W ⌘ Q

系统通用

  • 强行退出: ⌥ ⌘ Esc
  • 锁屏: ⌃ ⌘ Q
  • 进入全屏模式:⌃ ⌘ F
  • Character Viewer(弹出 emojis): ⌃ ⌘ Space
  • Show all windows of the front app: ⌃ ↓
  • Show all windows: ⌃ ↑
  • Forward delete: Fn del
  • Paste without formatting: ⇧ ⌘ V
  • Screenshot: ⇧ ⌘ 4 ⇧ ⌘ 3

Finder

  • 打开 home folder: ⇧ ⌘ H
  • 打开 desktop folder: ⇧ ⌘ D
  • 打开文件、上级目录、下级目录:⌘O ⌘↑ ⌘↓
  • 回到前一个目录: ⌘ [
  • 转到下一个目录: ⌘ ]
  • 隐藏文件的开关: ⇧ ⌘ .

  MacOS 快捷键完整列表

软件

网上都有盗版或破解,需要花点时间找。Apple 的 MacOS 源自 Unix,但其自带系统软件难用,一二十年毫无大进步,和微软的 Windows 的用户体验差距不小,好在是第三方挺给力。

必备工具

  • Amphetamine:防止进入睡眠状态,定时休眠
  • App Cleaner & Unistaller:应用深度清理卸载
  • f.lux:调色
  • Hidden Bar:菜单栏图标隐藏
  • KeyCue:列出了当前活动应用所有支持的键盘快捷组合键
  • Lemon:垃圾清理,软件卸载,取代 CleanMyMac
  • Mouseless:应用快捷键查看及记忆
  • MacZip:压缩/解压缩
  • Moom:管理 Window 的大小和位置,超级好用,配上快捷键
  • Paralles Desktop:Windows 虚拟机
  • TotalFinderPath FinderDefault Folder XiRightMousse Pro:Finder 加强版工具,Finder 和 Windows Explorer 一样是操作系统里最常用和最重要的软件
  • iTerms2zshoh-my-zsh:命令行相关,见下

一些体会:

  • List of useful Quick Look plugins for developers
  • USB 外挂大硬盘必备,读写 NTFS,发现 Paragon NTFS 或者 Tuexra NTF,移动文件过程中会出现文件莫名其妙的失踪,只好采取虚机这个迂回的办法。
  • Paralles:Windows 对 MBP 的 Retina 的支持不好,DPI 不可以超过 185%,参见 Resize Search Box and Address Box Win7
  • Paralles:在 Windows 里删除 shared folder 里的文件(非挂靠在 Windows 的硬盘),不会进入 Windows 回收站
  • Moom 的快捷窗口操作:
    Moom
  • Aflred 据说是个神器,稍后有时间才研究。
  • Apple 会把 TNT 的证书删除,碰到软件打不开的问题,需要自行重新签发证书:
> codesign --force --deep --sign - /Applications/xxx.app

常用软件

  • Adobe ReaderPDF Expert
  • Beyond Compare:文件对比比较神器
  • NeatReader:各种电子书(epub,chm,等常用格式)阅读器
  • Dash:编程文档
  • Downie:各种视频下载,支持优酷、腾讯视频、bilibili、土豆、爱奇艺、网易、搜狐、微博以及国外的 Youtube 等等
  • Find My:跟踪 Apple 设备,防止遗失
  • Folx:各种下载
  • GoodNote:手写体笔记
  • magnetw:开源种子搜索神器 👍🏻
  • Movist Pro:Mac 上最好的 movie 播放器 👍🏻
  • Reeder:rss 订阅
  • Renamer:文件批量重命名
  • ScreenFlow:录屏 👍🏻
  • Sketch:矢量画图
  • Typora:所见即所得的 markdown 编辑器
  • XMind:思维导图

各种必备软件:

  • Chrome 及一堆插件
  • Windows Office for Mac
  • 各种网盘软件:百度网盘、Dropbox、Google Drive 等
  • 微信 Wechat,Whatsapp,Telegram,Twitter,Discord,Slack,Zoom,Teams 等一众社交软件

开发工具

JetBrain 的全家桶 IntelliJ Pycharm WebStorm Goland 是我十多年来开发 Java 和其它语种的主力 IDE,各种文本编辑基本已归置 VS Code 和 强大的 Notepad++(Windows only)。Windows 上经常画图的工具是Visio,慢慢转到 Excalidrawdraw.io

vi/vim 我是半吊子,非常有空才打算深入。

命令行

💡 命令行各种配置的保留,参考之前的文章:  如何保存 dotfiles

命令行的东西比较杂,主要有那么几大件:

  • homebrew:软件安装管理必备神器,相当于 Linux 上的 yum,装完后一通 brew cask install 和 brew install
  • zsh & oh-my-zsh(OMZ):OMZ 是个 zsh 的集成者
  • iTerm2:比 Mac 自带的 terminal 强,颜色(Dracula),字体(Hack),窗体,快键唤出等等,自行安装和设置。另外可以配合 tmux 多窗口管理器使用。

brew

(base) 22:57:19 in ~ via ⬢ v16.1.0 via 🅒 base
[I] ➜ brew list
==> Formulae
ansible				jansson				pcre2
asciinema			jemalloc			perl
autoconf			jq				pipenv
autojump			k9s				pkg-config
aws-session-manager-plugin	kmdr				prettyping
awscli				kubectx				protobuf
bash				kubernetes-cli			psgrep
bat				lazygit				pstree
berkeley-db			libev				pyenv
brotli				libevent			python@3.8
c-ares				libidn2				python@3.9
cheat				libmetalink			readline
cmatrix				libmpc				ripgrep
colordiff			libssh2				rtmpdump
ctop				libtermkey			ruby
curl				libunistring			ruby-build
diff-so-fancy			libuv				rustup-init
dive				libvterm			shellcheck
exa				libyaml				sqlite
fd				libzip				ssm-helpers
fzf				lua				tcl-tk
gcc				luajit-openresty		the_silver_searcher
gdbm				luv				thefuck
gettext				m4				tig
git				maven				tldr
git-delta			mpdecimal			tree
git-lfs				mpfr				unibilium
glances				msgpack				utf8proc
gmp				mtr				vim
go				ncdu				wget
go-bindata			ncurses				xz
gradle				neovim				yarn
helm				netcat				yarn-completion
highlight			nghttp2				zsh
htop				nmap				zsh-autosuggestions
httpie				node				zsh-completions
hub				oniguruma			zsh-history-substring-search
hugo				openjdk				zsh-syntax-highlighting
icu4c				openldap			zstd
infracost			openssl@1.1
isl				pcre

==> Casks
adoptopenjdk16				mounty					quicklook-json
adoptopenjdk8				provisionql				quicklookapk
dropbox					qlcolorcode				suspicious-package
font-fira-code				qlcommonmark				vagrant
font-firacode-nerd-font-mono		qlimagesize				vagrant-manager
font-hack-nerd-font			qlmarkdown				virtualbox
font-sourcecodepro-nerd-font-mono	qlstephen				webpquicklook
ipfs					qlvideo
iterm2					quicklook-csv

有许多增强型命令行工具,并善用命令行的 alias,例如:

  • ag:搜索工具,类似 ack,但更快
    ag
  • asciinema:可以录制 terminal
    asciinema
  • bat:增加语法高亮,取代 cat
    bat
  • broot:取代 tree
    broot
  • choosecutawk 功能结合
    choose
  • dust:Rust 开发,取代 du
    dust
  • exa:取代 ls
    exa
  • fd:取代 find
    fd
  • fzf:文件模糊搜索,参考 Vim universe. fzf - command line fuzzy finder
    fzf
  • hyperfine:benchmark/测速工具
    hyperfine
  • htop:取代 top
  • httpie:命令行 http,类似 wgetcurl
    httpie
  • jq:json 文件浏览、格式化、支持高亮
    jq
  • procs取代 ps,用 Rust 开发
    procs
  • psgrep
  • pstree
  • ripgrep:和 grep 类似但遵循 gitignore
    ripgrep
  • sd:取代 sed
    jq
  • shellcheck:shell script 语法检查
    shellcheck
  • thefuck
  • tig
  • tldr:取代 man
    tldr
  • xh:与 httpie 简洁界面类似,但速度更快
    xh
  • xz:压缩工具

zsh

plugins

plugins=(
    alias-finder
    ansible
    brew
    docker
    docker-compose
    extract
    git
    golang
    grunt
    gulp
    helm
    kubectl
    mvn
    node
    npm
    pip
    postgres
    python
    spring
    timer
    vagrant
)

zsh 的插件很多,自行选择 awesome-zsh-plugins

  • zsh-syntax-highlighting
    syntax-highlight

  • zsh-autosuggestions
    autosuggestions

  • zsh-history-substring-search
    substring search

命令行提示符

OMZ Theme 自带的和那个 Powerlevel10K 太眼花缭乱,这个简约 spaceship

alias

# ansible
alias a="ansible"
# brew
alias b="brew"
alias brews="brew search"
alias brewinfo="brew info"
alias brewis="brew install"
alias brewui="brew uninstall"
alias brewls="brew list --versions"
alias brewup='echo "updating brew formulas and casks ....."; brew update; brew outdated --verbose; brew upgrade; brew cleanup; brew doctor --verbose; brew outdated --cask --verbose; brew upgrade --cask; brew doctor --verbose'
alias cat="bat"
alias cdls="f_cdls(){cd "$1"; exa}; f_cdls"
alias cddl="cd ~/download; exa"
alias cdws="cd ~/workspace; exa"
# vs code
alias codegit="code ~/.gitconfig"
alias codeignore="code ~/.gitignore"
alias codessh="code ~/.ssh/config"
alias codevim="code ~/.vimrc"
alias codezsh="code ~/.zshrc"
# mac dot
alias dot='/usr/bin/git --git-dir=$HOME/.mdot/ --work-tree=$HOME'
alias dotadd='/usr/bin/git --git-dir=$HOME/.mdot/ --work-tree=$HOME add'
alias dotcmt='/usr/bin/git --git-dir=$HOME/.mdot/ --work-tree=$HOME commit -a -m'
alias dotpush='/usr/bin/git --git-dir=$HOME/.mdot/ --work-tree=$HOME push -u origin master'
alias dotstat='/usr/bin/git --git-dir=$HOME/.mdot/ --work-tree=$HOME status'
alias df="df -ahP | column -t"
alias diff="colordiff"
alias du="du -shx */ | sort -h"
alias e="echo"
alias f="find"
alias finder="open -a Finder"
alias egrep="egrep --color=auto --exclude-dir={.bzr,CVS,.git,.hg.svn }"
alias fgrep="fgrep --color=auto --exclude-dir={.bzr,CVS,.git,.hg.svn }"
# git
alias g="git"
alias gitconfig="nocorrect git config --list"
alias gitadd="git add ."
alias gitbra="git branch"
alias gitcob="git checkout -b"
alias gitcod="git checkout develop"
alias gitcom="git checkout main"
alias gitcmt="git commit -v"
alias gitdf="git diff --cached"
alias gitlog="git log --online --decorate --graph"
alias gitpull="git fetch && git merge"
alias gitpush="git push"
alias gitstat="git status"
alias gitundo="git reset 'HEAD@{1}'"
alias gemup='echo "updating ruby gems ....."; sudo gem update --system && gem cleanup'
alias h="history | grep"
alias help="tldr"
# hugo
alias hg="cd ~/Google\ Drive/web/fastzhong-hugo; hugo server -D -p 1616"
alias hgcd="cd ~/Google\ Drive/web/fastzhong-hugo"
alias hgpush="cd ~/Google\ Drive/web/fastzhong-hugo && git add . && git commit -a -m 'hugo blog' && git push && cd -"
alias i="istioctl"
# java
alias j="java"
alias javav="/usr/libexec/java_home -V 2>&1"
# kubernetes
alias k="kubectl"
alias kcfg="nocorrect kubectl config view"
alias kctx="kubectx"
alias kns="kubens"
alias kx="kubectl explain"
alias k9="kill -9"
alias k15="kill -s 15"
# ls
alias l="exa -lhF"
alias ll="exa -lahF"
alias ls="exa -ah"
alias listen='lsof -PiTCP -sTCP:LISTEN'
alias mkcd='f_mkcd(){mkdir -pv "$1"; cd "$1"}; f_mkcd'
alias mnt="mount | column -t"
# npm
alias n='npm'
alias nodev='echo "Node version: $(node -v)"; echo "NPM version: $(npm -v)"'
alias npmup='echo "updating node global modules ......"; npm cache verify; npm outdated -g; npm update -g'
alias npmcfg='nocorrect npm config ls -l'
alias npminit="npm init"
alias npmis="npm install -g"
alias npmsave="npm install --save"
alias npmdev="npm install --save-dev"
alias npmrun="npm run"
alias npmui="npm uninstall"
alias ping="prettyping --nolegend"
alias pythonv='echo "Python versions: "; echo "$(pyenv versions)"'
alias pipup='echo "updating all python packages ....."; sudo pip install -U pip && pip freeze --local | grep -v "^\-e" | cut -d = -f 1  | xargs pip install -U; rm ~/.pip/cache/*'
alias q="exit"
alias rg="ripgrep"
### ssh
alias s="ssh"
alias sshls="grep 'Host ' ~/.ssh/config | awk '{print $2}' | sort -h"
### terraform
alias tf="terraform"
alias top="htop"
alias v="vite"
alias vg="vagrant"
# vuepress
alias vp="cd ~/Google\ Drive/web/fastzhong-bits && yarn dev"
alias vpcd="cd ~/Google\ Drive/web/fastzhong-bits"
alias vppush="cd ~/Google\ Drive/web/fastzhong-bits && git add . && git commit -a -m 'bit by bit' && git push -u origin main && cd -"
alias x="open -a '/Applications/XCode.app'"
alias y="yarn"
alias zrc="source ~/.zshrc"


alias _=sudo
alias -g G="| grep"
alias -g L="| less"

iTerm2

shell 集成

iTerm2 -> Install Shell Integration

快速唤出命令行窗口

创建一个新的 Profile:

iTerm2

iTerm2

配置完,按 F12 可以随时唤出 iTerm2 悬浮窗口,再按消失。

iTerm2 技巧

  • iTerm2 允许我们快速查看剪贴板内容 只需使用 ⌘ ⇧ h 可以呼出粘贴历史
  • 在 iTerm2 中,双击选中,三击选中整行,四击智能选中(智能规则可配置)
  • 按住 ⌘ 键:可以拖拽选中的字符串
    • 点击 url:调用默认浏览器访问该网址;
    • 点击文件:调用默认程序打开文件;
    • 点击文件夹:在 finder 中打开该文件夹;
    • 同时按住 ⌥ 键,可以以矩形选中,类似于 vim 中的 ⌃ v 操作
  • 将文本内容复制到剪切板
  • 在 Finder 中打开当前目录

命令行快捷键 & 技巧

bindkey -v 加到 .zshrc 里,命令行就可以用 vi 的快捷键(bindkey -e 则是 emacs)。

  • ⌘ t 新建标签
  • ⌘ w 关闭标签
  • ⌘ 数字 ⌘ 左右方向键 切换标签
  • ⌘ enter 切换全屏
  • ⌘ f 查找
  • ⌘ d 水平分屏
  • ⌘ ⇧ d 垂直分屏
  • ⌘ ⌥ 方向键 ⌘ [⌘ ] 切换屏幕
  • ⌘ ; 查看历史命令
  • ⌘ ⇧ h 查看剪贴板历史
  • ⌃ u 清除当前行
  • ⌃ l 清屏
  • ⌃ a 到行首
  • ⌃ e 到行尾
  • ⌃ f/b 前进后退
  • ⌃ p 上一条命令
  • ⌃ r 搜索命令历史

巨量资源

工具

  上一篇:Hugo

  下一篇:我理解的架构 & 架构师(兼谈微服务)

comments powered by Disqus