Mac 开发神器 —— Vim

Vim 编辑器

Posted by ZYT on November 26, 2018

本篇文章旨在在 mac 平台基于 vim 配置一个 IDE.

使用的工具

  • Vim
  • tmux
  • iTerm2 + Oh My Zsh

iTerm2 + Oh My Zsh

对于 iTerm2 + Oh My Zsh 可参考这篇文章

Vim

Install

$ brew install vim

# restart shell
$ exec -l $SHELL

查看安装的 vim 信息

$ vim --version
VIM - Vi IMproved 8.1 (2018 May 18, compiled Nov 24 2018 19:13:03)
macOS version
包含补丁: 1-500
编译者 Homebrew
巨型版本 无图形界面。  可使用(+)与不可使用(-)的功能:
+acl               +extra_search      +mouse_netterm     +tag_old_static
+arabic            +farsi             +mouse_sgr         -tag_any_white
+autocmd           +file_in_path      -mouse_sysmouse    -tcl
+autochdir         +find_in_path      +mouse_urxvt       +termguicolors
-autoservername    +float             +mouse_xterm       +terminal
-balloon_eval      +folding           +multi_byte        +terminfo
+balloon_eval_term -footer            +multi_lang        +termresponse
-browse            +fork()            -mzscheme          +textobjects
++builtin_terms    +gettext           +netbeans_intg     +timers
+byte_offset       -hangul_input      +num64             +title
+channel           +iconv             +packages          -toolbar
+cindent           +insert_expand     +path_extra        +user_commands
-clientserver      +job               +perl              +vartabs
+clipboard         +jumplist          +persistent_undo   +vertsplit
+cmdline_compl     +keymap            +postscript        +virtualedit
+cmdline_hist      +lambda            +printer           +visual
+cmdline_info      +langmap           +profile           +visualextra
+comments          +libcall           -python            +viminfo
+conceal           +linebreak         +python3           +vreplace
+cryptv            +lispindent        +quickfix          +wildignore
+cscope            +listcmds          +reltime           +wildmenu
+cursorbind        +localmap          +rightleft         +windows
+cursorshape       +lua               +ruby              +writebackup
+dialog_con        +menu              +scrollbind        -X11
+diff              +mksession         +signs             -xfontset
+digraphs          +modify_fname      +smartindent       -xim
-dnd               +mouse             +startuptime       -xpm
-ebcdic            -mouseshape        +statusline        -xsmp
+emacs_tags        +mouse_dec         -sun_workshop      -xterm_clipboard
+eval              -mouse_gpm         +syntax            -xterm_save
+ex_extra          -mouse_jsbterm     +tag_binary
     系统 vimrc 文件: "$VIM/vimrc"
     用户 vimrc 文件: "$HOME/.vimrc"
 第二用户 vimrc 文件: "~/.vim/vimrc"
      用户 exrc 文件: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
         $VIM 预设值: "/usr/local/share/vim"
编译方式: clang -c -I. -Iproto -DHAVE_CONFIG_H   -DMACOS_X -DMACOS_X_DARWIN  -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
链接方式: clang   -L. -fstack-protector -L/usr/local/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib  -L/usr/local/lib -o vim        -lncurses -liconv -lintl -framework AppKit  -L/usr/local/opt/lua/lib -llua5.3 -mmacosx-version-min=10.13 -fstack-protector-strong -L/usr/local/lib  -L/usr/local/Cellar/perl/5.28.0/lib/perl5/5.28.0/darwin-thread-multi-2level/CORE -lperl -lm -lutil -lc  -L/usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin -lpython3.7m -framework CoreFoundation  -lruby.2.5.3 -lobjc

安装插件

vim 插件管理工具

vim-plug

$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

安装各种插件

本文主要针对 PythonGo所以安装的插件主要与这两种语言相关。

  1. python-mode ——> python 开发,补全代码 Ctrl+Space 或者 F6 ( 自定义 )
  2. vim-airline
  3. vim-airline-themes
  4. vim-fugitive ——> git
  5. nerdtree ——> 项目目录结构,打开目录结构 Ctrl+n
  6. ctrlp ——> 搜索文件 ( 只需要记住一个命令 Ctrl+p )
  7. nerdcommenter ——> 注释 ( 只需要记住一个命令 ,ci )
  8. dash.vim ——> 光标指向想要查询的关键词,在命令行输入 :Dash,回车即可

具体配置信息

set tabstop=4
set nu
set showmatch
set cursorline
set ruler
set autoindent
set backspace=2
set hlsearch
syntax enable
let mapleader = ","

" 插件管理
call plug#begin('~/.vim/plugged')
Plug 'python-mode/python-mode', { 'branch': 'develop' }
Plug '/usr/local/opt/fzf'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'tpope/vim-fugitive'
Plug 'scrooloose/nerdtree'
Plug 'kien/ctrlp.vim'
Plug 'scrooloose/nerdcommenter'
Plug 'rizzatti/dash.vim'
call plug#end()

"插件设置
" ===================================================
" Python-mode settings
" ===================================================
let g:pymode_python = 'python3'
let g:pymode = 1
let g:pymode_warnings = 1
let g:pymode_paths = []
let g:pymode_trim_whitespaces = 1
let g:pymode_options = 1
let g:pymode_options_max_line_length = 79
let g:pymode_options_colorcolumn = 1
let g:pymode_quickfix_minheight = 3
let g:pymode_quickfix_maxheight = 6
let g:pymode_indent = 1

" Breakpoints
let g:pymode_breakpoint = 1
let g:pymode_breakpoint_bind = '<leader>b'
let g:pymode_breakpoint_cmd = ''

" Code checking
let g:pymode_lint = 1
let g:pymode_lint_on_write = 1
let g:pymode_lint_unmodified = 0
let g:pymode_lint_on_fly = 0
let g:pymode_lint_message = 1
let g:pymode_lint_checkers = ['pyflakes', 'pep8', 'mccabe']

" Rope support
let g:pymode_rope = 1
let g:pymode_rope_completion = 1
let g:pymode_rope_complete_on_dot = 1
let g:pymode_rope_completion_bind = '<C-Space>'

" Syntax
let g:pymode_syntax = 1
let g:pymode_syntax_slow_sync = 1
let g:pymode_syntax_all = 1

" ===================================================
" NERDTree setting
" ===================================================
let NERDTreeIgnore=['\.pyc$', '\.pyo$', '__pycache__$']
autocmd VimEnter * if !argc() | NERDTree | endif  " Load NERDTree only if vim is run without arguments
nmap <C-n> :NERDTreeToggle<cr>

vim-plug 进行安装

# 首先打开 vim
:PlugInstall

NERDTree快捷键

ctrl+w  光标自动在左右侧窗口切换
ctrl+h  光标自动在左侧窗口
ctrl+l  光标自动在右侧窗口

o       打开关闭文件或者目录
p       到上层目录
P       到根目录
K       到第一个节点
J       到最后一个节点
u       打开上层目录

安装 gocode 需要注意:

# 需要 `go get gocode`
# 由于过程中需要 `git` 访问 google 的网站,所以不仅需要进行系统代理配置,也需要进行 git 代理配置
# 系统代理配置
export http://proxy.example.com:port

# git 代理配置
git config --global http.proxy http://proxy.example.com:port

主题位置:

/.oh-my-zsh/themes

vim 主题

目前的效果图:

vimPlug

tmux

Install

brew install tmux

配置文件

tmux 的配置很复杂,所以我直接借用了别人的配置文件 .tmux

具体的命令可以查看 tmuxcheatsheet

最终效果图:

vimTmux

快捷的搭建方式

# 首先安装好 Vim、 tmux 和 zsh
git clone https://github.com/zyt312074545/develop-config
cp develop-config/.vimrc ~/.vimrc
cp develop-config/.tmux.conf ~/.tmux.conf

# 注意 vim-plug 和 gocode 的安装就可以和我的配置一样