python的vi_vim+python开发环境打造

let vim_plug_just_installed = 0

let vim_plug_path = expand('~/.vim/autoload/plug.vim')

if !filereadable(vim_plug_path)

echo "Installing Vim-plug..."

echo ""

silent !mkdir -p ~/.vim/autoload

silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

let vim_plug_just_installed = 1

endif

if vim_plug_just_installed

:execute 'source '.fnameescape(vim_plug_path)

endif

call plug#begin('~/.vim/plugged')

" Override configs by directory

Plug 'arielrossanigo/dir-configs-override.vim'

" Better file browser

Plug 'scrooloose/nerdtree'

" Code commenter

Plug 'scrooloose/nerdcommenter'

" Class/module browser

Plug 'majutsushi/tagbar'

" Code and files fuzzy finder

Plug 'ctrlpvim/ctrlp.vim'

" Extension to ctrlp, for fuzzy command finder

Plug 'fisadev/vim-ctrlp-cmdpalette'

" Zen coding

Plug 'mattn/emmet-vim'

" Git integration

Plug 'motemen/git-vim'

" Tab list panel

Plug 'kien/tabman.vim'

" Airline

Plug 'vim-airline/vim-airline'

Plug 'vim-airline/vim-airline-themes'

" Terminal Vim with 256 colors colorscheme

Plug 'fisadev/fisa-vim-colorscheme'

" Consoles as buffers

Plug 'rosenfeld/conque-term'

" Pending tasks list

Plug 'fisadev/FixedTaskList.vim'

" Surround

Plug 'tpope/vim-surround'

" Autoclose

Plug 'Townk/vim-autoclose'

" Indent text object

Plug 'michaeljsmith/vim-indent-object'

" Indentation based movements

Plug 'jeetsukumaran/vim-indentwise'

" Python autocompletion, go to definition.

Plug 'davidhalter/jedi-vim'

" Better autocompletion

Plug 'Shougo/neocomplcache.vim'

" Snippets manager (SnipMate), dependencies, and snippets repo

Plug 'MarcWeber/vim-addon-mw-utils'

Plug 'tomtom/tlib_vim'

Plug 'honza/vim-snippets'

Plug 'garbas/vim-snipmate'

" Git/mercurial/others diff icons on the side of the file lines

Plug 'mhinz/vim-signify'

" Automatically sort python imports

Plug 'fisadev/vim-isort'

" Drag visual blocks arround

Plug 'fisadev/dragvisuals.vim'

" Window chooser

Plug 't9md/vim-choosewin'

" Python and other languages code checker

Plug 'scrooloose/syntastic'

" Paint css colors with the real color

Plug 'lilydjwg/colorizer'

" Ack code search (requires ack installed in the system)

Plug 'mileszs/ack.vim'

if has('python')

" YAPF formatter for Python

Plug 'pignacio/vim-yapf-format'

endif

" Relative numbering of lines (0 is the current line)

" (disabled by default because is very intrusive and can't be easily toggled

" on/off. When the plugin is present, will always activate the relative

" numbering every time you go to normal mode. Author refuses to add a setting

" to avoid that)

" Plug 'myusuf3/numbers.vim'

" Plugins from vim-scripts repos:

" Search results counter

Plug 'IndexedSearch'

" XML/HTML tags navigation

Plug 'matchit.zip'

" Gvim colorscheme

Plug 'Wombat'

" Yank history navigation

Plug 'YankRing.vim'

" Tell vim-plug we finished declaring plugins, so it can load them

call plug#end()

" ============================================================================

" Install plugins the first time vim runs

if vim_plug_just_installed

echo "Installing Bundles, please ignore key map error messages"

:PlugInstall

endif

" ============================================================================

" Vim settings and mappings

" You can edit them as you wish

" no vi-compatible

set nocompatible

" allow plugins by file type (required for plugins!)

filetype plugin on

filetype indent on

" tabs and spaces handling

set expandtab

set tabstop=4

set softtabstop=4

set shiftwidth=4

" tab length exceptions on some file types

autocmd FileType html setlocal shiftwidth=4 tabstop=4 softtabstop=4

autocmd FileType htmldjango setlocal shiftwidth=4 tabstop=4 softtabstop=4

autocmd FileType javascript setlocal shiftwidth=4 tabstop=4 softtabstop=4

" always show status bar

set ls=2

" incremental search

set incsearch

" highlighted search results

set hlsearch

" syntax highlight on

syntax on

" show line numbers

set nu

set guioptions-=T

set guioptions-=m

set background=dark

let g:solarized_termcolors=256

colorscheme solarized

set autoindent

set smartindent

set cindent

set cinoptions=g0,:0,N-s,(0

set tabstop=4

set softtabstop=4

set shiftwidth=4

set expandtab

set smarttab

set number

set autoread

set completeopt=preview,menu

set autowrite

set magic

set noeb

set confirm

set nobackup

set noswapfile

set ignorecase

set linespace=0

set wildmenu

set backspace=2

set whichwrap+=<,>,h,l

set selection=exclusive

set selectmode=mouse,key

set report=0

set fillchars=vert:\ ,stl:\ ,stlnc:\

set showmatch

set matchtime=1

set scrolloff=3

set completeopt=longest,menu

set iskeyword+=.

" tab navigation mappings

map tn :tabn

map tp :tabp

map tm :tabm

map tt :tabnew

map ts :tab split

map :tabn

imap :tabn

map :tabp

imap :tabp

" navigate windows with meta+arrows

map l

map h

map k

map j

imap l

imap h

imap k

imap j

" old autocomplete keyboard shortcut

imap

" Comment this line to enable autocompletion preview window

" (displays documentation related to the selected completion option)

" Disabled by default because preview makes the window flicker

set completeopt-=preview

" save as sudo

ca w!! w !sudo tee "%"

" simple recursive grep

nmap ,r :Ack

nmap ,wr :Ack

" use 256 colors when possible

if (&term =~? 'mlterm\|xterm\|xterm-256\|screen-256') || has('nvim')

let &t_Co = 256

colorscheme darkblue

else

colorscheme delek

endif

" colors for gvim

if has('gui_running')

colorscheme wombat

endif

" when scrolling, keep cursor 3 lines away from screen border

set scrolloff=3

" autocompletion of files and commands behaves like shell

" (complete only the common part, list the options that match)

set wildmode=list:longest

set history=1000

" better backup, swap and undos storage

set directory=~/.vim/dirs/tmp " directory to place swap files in

set backup " make backup files

set backupdir=~/.vim/dirs/backups " where to put backup files

set undofile " persistent undos - undo after you re-open the file

set undodir=~/.vim/dirs/undos

set viminfo+=n~/.vim/dirs/viminfo

" store yankring history file there too

let g:yankring_history_dir = '~/.vim/dirs/'

" create needed directories if they don't exist

if !isdirectory(&backupdir)

call mkdir(&backupdir, "p")

endif

if !isdirectory(&directory)

call mkdir(&directory, "p")

endif

if !isdirectory(&undodir)

call mkdir(&undodir, "p")

endif

" ============================================================================

" Plugins settings and mappings

" Edit them as you wish.

" Tagbar -----------------------------

" toggle tagbar display

map :TagbarToggle

" autofocus on tagbar open

let g:tagbar_autofocus = 1

" NERDTree -----------------------------

" toggle nerdtree display

map :NERDTreeToggle

" open nerdtree with the current file selected

nmap ,t :NERDTreeFind

" don;t show these file types

let NERDTreeIgnore = ['\.pyc$', '\.pyo$']

" Tasklist ------------------------------

" show pending tasks list

map :TaskList

" CtrlP ------------------------------

" file finder mapping

let g:ctrlp_map = ',e'

" tags (symbols) in current file finder mapping

nmap ,g :CtrlPBufTag

" tags (symbols) in all files finder mapping

nmap ,G :CtrlPBufTagAll

" general code finder in all files mapping

nmap ,f :CtrlPLine

" recent files finder mapping

nmap ,m :CtrlPMRUFiles

" commands finder mapping

nmap ,c :CtrlPCmdPalette

" to be able to call CtrlP with default search text

function! CtrlPWithSearchText(search_text, ctrlp_command_end)

execute ':CtrlP' . a:ctrlp_command_end

call feedkeys(a:search_text)

endfunction

" same as previous mappings, but calling with current word as default text

nmap ,wg :call CtrlPWithSearchText(expand(''), 'BufTag')

nmap ,wG :call CtrlPWithSearchText(expand(''), 'BufTagAll')

nmap ,wf :call CtrlPWithSearchText(expand(''), 'Line')

nmap ,we :call CtrlPWithSearchText(expand(''), '')

nmap ,pe :call CtrlPWithSearchText(expand(''), '')

nmap ,wm :call CtrlPWithSearchText(expand(''), 'MRUFiles')

nmap ,wc :call CtrlPWithSearchText(expand(''), 'CmdPalette')

" don't change working directory

let g:ctrlp_working_path_mode = 0

" ignore these files and folders on file finder

let g:ctrlp_custom_ignore = {

\ 'dir': '\v[\/](\.git|\.hg|\.svn|node_modules)$',

\ 'file': '\.pyc$\|\.pyo$',

\ }

" Syntastic ------------------------------

" show list of errors and warnings on the current file

nmap e :Errors

" check also when just opened the file

let g:syntastic_check_on_open = 1

" don't put icons on the sign column (it hides the vcs status icons of signify)

let g:syntastic_enable_signs = 0

" custom icons (enable them if you use a patched font, and enable the previous

" setting)

"let g:syntastic_error_symbol = '✗'

"let g:syntastic_warning_symbol = '⚠'

"let g:syntastic_style_error_symbol = '✗'

"let g:syntastic_style_warning_symbol = '⚠'

" Jedi-vim ------------------------------

" All these mappings work only for python code:

" Go to definition

let g:jedi#goto_command = ',d'

" Find ocurrences

let g:jedi#usages_command = ',o'

" Find assignments

let g:jedi#goto_assignments_command = ',a'

" Go to definition in new tab

nmap ,D :tab split:call jedi#goto()

" NeoComplCache ------------------------------

" most of them not documented because I'm not sure how they work

" (docs aren't good, had to do a lot of trial and error to make

" it play nice)

let g:neocomplcache_enable_at_startup = 1

let g:neocomplcache_enable_ignore_case = 1

let g:neocomplcache_enable_smart_case = 1

let g:neocomplcache_enable_auto_select = 1

let g:neocomplcache_enable_fuzzy_completion = 1

let g:neocomplcache_enable_camel_case_completion = 1

let g:neocomplcache_enable_underbar_completion = 1

let g:neocomplcache_fuzzy_completion_start_length = 1

let g:neocomplcache_auto_completion_start_length = 1

let g:neocomplcache_manual_completion_start_length = 1

let g:neocomplcache_min_keyword_length = 1

let g:neocomplcache_min_syntax_length = 1

" complete with workds from any opened file

let g:neocomplcache_same_filetype_lists = {}

let g:neocomplcache_same_filetype_lists._ = '_'

" TabMan ------------------------------

" mappings to toggle display, and to focus on it

let g:tabman_toggle = 'tl'

let g:tabman_focus = 'tf'

" Autoclose ------------------------------

" Fix to let ESC work as espected with Autoclose plugin

let g:AutoClosePumvisible = {"ENTER": "\", "ESC": "\"}

" DragVisuals ------------------------------

" mappings to move blocks in 4 directions

vmap DVB_Drag('left')

vmap DVB_Drag('right')

vmap DVB_Drag('down')

vmap DVB_Drag('up')

" mapping to duplicate block

vmap D DVB_Duplicate()

" Signify ------------------------------

" this first setting decides in which order try to guess your current vcs

" UPDATE it to reflect your preferences, it will speed up opening files

let g:signify_vcs_list = [ 'git', 'hg' ]

" mappings to jump to changed blocks

nmap sn (signify-next-hunk)

nmap sp (signify-prev-hunk)

" nicer colors

highlight DiffAdd cterm=bold ctermbg=none ctermfg=119

highlight DiffDelete cterm=bold ctermbg=none ctermfg=167

highlight DiffChange cterm=bold ctermbg=none ctermfg=227

highlight SignifySignAdd cterm=bold ctermbg=237 ctermfg=119

highlight SignifySignDelete cterm=bold ctermbg=237 ctermfg=167

highlight SignifySignChange cterm=bold ctermbg=237 ctermfg=227

" Window Chooser ------------------------------

" mapping

nmap - (choosewin)

" show big letters

let g:choosewin_overlay_enable = 1

" Airline ------------------------------

let g:airline_powerline_fonts = 1

let g:airline_theme = 'luna'

let g:airline#extensions#whitespace#enabled = 0

let g:airline#extensions#tabline#enabled = 1

let g:airline#extensions#tabline#left_sep = ' '

let g:airline#extensions#tabline#left_alt_sep = '|'

if !exists('g:airline_symbols')

let g:airline_symbols = {}

endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值