• Vim as a Python IDE


    参考视频:http://v.youku.com/v_show/id_XNDY4NTM4NzY0.html

    好的,在我们默认的centos6的操作系统中使用的python2,我们一般会再去安装一个python3。我的环境就是python 和python3都有,python -V就是python2.6的版本。

    我们需要下载vim进行重新编译安装,我们可以从官网下载源码包。这里就是我下载的vim包:

    在编译安装之前,我们还需要安装python-devel的包,这个yum install python-devel就行了。 还有安装git。

    执行rpm -ql python-devel会看到devel生成了一个配置文件目录:

     准备完成之后了,我们如果原来有装vim的话,可以将其卸载,  好的,我们开始编译安装vim:

    1、cd /vim74b/src

    2、./configure --enable-pythoninterp --enable-python3interp  --with-python-config-dir=/usr/lib64/python2.6/config/ --with-features=huge --prefix=$HOME/opt/vim  

    执行过程中,我们可以看到这么一段:

     另一台机器:

    3、make $$ make install

    然后就是将vim加入PATH。这个大家应该都会。

    然后执行 vim --version ,可以看到vim 的一些信息:

    现在开始配置 .vimrc文件,vim ~/.vimrc , 这里我们也可以一步一步的参考视频里的操作做,但是要非常认真的去看,这个文件可以参考下面模板,:

    set guifont=courier_new:h18
    set cursorline cul
    set encoding=utf-8
    colorscheme darkblue
    nmap gO O<ESC>j
    nmap g<C-O> o<ESC>k
    " source $MYVIMRC reloads the saved $MYVIMRC
    nmap <Leader>s :source $MYVIMRC
    " opens $MYVIMRC for editing, or use :tabedit $MYVIMRC
    nmap <Leader>v :e $MYVIMRC
    " <Leader> is  by default, so those commands can be invoked by doing v and s
    
    " Sample .vimrc file by Martin Brochhaus
    " Presented at PyCon APAC 2012
    
    " Installed Plug-Ins:
    " Pathogen
    " vim powerline
    " nerdtree
    " jedi-vim
    " ctrlp
    
    " Automatic reloading of .vimrc
    autocmd! bufwritepost .vimrc source %
    
    
    " Better copy & paste
    " When you want to paste large blocks of code into vim, press F2 before you
    " paste. At the bottom you should see ``-- INSERT (paste) --``.
    
    set pastetoggle=<F2>
    set clipboard=unnamed
    
    
    " Mouse and backspace
    set mouse=a  " on OSX press ALT and click
    set bs=2     " make backspace behave like normal again
    
    
    " Rebind <Leader> key
    " I like to have it here becuase it is easier to reach than the default and
    " it is next to ``m`` and ``n`` which I use for navigating between tabs.
    let mapleader = ","
    
    
    " Bind nohl
    " Removes highlight of your last search
    " ``<C>`` stands for ``CTRL`` and therefore ``<C-n>`` stands for ``CTRL+n``
    "noremap <C-n> :nohl<CR>
    "vnoremap <C-n> :nohl<CR>
    "inoremap <C-n> :nohl<CR>
    
    
    " Quicksave command
    ""noremap <C-Z> :update<CR>
    ""vnoremap <C-Z> <C-C>:update<CR>
    ""inoremap <C-Z> <C-O>:update<CR>
    
    
    " Quick quit command
    noremap <Leader>e :quit<CR>  " Quit current window
    noremap <Leader>E :qa!<CR>   " Quit all windows
    
    
    " bind Ctrl+<movement> keys to move around the windows, instead of using Ctrl+w + <movement>
    " Every unnecessary keystroke that can be saved is good for your health :)
    map <c-j> <c-w>j
    map <c-k> <c-w>k
    map <c-l> <c-w>l
    map <c-h> <c-w>h
    
    
    " easier moving between tabs
    map <Leader>n <esc>:tabprevious<CR>
    map <Leader>m <esc>:tabnext<CR>
    
    
    " map sort function to a key
    vnoremap <Leader>s :sort<CR>
    
    
    " easier moving of code blocks
    " Try to go into visual mode (v), thenselect several lines of code here and
    " then press ``>`` several times.
    vnoremap < <gv  " better indentation
    vnoremap > >gv  " better indentation
    
    
    " Show whitespace
    " MUST be inserted BEFORE the colorscheme command
    autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red
    au InsertLeave * match ExtraWhitespace /s+$/
    
    
    " Color scheme
    " mkdir -p ~/.vim/colors && cd ~/.vim/colors
    " wget -O wombat256mod.vim http://www.vim.org/scripts/download_script.php?src_id=13400
    set t_Co=256
    color wombat256mod
    
    
    " Enable syntax highlighting
    " You need to reload this file for the change to apply
    filetype off
    filetype plugin indent on
    syntax on
    
    
    " Showing line numbers and length
    set number  " show line numbers
    set tw=79   " width of document (used by gd)
    set nowrap  " don't automatically wrap on load
    set fo-=t   " don't automatically wrap text when typing
    set colorcolumn=80
    highlight ColorColumn ctermbg=233
    
    
    " easier formatting of paragraphs
    vmap Q gq
    nmap Q gqap
    
    
    " Useful settings
    set history=700
    set undolevels=700
    
    
    " Real programmers don't use TABs but spaces
    set tabstop=4
    set softtabstop=4
    set shiftwidth=4
    set shiftround
    set expandtab
    
    
    " Make search case insensitive
    set hlsearch
    set incsearch
    set ignorecase
    set smartcase
    
    
    " Disable stupid backup and swap files - they trigger too many events
    " for file system watchers
    set nobackup
    set nowritebackup
    set noswapfile
    
    
    " Setup Pathogen to manage your plugins
    " mkdir -p ~/.vim/autoload ~/.vim/bundle
    " curl -so ~/.vim/autoload/pathogen.vim https://raw.github.com/tpope/vim-pathogen/HEAD/autoload/pathogen.vim
    "Now you can install any plugin into a .vim/bundle/plugin-name/ folder
    call pathogen#infect()
    
    
    " ============================================================================
    " Python IDE Setup
    " ============================================================================
    
    
    " Settings for vim-powerline
    " cd ~/.vim/bundle
    " git clone git://github.com/Lokaltog/vim-powerline.git
    set laststatus=2
    
    
    " Settings for ctrlp
    " cd ~/.vim/bundle
    " git clone https://github.com/kien/ctrlp.vim.git
    let g:ctrlp_max_height = 30
    set wildignore+=*.pyc
    set wildignore+=*_build/*
    set wildignore+=*/coverage/*
    
    
    " Settings for python-mode
    " Note: I'm no longer using this. Leave this commented out
    " and uncomment the part about jedi-vim instead
    " cd ~/.vim/bundle
    " git clone https://github.com/klen/python-mode
    ""map <Leader>g :call RopeGotoDefinition()<CR>
    ""let ropevim_enable_shortcuts = 1
    ""let ropevim_enable_shortcutsg:pymode_rope_goto_def_newwin = "vnew"
    ""let g:pymode_rope_extended_complete = 1
    ""let g:pymode_breakpoint = 0
    ""let g:pymode_syntax = 1
    ""let g:pymode_syntax_builtin_objs = 0
    ""let g:pymode_syntax_builtin_funcs = 0
    ""map <Leader>b Oimport ipdb; ipdb.set_trace() # BREAKPOINT<C-c>
    
    " Settings for jedi-vim
    " " cd ~/vimfiles/bundle
    " " git clone git://github.com/davidhalter/jedi-vim.git
    let g:jedi#usages_command = "<leader>z"
    let g:jedi#popup_on_dot = 1
    let g:jedi#popup_select_first = 0
    let g:jedi#show_call_signatures = 1
    let g:jedi#force_py_version = 2
    call jedi#configure_call_signatures()
    map <Leader>b Oimport ipdb; ipdb.set_trace() # BREAKPOINT<C-c>
    
    " Better navigating through omnicomplete option list
    " See http://stackoverflow.com/questions/2170023/how-to-map-keys-for-popup-menu-in-vim
     set completeopt=longest,menuone
     function! OmniPopup(action)
         if pumvisible()
             if a:action == 'j'
                 return "<C-N>"
             elseif a:action == 'k'
                 return "<C-P>"
             endif
         endif
         return a:action
     endfunction
    
    "" inoremap <silent><C-j> <C-R>=OmniPopup('j')<CR>
    "" inoremap <silent><C-k> <C-R>=OmniPopup('k')<CR>
    
    
    " Python folding
    " mkdir -p ~/.vim/ftplugin
    " wget -O ~/.vim/ftplugin/python_editing.vim http://www.vim.org/scripts/download_script.php?src_id=5492
     set nofoldenable
    
    "" nerdtree
    " " cd ~/vimfiles/bundle
    ""git clone https://github.com/scrooloose/nerdtree.git
    map <C-n> :NERDTreeToggle<CR>
    let g:NERDTreeDirArrows=1
    let NERDTreeWinPos ="left"
    let NERDTreeIgnore = ['.pyc$']
    let g:NERDTreeDirArrowExpandable = '▸'
    let g:NERDTreeDirArrowCollapsible = '▾'
    ""let NERDTreeShowBookmarks=1
    " NERDTress File highlighting
    function! NERDTreeHighlightFile(extension, fg, bg, guifg, guibg)
     exec 'autocmd filetype nerdtree highlight ' . a:extension .' ctermbg='. a:bg .' ctermfg='. a:fg .' guibg='. a:guibg .' guifg='. a:guifg
     exec 'autocmd filetype nerdtree syn match ' . a:extension .' #^s+.*'. a:extension .'$#'
    endfunction
    
    call NERDTreeHighlightFile('jade', 'green', 'none', 'green', '#151515')
    call NERDTreeHighlightFile('ini', 'yellow', 'none', 'yellow', '#151515')
    call NERDTreeHighlightFile('md', 'blue', 'none', '#3366FF', '#151515')
    call NERDTreeHighlightFile('yml', 'yellow', 'none', 'yellow', '#151515')
    call NERDTreeHighlightFile('config', 'yellow', 'none', 'yellow', '#151515')
    call NERDTreeHighlightFile('conf', 'yellow', 'none', 'yellow', '#151515')
    call NERDTreeHighlightFile('json', 'yellow', 'none', 'yellow', '#151515')
    call NERDTreeHighlightFile('html', 'yellow', 'none', 'yellow', '#151515')
    call NERDTreeHighlightFile('styl', 'cyan', 'none', 'cyan', '#151515')
    call NERDTreeHighlightFile('css', 'cyan', 'none', 'cyan', '#151515')
    call NERDTreeHighlightFile('coffee', 'Red', 'none', 'red', '#151515')
    call NERDTreeHighlightFile('js', 'Red', 'none', '#ffa500', '#151515')
    call NERDTreeHighlightFile('php', 'Magenta', 'none', '#ff00ff', '#151515')
    

      

    使用了模板前,还需要下载颜色包文件。

    mkdir -p ~/.vim/colors

    cd ~/.vim/colors/

    wget -O wombat256mod.vim http://www.vim.org/scripts/download_script.php?src_id=13400

    再下载:

    mkdir -p ~/.vim/autoload ~/.vim/bundle

    curl -so ~/.vim/autoload/pathogen.vim https://raw.github.com/tpope/vim-pathogen/HEAD/autoload/pathogen.vim

    再下载:

    " cd ~/.vim/bundle
    " git clone git://github.com/Lokaltog/vim-powerline.git

    再下载:

    " cd ~/.vim/bundle
    " git clone https://github.com/kien/ctrlp.vim.git

    再下载:

    " cd ~/.vim/bundle
    " git clone git://github.com/davidhalter/jedi-vim.git

    再下载:

    " mkdir -p ~/.vim/ftplugin
    " wget -O ~/.vim/ftplugin/python_editing.vim http://www.vim.org/scripts/download_script.php?src_id=5492

    参考:https://github.com/davidhalter/jedi-vim/

    可能还需要pip2 install jedi 和pip3 install jedi

  • 相关阅读:
    Github基础(一)
    python3中编码和解码
    sql面试题(一)
    sql查询(三)--having子句求众数、中位数
    sql查询
    numpy中ndarray数据结构简介
    qt信号和槽
    logtag查看log
    AT45DB161D 概述
    C中的auto、static、register、extern、const和volitate
  • 原文地址:https://www.cnblogs.com/owasp/p/5755207.html
Copyright © 2020-2023  润新知