因为在学习Python过程中感觉缺了一个可以用的编辑器,所以准备为我的Mac配置好一个MacVim用来写Python的东西.
这篇文章会记录整个过程,为以后备忘。
参考文章:基于MacVim打造Python IDE
mvim
命令,应该能打开MacVim了直接附上我的初步的.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
1. 将pathogen.vim安装在~/.vim/autoload里 2. 在vimrc里加一句`call pathogen#runtime_append_all_bundles()`
参考文章:Vim试水之六:NerdTree插件安装
1. 安装:安装方法详见它的GitHub上的ReadMe文件。 2. 安装完以后在Vimrc中加入如下设置代码:
” 设置NerdTree
map :NERDTreeMirror
map :NERDTreeToggle
按F3即可显示或隐藏NerdTree区域了,在Vim中输入:NERDtree
也可打开NerdTree区域
3. 安装Pydiction,让vim支持python代码的自动完成
具体过程请参看上面连接中的说明
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可以更改成其他键位