安装配置MacVim全记录

因为在学习Python过程中感觉缺了一个可以用的编辑器,所以准备为我的Mac配置好一个MacVim用来写Python的东西.

这篇文章会记录整个过程,为以后备忘。

参考文章:基于MacVim打造Python IDE

0. 全文目录

  1. 安装MacVim
  2. 初步配置:创建.Vimrc文件,完成普通设置
  3. 进阶配置:下载,安装插件

1. 安装MACVIM

  1. 在这个地址下载压缩包
  2. 将下载压缩包解压,将MacVim.app拷贝到Applications目录,同时使用如下命令
    //source_dir为压缩包解压出来的目录,在运行需要输入root密码
    sudo cp source_dir/mvim /usr/local/bin
    即拷贝mvim的shell程序到/usr/local/bin目录下
  3. 此刻在终端中运行mvim命令,应该能打开MacVim了

2. 初步配置:创建.VIMRC文件,完成普通设置

直接附上我的初步的.vimrc文件

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 文件说明
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 自定义的Vim设置
" 最后修改时间:2014/09/20i
" 作者:Hat_Cloud
" 邮箱: jijianfeng529@gmail.com
" 博客: www.chendeai.com



""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 一般设定 
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 设定默认解码 
set fenc=utf-8 
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936

"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限 
set nocompatible

" 显示中文帮助
if version >= 603
    set helplang=cn
    set encoding=utf-8
endif

" 语法高亮 
syntax on

" 设置配色
colorscheme Distinguished

" 设置字体
set guifont=Monaco:h12

" 设置gvim启动窗口的位置,以及大小   
winpos 300 105
set lines=30 columns=100

" 开启行号显示
set number

"下面两行在进行编写代码时,在格式对起上很有用;
"第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行;
"第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编
"写上很有用
set autoindent
set smartindent

"查询时非常方便,如要查找book单词,当输入到/b时,会自动找到第一
"个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的单词,依
"次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词
"时,别忘记回车
set incsearch

" 高亮当前行
set cursorline

" 启动的时候不显示那个援助索马里儿童的提示 
set shortmess=atI

" 我的状态行显示的内容(包括文件类型和解码) 
set statusline=%F%m%r%h%w\[POS=%l,%v][%p%%]\%{strftime(\"%d/%m/%y\ -\ %H:%M\")}

" 总是显示状态行 
set laststatus=2

" 制表符为4 
set tabstop=4

" 统一缩进为4 
set softtabstop=4 
set shiftwidth=4

" 在c,c++,python文件中用空格代替制表符
autocmd FileType c,cpp,python set shiftwidth=4 | set expandtab

" 侦测文件类型 
filetype on

" 载入文件类型插件 
filetype plugin on

" 为特定文件类型载入相关缩进文件 
filetype indent on

" 括号自动补全
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i
inoremap < <><ESC>i

" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=1

" 搜索忽略大小写
set ignorecase

" 自动保存
set autowrite

" 设置当文件被改动时自动载入
set autoread

" 在处理未保存或只读文件的时候,弹出确认
set confirm


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" C,C++,Java,Python按F5编译运行
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
    exec "w"
    if &filetype == 'c'
        exec "!gcc % -o %<"
        exec "! ./%<"
    elseif &filetype == 'cpp'
        exec "!g++ % -o %<"
        exec "! ./%<"
    elseif &filetype == 'java' 
        exec "!javac %" 
        exec "!java %<"
    elseif &filetype == 'sh'
        :!./%
    elseif &filetype == 'python'
        exec "!python %"
    endif
endfunc


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 新文件标题
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 新建.c,.h,.sh,.java文件,自动插入文件头 
autocmd BufNewFile *.py,*.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
" 定义函数SetTitle,自动插入文件头 
func SetTitle()

    " 如果文件类型为.sh文件
    if &filetype == 'sh' 
        call setline(1,
        "\#########################################################################") 
        call append(line("."), "\# File Name: ".expand("%")) 
        call append(line(".")+1, "\# Author: Hat_Cloud") 
        call append(line(".")+2, "\# mail: jijianfeng529@gmail.com") 
        call append(line(".")+3, "\# Created Time: ".strftime("%F %R")) 
        call append(line(".")+4, "\#########################################################################") 
        call append(line(".")+5, "\#!/bin/bash") 
        call append(line(".")+6, "")

    else 
        call setline(1, "/*************************************************************************") 
        call append(line("."), "    > File Name: ".expand("%")) 
        call append(line(".")+1, "    > Author: Hat_Cloud") 
        call append(line(".")+2, "    > Mail: jijianfeng529@gmail.com ") 
        call append(line(".")+3, "    > Created Time: ".strftime("%F %R")) 
        call append(line(".")+4, " ************************************************************************/") 
        call append(line(".")+5, "")
    endif
    if &filetype == 'python'
        call append(line(".")+5, "\#!/usr/bin/env python") 
        call append(line(".")+6, "\#coding: utf-8") 
        call append(line(".")+7, "")
    endif
    if &filetype == 'cpp'
        call append(line(".")+6, "#include<iostream>")
        call append(line(".")+7, "using namespace std;")
        call append(line(".")+8, "")
    endif
    if &filetype == 'c'
        call append(line(".")+6, "#include<stdio.h>")
        call append(line(".")+7, "")
    endif
    " 新建文件后,自动定位到文件末尾
    autocmd BufNewFile * normal G
endfunc


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 插件相关 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" pathogen开启插件动态加载
call pathogen#runtime_append_all_bundles()

" 设置NerdTree(侧边栏)
map <F3> :NERDTreeMirror<CR>
map <F3> :NERDTreeToggle<CR>
" 关闭文件时同时关闭文件浏览器
let NERDTreeQuitOnOpen = 1
"当打开vim且没有文件时自动打开NERDTree
"autocmd vimenter * if !argc() | NERDTree | endif
" 只剩 NERDTree时自动关闭
"autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif


" 设置Pydiction(Python自动补全插件)
let g:pydiction_location = '/Users/Jeff/.vim/bundle/pydiction/complete-dict'
let g:pydiction_menu_height = 10

" CTags & Tagslist的设定  
let Tlist_Sort_Type = "name"    " 按照名称排序  
let Tlist_Use_Right_Window = 1  " 在右侧显示窗口  
let Tlist_Compart_Format = 1    " 压缩方式  
let Tlist_Exist_OnlyWindow = 1  " 如果只有一个buffer,kill窗口也kill掉buffer  
map <F2> :TlistToggle<CR>
"let Tlist_Auto_Open=0 "默认打开Taglist 
""let Tlist_File_Fold_Auto_Close = 0  " 不要关闭其他文件的tags  
""let Tlist_Enable_Fold_Column = 0    " 不要显示折叠树  
"let Tlist_Show_One_File=1            "不同时显示多个文件的tag,只显示当前文件的
"设置tags  
"set tags=tags  
"set autochdir

3. 进阶配置:下载,安装插件

  1. 安装Pathogen,管理插件的插件

参考文章:推荐pathogen.vim,管理插件的插件

1. pathogen.vim安装在~/.vim/autoload
2. vimrc里加一句`call pathogen#runtime_append_all_bundles()`
  1. 安装NerdTree,NerdTree具体用途详细其主页。

参考文章:Vim试水之六:NerdTree插件安装

1. 安装:安装方法详见它的GitHub上的ReadMe文件。
2. 安装完以后在Vimrc中加入如下设置代码:

” 设置NerdTree
map :NERDTreeMirror
map :NERDTreeToggle
按F3即可显示或隐藏NerdTree区域了,在Vim中输入:NERDtree也可打开NerdTree区域 3. 安装Pydiction,让vim支持python代码的自动完成

具体过程请参看上面连接中的说明

  1. 安装Taglist

参考文章mac下vim + taglist + ctags

1. 下载[Ctags](http://ctags.sourceforge.net/)的最新版本源代码
2. 解压下载的好的文件
3. 进入解压的文件夹,运行如下命令

sudo ./configure && make all && sudo make install 4. 修改PATH:在~/.bashrc中添加:PATH="/usr/local/bin:$PATH"
如果想要立即生效,在终端下输入export PATH="/usr/local/bin:$PATH" 5. 下载Taglist 6. 将解压缩后整个文件夹拷入~/.vim/bundle 7. 在.vimrc中配置taglist:
” Taglist的设置
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1
map :TlistToggle
8.在vim中可以使用:Tlist,也可以使用上面映射的F2来打开taglist界面

PS: 配置中的映射键位F2可以更改成其他键位

  1. 安装indentLine,垂直对齐线插件