结合Vim,Tmux,iTerm和Oh-my-Zsh开发环境

我在 Vim安装 中花费了不少精力在Linux环境编译适合运行you-complete-me的vim,但是对于我们开发目标其实是非常分散精力的。我一直在尝试能够快速构建一个完善的vim开发环境,作为使用macOS作为桌面的工作者,在Mac环境下可以利用现有的工具来实现。

iTerm

作为macOS最佳终端模拟器,提供了结合 tmux多会话终端管理 以及各种便利功能,可以通过 Homebrew 快速安装:

brew install --cask iterm2

Vim

虽然macOS内置了vim,但是版本比较陈旧不适合运行很多高级功能,例如不支持you-complete-me的最新版本,所以我们也通过 Homebrew 安装:

#编译you-complete-me需要使用macvim,所以替换vim
brew install macvim
# 要安装 you-complete-vim 还需要cmake
brew install cmake

Tmux

Tmux是一个终端多路管理器,可以同时在一个单一屏幕中管理多个终端会话,常常用来替代 screen 实现中断工作环境的自动保持和恢复:

brew install tmux

Oh-my-Zsh

zsh已经是macOS推荐的内置shell,Oh-my-zsh提供了定制框架,能够极大提高工作效率:

brew install zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

组合工具

安装了 Vim,Tmux,iTerm和Oh-my-Zsh 之后,我们把这些工具组合起来使用以便发挥最大效力:

  • 安装Vundle作为插件管理器:

    git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
    
  • clone Danielshow 提供的Boxsetting:

    git clone https://github.com/Danielshow/BoxSetting
    cd BoxSetting
    
  • 复制配置文件:

    cp tmux.conf ~/.tmux.conf
    cp vimrc ~/.vimrc
    cp zshrc ~/.zshrc
    

这里 ~/.zshrc 中用户目录配置需要修改成你自己的home目录。

  • 安装npm(参考 Node.js开发环境 ) - 参考原文使用npm安装 spaceship-prompt

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
    nvm install node
    
  • 安装 spaceship-prompt

    npm install -g spaceship-prompt
    
    # 这里用户名是 huatai ,请修改成你的名字
    ZSH_CUSTOM=/Users/huatai/.oh-my-zsh
    git clone https://github.com/denysdovhan/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt"
    
    # 软连接
    ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"
    
  • 修改 ~/.zshrc 注释掉一些还没有安装的插件,确保启动终端不再报错

  • spaceship-prompt 使用了 Powerline Font ,需要安装以后才能展示非常忙美观的字符图标:

    # clone
    git clone https://github.com/powerline/fonts.git --depth=1
    # install
    cd fonts
    ./install.sh
    # clean-up a bit
    cd ..
    rm -rf fonts
    

完成安装以后,可以在 iterm2 中配置字体,例如选择对编程优化的 Fira Mono for Powerline 字体(15)

  • 打开 vim ,执行命令:

    :PluginInstall
    
  • 如果在编译安装 you-complete-me 时候有些报错则通过以下方式fix:

    # 之前使用vim发现确实编译失败,所以改为macvim
    brew install cmake macvim
    cd ~/.vim/bundle/YouCompleteMe
    ./install.py
    

我遇到报错显示我的操作系统是 10.13 但是编译目标确实10.9:

building '_watchdog_fsevents' extension
creating /Users/huatai/.vim/bundle/youcompleteme/third_party/ycmd/third_party/watchdog_deps/watchdog/build/3
...
.../watchdog_fsevents.c:191:25: warning: 'kFSEventStreamEventFlagItemCloned' is only
   available on macOS 10.13 or newer [-Wunguarded-availability-new]
...

解决的方法可能是手工安装一次 watchdog 模块:

sudo python3 -m pip install -U watchdog

完整的安装脚本

为方便再次完成上述 macOS 新系统初始化,整理为以下安装脚本:

macOS开发环境初始化脚本
 1#!/bin/env bash
 2
 3# 设置代理(可选)
 4#git config --global http.proxy http://192.168.10.106:3128
 5
 6# 安装brew
 7/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
 8
 9brew install --cask iterm2
10
11# 编译you-complete-vim需要cmake和macvim
12brew install cmake macvim
13
14# tmux提供iterm多终端增强
15brew install tmux
16
17# oh-my-zsh 增强macOS zsh
18sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
19
20# Vundle管理vim插件
21git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
22
23# clone Danielshow 提供的Boxsetting
24git clone https://github.com/Danielshow/BoxSetting
25cd BoxSetting
26# 复制配置文件
27cp tmux.conf ~/.tmux.conf
28cp vimrc ~/.vimrc
29cp zshrc ~/.zshrc
30
31# 安装nvm再安装node,使用nvm管理node版本
32curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
33nvm instal node
34
35# 这里用户名是 huatai ,请修改成你的名字
36ZSH_CUSTOM=/Users/huatai/.oh-my-zsh
37git clone https://github.com/denysdovhan/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt"
38ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"
39
40# 修改 ~/.zshrc注释掉一些还没有安装的插件,确保启动终端不再报错
41
42# 打开 ``vim`` ,执行命 :PluginInstall

参考