Mac OS 开发环境 Terminal 配置
---
[TOC]
### Terminal 主题选择
Mac OS 内置主题已经很不错很好看,如果不满意系统自带主题,可以自定义配置。这里推荐下面的配置文件,下载下来,直接导入就好。
[https://github.com/chriskempson/tomorrow-theme](https://github.com/chriskempson/tomorrow-theme)
### Vim 配置.vimrc
```
$ touch ~/.vimrc
```
配置内容如下:
```
syntax on " 自动语法高亮
"colorscheme molokai " 设定配色方案
"set nocompatible " 关闭 vi 兼容模式
set number " 显示行号
"set cursorline " 突出显示当前行
set ruler " 打开状态栏标尺
set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4
set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格
set tabstop=4 " 设定 tab 长度为 4
set nobackup " 覆盖文件时不备份
set autochdir " 自动切换当前目录为当前文件所在的目录
set nocompatible " be iMproved, required
filetype off " required
" 以下内容配置 vim 中粘帖代码重复缩进问题
if &term =~ "xterm.*"
let &t_ti = &t_ti . "\e[?2004h"
let &t_te = "\e[?2004l" . &t_te
function XTermPasteBegin(ret)
set pastetoggle=<Esc>[201~
set paste
return a:ret
endfunction
map <expr> <Esc>[200~ XTermPasteBegin("i")
imap <expr> <Esc>[200~ XTermPasteBegin("")
cmap <Esc>[200~ <nop>
cmap <Esc>[201~ <nop>
endif
```
### Tmux 神器
Tmux 安装
```
brew install tmux
```
Tmux 配置
```
$ vim ~/.tmux.conf
# Sets prefix globally
# Reload tmux.conf
bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded"
# improve colors
set-option -g default-terminal "screen-256color"
# Set prompt behavior like emacs
set-option -g status-keys "emacs"
# window status
setw -g window-status-format " #F#I:#W#F "
setw -g window-status-current-format " #F#I:#W#F "
setw -g window-status-format "#[fg=magenta]#[bg=black] #I #[bg=cyan]#[fg=colour8] #W "
setw -g window-status-current-format "#[bg=brightmagenta]#[fg=colour8] #I #[fg=colour8]#[bg=colour14] #W "
setw -g window-status-current-bg colour0
setw -g window-status-current-fg colour11
setw -g window-status-current-attr dim
setw -g window-status-bg green
setw -g window-status-fg black
setw -g window-status-attr reverse
# panal theme
set -g pane-border-bg colour0
set -g pane-border-fg colour236
set -g pane-active-border-bg colour0
set -g pane-active-border-fg colour55
# Show session name in the status left, empty status right
set -g status-position bottom
set -g status-bg colour0
set -g status-fg colour137
set -g status-attr dim
set -g status-left-length 50
set -g status-left '#[fg=magenta]#[fg=colour233,bg=colour245,bold] %H:%M:%S #[default]'
set -g status-right-length 50
set -g status-right '#[fg=colour233,bg=colour241,bold] %d/%m/%Y'
setw -g window-status-current-fg colour81
setw -g window-status-current-bg colour56
setw -g window-status-current-attr bold
setw -g window-status-current-format ' #I#[fg=colour250]:#[fg=colour255]#W#[fg=colour50]#F '
setw -g window-status-fg colour138
setw -g window-status-bg colour235
setw -g window-status-attr none
setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F '
setw -g window-status-bell-attr bold
setw -g window-status-bell-fg colour255
setw -g window-status-bell-bg colour1
# More intuitive panes split and remember current path
bind-key - split-window -v -c '#{pane_current_path}'
bind-key \ split-window -h -c '#{pane_current_path}'
# Smart pane switching with awareness of vim splits
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?x?)(diff)?$"'
bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
bind -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
# Resize panes using shift key
bind -n S-Left resize-pane -L 2
bind -n S-Right resize-pane -R 2
bind -n S-Down resize-pane -D 1
bind -n S-Up resize-pane -U 1
# Remember current patch when creating new window
bind c new-window -c '#{pane_current_path}'
# Set base-index to 1 (useful for switching between windows)
set-option -g base-index 1
set-option -g renumber-windows on
# Set break-pane and detach (-d) while keeping focus on current window
bind-key b break-pane -d
# Easily go to tmux choose-tree to navigate between sessions
bind-key C-j choose-tree
# enable mouse option
set-option -g mouse on
# open copy with vi mode
setw -g mode-keys vi
# buffer缓存复制到Mac系统粘贴板
bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy"
# Mac系统粘贴板内容复制到会话
bind C-v run "reattach-to-user-namespace pbpaste | tmux load-buffer - \; paste-buffer -d"
# 绑定y键为复制选中文本到Mac系统粘贴板
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'reattach-to-user-namespace pbcopy'
# 鼠标拖动选中文本,并复制到Mac系统粘贴板
bind-key -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe-and-cancel "pbcopy"
```
### Tmux 操作
下面所有的prefix均代表CTRL+b
Session相关操作
| 操作 | 快捷键 |
| ----------------- | -------- |
| 查看/切换session | prefix s |
| 离开Session | prefix d |
| 重命名当前Session | prefix $ |
Window相关操作
| 操作 | 快捷键 |
| ------------------ | ------------- |
| 新建窗口 | prefix c |
| 切换到上一个活动的窗口 | prefix space |
| 关闭一个窗口 | prefix & |
| 使用窗口号切 | prefix 窗口号 |
Pane相关操作
| 操作 | 快捷键 |
| ------------------ | --------- |
| 切换到下一个窗格 | prefix o |
| 查看所有窗格的编号 | prefix q |
| 垂直拆分出一个新窗格 | prefix “ |
| 水平拆分出一个新窗格 | prefix % |
| 暂时把一个窗体放到最大 | prefix z |
有疑问加站长微信联系(非本文作者))