Ubuntu下将vim配置为Python IDE

工欲善其事,必先利其器。
配置好了Django的环境,该把vim好好配置一下当做python的IDE来用。
在Windows下用惯了各种现成的工具,转到Linux下,一下没了头绪……好歹google出一些别人的心得,折腾来折腾去,也算是把开发环境配好了。

1. 安装完整的vim
# apt-get install vim-gnome

2. 安装ctags,ctags用于支持taglist,必需!
# apt-get install ctags

3. 安装taglist
#apt-get install vim-scripts
#apt-get install vim-addon-manager // 貌似我在安装vim-scripts的时候,已经附带安装了vim-addon-manager
# vim-addons install taglist

4. 安装pydiction(实现代码补全)
#wget http://www.pythonclub.org/_media/python-basic/pydiction-1.2.zip
#unzip pydiction-1.2.zip

// ~/.vim/after/ftplugin和~/.vim/tools/pydiction/目录默认不存在,需要自行创建
#cp pydiction-1.2/python_pydiction.vim ~/.vim/after/ftplugin
#cp pydiction-1.2/complete-dict ~/.vim/tools/pydiction/complete-dict

5. 编辑配置文件
# vim ~/.vimrc


至此,python IDE的环境就算是搭好了,来张完成图:
20120919231245
右边即为taglist窗口,按F8打开,使用Ctrl+w,再按w可以在code窗口和taglist窗口间切换。

附加:highlight

http://www.vim.org/scripts/script.php?script_id=1599Line mode 
   Highlight current line 
   Advance color for next line highlight 
   Clear last line highlight 

Pattern mode 
   Highlight word under cursor (whole word match) 
    Highlight all lines having word under cursor (whole word match) 
    Highlight word under cursor (partial word match) 
   Highlight all lines having word under cursor (partial word match) 
   Highlight last search pattern 
    Highlight all lines having last search pattern 
   Clear last pattern highlight 

   Clear all highlights 

All above commands work in both normal & insert modes. 
 also works in visual mode. (Select desired lines & hit ) 


python_fold自动折叠

http://vim.sourceforge.net/scripts/script.php?script_id=515

zo 展开 

zc 收起 
zn 全部展开 
zN 全部折叠

安装NERD_TREE 目录树(文件浏览,强烈推荐)
1.下载插件文件

http://www.vim.org/scripts/script.php?script_id=1658

解压文件到~/.vim/目录下,如果没有此目录,则要自己创建。

2.添加配置文件
在~/.vimrc 或 /etc/vim/vimrc

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" 一般设定
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
 
" 不要使用vi的键盘模式,而是vim自己的
set nocompatible
 
" history文件中需要记录的行数
set history=100
 
" 在处理未保存或只读文件的时候,弹出确认
set confirm
 
" 与windows共享剪贴板
set clipboard+=unnamed
 
" 侦测文件类型
filetype on
 
" 载入文件类型插件
filetype plugin on
 
" 为特定文件类型载入相关缩进文件
filetype indent on
 
" 保存全局变量
set viminfo+=!
 
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
 
" 语法高亮
syntax on

" 行号
set number
 
" 高亮字符,让其不受100列限制
:highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
:match OverLength '/%101v.*'
 
" 状态行颜色
highlight StatusLine guifg=SlateBlue guibg=Yellow
highlight StatusLineNC guifg=Gray guibg=White
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 文件设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 不要备份文件(根据自己需要取舍)
set nobackup
 
" 不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocal noswapfile
set bufhidden=hide
 
" 字符间插入的像素行数目
set linespace=0
 
" 增强模式中的命令行自动完成操作
set wildmenu
 
" 在状态行上显示光标所在位置的行号和列号
set ruler
set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%)" 命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=2
 
" 使回格键(backspace)正常处理indent, eol, start等
set backspace=2
 
" 允许backspace和光标键跨越行边界
set whichwrap+=,h,l
 
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
 
" 通过使用: commands命令,告诉我们文件的哪一行被改变过
set report=0
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 搜索和匹配
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 高亮显示匹配的括号
set showmatch
 
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=5
 
" 在搜索的时候忽略大小写
set ignorecase
 
" 不要高亮被搜索的句子(phrases)
set nohlsearch
 
" 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch
 
" 不要闪烁
set novisualbell
 
" 总是显示状态行
set laststatus=2
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 文本格式和排版
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 自动格式化
set formatoptions=tcrqn
 
" 继承前一行的缩进方式,特别适用于多行注释
set autoindent
 
" 为C程序提供自动缩进
set smartindent
 
" 使用C样式的缩进
"set cindent
 
" 制表符为4统一缩进为4
set tabstop=4
set softtabstop=4
set shiftwidth=4
 
" 用空格代替制表符
set expandtab
 
" 不要换行
set nowrap
 
" 高亮显示普通txt文件(需要txt.vim脚本)
au BufRead,BufNewFile * setfiletype txt
 
" 用空格键来开关折叠
set foldenable
set foldmethod=manual
nnoremap @=((foldclosed(line('.')) < 0) ? 'zc':'zo')
 
" minibufexpl插件的一般设置
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" END
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

  

文件里添加如下配置

1
2
3
4
5
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" F7 NERDTree
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
map <F7> :NERDTreeToggle<CR>
imap <F7> <ESC>:NERDTreeToggle<CR>

则在VIM里按下F7就可打开关闭目录树。具体操作命令请查看插件doc目录下的帮助文件。

Auto Complete

http://www.vim.org/scripts/script.php?script_id=1879

过程同上。

最后,来张既有NERDTree,又有taglist的图。
20120920153651

 

 

在当前用户的主目录下新建文件.vimrc(若已经有,则更新其中的内容),内容如下:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" 一般设定
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
 
" 不要使用vi的键盘模式,而是vim自己的
set nocompatible
 
" history文件中需要记录的行数
set history=100
 
" 在处理未保存或只读文件的时候,弹出确认
set confirm
 
" 与windows共享剪贴板
set clipboard+=unnamed
 
" 侦测文件类型
filetype on
 
" 载入文件类型插件
filetype plugin on
 
" 为特定文件类型载入相关缩进文件
filetype indent on
 
" 保存全局变量
set viminfo+=!
 
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
 
" 语法高亮
syntax on
 
" 高亮字符,让其不受100列限制
:highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
:match OverLength '/%101v.*'
 
" 状态行颜色
highlight StatusLine guifg=SlateBlue guibg=Yellow
highlight StatusLineNC guifg=Gray guibg=White
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 文件设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 不要备份文件(根据自己需要取舍)
set nobackup
 
" 不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocal noswapfile
set bufhidden=hide
 
" 字符间插入的像素行数目
set linespace=0
 
" 增强模式中的命令行自动完成操作
set wildmenu
 
" 在状态行上显示光标所在位置的行号和列号
set ruler
set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%)" 命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=2
 
" 使回格键(backspace)正常处理indent, eol, start等
set backspace=2
 
" 允许backspace和光标键跨越行边界
set whichwrap+=,h,l
 
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
 
" 通过使用: commands命令,告诉我们文件的哪一行被改变过
set report=0
 
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:/ ,stl:/ ,stlnc:/
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 搜索和匹配
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 高亮显示匹配的括号
set showmatch
 
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=5
 
" 在搜索的时候忽略大小写
set ignorecase
 
" 不要高亮被搜索的句子(phrases)
set nohlsearch
 
" 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch
 
" 输入:set list命令是应该显示些啥?
set listchars=tab:/|/ ,trail:.,extends:&gt;,precedes: set scrolloff=3
 
" 不要闪烁
set novisualbell
 
" 我的状态行显示的内容(包括文件类型和解码)
set statusline=%F%m%r%h%w/[POS=%l,%v][%p%%]/%{strftime(/"%d/%m/%y/ -/ %H:%M/")}
 
" 总是显示状态行
set laststatus=2
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 文本格式和排版
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 自动格式化
set formatoptions=tcrqn
 
" 继承前一行的缩进方式,特别适用于多行注释
set autoindent
 
" 为C程序提供自动缩进
set smartindent
 
" 使用C样式的缩进
"set cindent
 
" 制表符为4统一缩进为4
set tabstop=4
set softtabstop=4
set shiftwidth=4
 
" 用空格代替制表符
set expandtab
 
" 不要换行
set nowrap
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" CTags的设定
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 按照名称排序
let Tlist_Sort_Type = "name"
 
" 在右侧显示窗口
let Tlist_Use_Right_Window = 1
 
" 压缩方式
let Tlist_Compart_Format = 1
 
" 如果只有一个buffer,kill窗口也kill掉buffer
let Tlist_Exist_OnlyWindow = 1
 
" 不要关闭其他文件的tags
let Tlist_File_Fold_Auto_Close = 0
 
" 不要显示折叠树
let Tlist_Enable_Fold_Column = 0
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Autocommands
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
 
if has("autocmd")
autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number
autocmd FileType xml,html vmap '<em>o'&gt;o--&gt;
autocmd FileType java,c,cpp,cs vmap ''&gt;o*/
autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100
autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim
autocmd BufReadPost *
/ if line("'/"") &gt; 0 &amp;&amp; line("'/"") / exe " normal g`/"" |
/ endif
endif "has("autocmd")</em>
 
" F5编译和运行C程序,F6编译和运行C++程序
" 请注意,下述代码在windows下使用会报错
" 需要去掉./这两个字符
 
" C的编译和运行
map :call CompileRunGcc()
func! CompileRunGcc()
exec "w"
exec "!gcc % -o % exec "! ./% endfunc
 
" C++的编译和运行
map :call CompileRunGpp()
func! CompileRunGpp()
exec "w"
exec "!g++ % -o % exec "! ./% endfunc
 
" 能够漂亮地显示.NFO文件
set encoding=utf-8
function! SetFileEncodings(encodings)
let b:myfileencodingsbak=&amp;fileencodings
let &amp;fileencodings=a:encodings
endfunction
function! RestoreFileEncodings()
let &amp;fileencodings=b:myfileencodingsbak
unlet b:myfileencodingsbak
endfunction
 
au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single au BufReadPost *.nfo call RestoreFileEncodings()
 
" 高亮显示普通txt文件(需要txt.vim脚本)
au BufRead,BufNewFile * setfiletype txt
 
" 用空格键来开关折叠
set foldenable
set foldmethod=manual
nnoremap @=((foldclosed(line('.')) &lt; 0) ? 'zc':'zo')
 
" minibufexpl插件的一般设置
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" END
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

 

 

Vim 与 系统共享剪切板

vim require

  • vim 7.3 or greater

vim compile

  • ./configure –with-features=big –enable-cscope

step

  • add set clipboard=unnamed to /etc/vimrc or ~/.vimrc

how to use

  • use "+yy to copy current line ===> use p to paste in vim and ctrl+v to paste outside vim

  • use ctrl+c to copy from somewhere outside vim ===> use p to paste in vim

 

posted on 2013-09-25 11:40  一个石头  阅读(1306)  评论(0)    收藏  举报