安装配置MacVim全记录

2014-09-20 折腾笔记

一. 安装配置MacVim全记录sda

因为在学习Python过程中感觉缺了一个可以用的编辑器,所以准备为我的Mac配置好一个MacVim用来写Python的东西.
 
这篇文章会记录整个过程,为以后备忘。
 
参考文章:基于MacVim打造Python IDE

二. 安装MacVim

  1. 在这个地址下载压缩包
  2. 将下载压缩包解压,将MacVim.app拷贝到Applications目录,同时使用如下命令
    sudo cp source_dir/mvim /usr/local/bin

    即拷贝 mvim 的 shell程序 到 /usr/local/bin 目录下, source_dir 是压缩包解压出来的目录

  3. 此刻在终端中运行 mvim 命令,应该能打开 MacVim 了

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

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

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 文件说明
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 自定义的Vim设置
" 最后修改时间:2014/09/20i
" 作者:
" 邮箱: 
" 博客: blog.hatcloud.me



""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 一般设定 
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 设定默认解码 
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 

" 设置配色
set background=dark
colorscheme solarized
" colorscheme Distinguished

" 设置字体
set guifont=Monaco:h16

" 设置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

"高亮当前行 
au WinLeave \* set nocursorline nocursorcolumn
au WinEnter \* set cursorline cursorcolumn
set cursorline cursorcolumn

" 自动保存
set autowrite

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

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

" 按'F9'切换不同的窗口
nmap <F9> <C-W>w  

" 输入模式下也能使用'F2'等快捷键
imap <F2> <ESC><F2>
imap <F3> <ESC><F3>
imap <F5> <ESC><F5>
imap <F9> <ESC><F9>
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 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, "") 
    
    elseif &filetype == 'python'
        call setline(1,        "\#!/usr/bin/env python") 
        call append(line("."), "\#coding: utf-8") 
        call append(line(".")+1, "")
        call append(line(".")+2,   "'''------------------------------------------------------------------------") 
        call append(line(".")+3,   "    > File Name: ".expand("%")) 
        call append(line(".")+4, "    > Author: Hat_Cloud") 
        call append(line(".")+5, "    > Mail: jijianfeng529@gmail.com ") 
        call append(line(".")+6, "    > Created Time: ".strftime("%F %R")) 
        call append(line(".")+7, "------------------------------------------------------------------------'''") 
        call append(line(".")+8, "")
        call append(line(".")+9, "")
    
    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 == '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(侧边栏)
let NERDChristmasTree=0
let NERDTreeWinSize=35
let NERDTreeChDirMode=2
let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']
let NERDTreeShowBookmarks=1
let NERDTreeWinPos="left"
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
set noic "不忽略大小写

" 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 

" jedi Python自动补全插件设置
" let g:jedi#popup\_on\_dot = 0 "不在按'.'后自动弹出补全菜单
let g:jedi#popup\_select\_first = 0 "不自动将第一个备选项补全的光标位置
let g:jedi#goto\_assignments\_command = "<leader>g"
let g:jedi#goto\_definitions\_command = "<leader>d"
let g:jedi#documentation\_command = "K"
let g:jedi#usages\_command = "<leader>n"
let g:jedi#completions\_command = "<D-/>" 
let g:jedi#rename\_command = "<leader>r"
let g:jedi#show\_call\_signatures = "1"

"fzf设置
"fzf项目主页:https://github.com/junegunn/fzf
set rtp+=\~/.fzf

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

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

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

  1. 将 pathogen.vim 安装在1~/.vim/autoload
  2. 在 .vimrc 里加一句call pathogen#runtime_append_all_bundles()

2. 安装NerdTree

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

  1. 安装:安装方法详见它的GitHub上的ReadMe文件
  2. 安装完以后在 .vimrc 中加入如下设置代码:
    " 映射按键
    map \<F3\> :NERDTreeMirror\<CR\>
    map \<F3\> :NERDTreeToggle\<CR\>

    按F3即可显示或隐藏 NerdTree 区域了,在Vim中输入 :NERDtree 也可打开NerdTree区域

3. 安装 Pydiction ,让vim支持python代码的自动完成

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

4. 安装Taglist

参考文章《mac下vim + taglist + ctags》

  1. 下载 Ctags 的最新版本源代码
  2. 解压下载的好的文件
  3. 进入解压的文件夹,运行如下命令 sudo ./configure && make all && sudo make install
  4. 修改PATH:在 ~/.bashrc 中添加 :PATH="/usr/local/bin:$PATH" 如果想要立即生效,在终端下输入 source ~/.bashrc
  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 \<F2\> :TlistToggle\<CR\>
  8. 在 vim 中可以使用 :Tlist ,也可以使用上面映射的 F2 来打开 taglist 界面。*PS: 配置中的映射键位F2可以更改成其他键位*

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

Comments
Write a Comment