http://chendeai.com/?p=218
因为在学习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
参考文章:推荐pathogen.vim,管理插件的插件
call pathogen#runtime_append_all_bundles()
参考文章:Vim试水之六:NerdTree插件安装
:NERDtree
也可打开NerdTree区域具体过程请参看上面连接中的说明
参考文章mac下vim + taglist + ctags
PATH="/usr/local/bin:$PATH"
export PATH="/usr/local/bin:$PATH"
:Tlist
,也可以使用上面映射的F2
来打开taglist界面PS: 配置中的映射键位F2可以更改成其他键位
安装indentLine,垂直对齐线插件