Created
July 23, 2015 15:10
-
-
Save alexgman/29fe4bc466049d349dff to your computer and use it in GitHub Desktop.
shagou;s vimrc file. just wanted to have it because it's huge
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"--------------------------------------------------------------------------- | |
" Shougo's .vimrc | |
"--------------------------------------------------------------------------- | |
" Initialize:"{{{ | |
" | |
" Enable no Vi compatible commands. | |
set nocompatible | |
let s:is_windows = has('win16') || has('win32') || has('win64') | |
let s:is_cygwin = has('win32unix') | |
let s:is_mac = !s:is_windows && !s:is_cygwin | |
\ && (has('mac') || has('macunix') || has('gui_macvim') || | |
\ (!executable('xdg-open') && | |
\ system('uname') =~? '^darwin')) | |
" Use English interface. | |
if s:is_windows | |
" For Windows. | |
language message en | |
else | |
" For Linux. | |
language mes C | |
endif | |
" Use ',' instead of '\'. | |
" It is not mapped with respect well unless I set it before setting for plug in. | |
let mapleader = ',' | |
" Use <Leader> in global plugin. | |
let g:mapleader = ',' | |
" Use <LocalLeader> in filetype plugin. | |
let g:maplocalleader = 'm' | |
" Release keymappings for plug-in. | |
nnoremap ; <Nop> | |
xnoremap ; <Nop> | |
nnoremap m <Nop> | |
xnoremap m <Nop> | |
nnoremap , <Nop> | |
xnoremap , <Nop> | |
if s:is_windows | |
" Exchange path separator. | |
set shellslash | |
endif | |
" In Windows/Linux, take in a difference of ".vim" and "$VIM/vimfiles". | |
let $DOTVIM = expand('~/.vim') | |
" Because a value is not set in $MYGVIMRC with the console, set it. | |
if !exists($MYGVIMRC) | |
let $MYGVIMRC = expand('~/.gvimrc') | |
endif | |
" Anywhere SID. | |
function! s:SID_PREFIX() | |
return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$') | |
endfunction | |
function! s:set_default(var, val) | |
if !exists(a:var) || type({a:var}) != type(a:val) | |
let {a:var} = a:val | |
endif | |
endfunction | |
" Set augroup. | |
augroup MyAutoCmd | |
autocmd! | |
augroup END | |
if filereadable(expand('~/.secret_vimrc')) | |
execute 'source' expand('~/.secret_vimrc') | |
endif | |
if has('vim_starting') "{{{ | |
" Set runtimepath. | |
if s:is_windows | |
let &runtimepath = join([ | |
\ expand('~/.vim'), | |
\ expand('$VIM/runtime'), | |
\ expand('~/.vim/after')], ',') | |
endif | |
" Load neobundle. | |
if finddir('neobundle.vim', '.;') != '' | |
execute 'set runtimepath+=' . finddir('neobundle.vim', '.;') | |
elseif &runtimepath !~ '/neobundle.vim' | |
execute 'set runtimepath+=' . expand('~/.bundle/neobundle.vim') | |
endif | |
if findfile('vimrc_local.vim', '.;') != '' | |
" Load develop version. | |
call neobundle#local(fnamemodify( | |
\ findfile('vimrc_local.vim', '.;'), ':h'), { 'resettable' : 0 }) | |
endif | |
endif | |
"}}} | |
let g:neobundle#enable_tail_path = 1 | |
let g:neobundle#default_options = { | |
\ 'same' : { 'stay_same' : 1, 'overwrite' : 0 }, | |
\ '_' : { 'overwrite' : 0 }, | |
\ } | |
call neobundle#rc(expand('~/.bundle')) | |
" neobundle.vim"{{{ | |
NeoBundleFetch 'Shougo/neobundle.vim' | |
NeoBundleLazy 'tpope/vim-surround', '', 'same' | |
NeoBundleLazy 't9md/vim-surround_custom_mapping', '', 'same', { | |
\ 'depends' : 'vim-surround', | |
\ 'autoload' : { | |
\ 'mappings' : [ | |
\ ['n', '<Plug>Dsurround'], ['n', '<Plug>Csurround'], | |
\ ['n', '<Plug>Ysurround'], ['n', '<Plug>YSurround'] | |
\ ]}} | |
NeoBundleLazy 'basyura/TweetVim', { 'depends' : | |
\ ['basyura/twibill.vim', 'tyru/open-browser.vim'], | |
\ 'autoload' : { 'commands' : 'TweetVimHomeTimeline' }} | |
" \ ['basyura/twibill.vim', 'tyru/open-browser.vim', 'yomi322/neco-tweetvim'] } | |
" NeoBundleLazy 'c9s/perlomni.vim' | |
NeoBundleLazy 'choplin/unite-vim_hacks', '', 'same' | |
NeoBundleLazy 'liquidz/vimfiler-sendto', '', 'same' | |
NeoBundle 'Shougo/echodoc', '', 'same' | |
call neobundle#config('echodoc', { | |
\ 'lazy' : 1, | |
\ 'autoload' : { | |
\ 'insert' : 1, | |
\ }}) | |
NeoBundle 'Shougo/neocomplcache' | |
call neobundle#config('neocomplcache', { | |
\ 'lazy' : 1, | |
\ 'autoload' : { | |
\ 'insert' : 1, | |
\ }}) | |
NeoBundle 'Shougo/neosnippet' | |
call neobundle#config('neosnippet', { | |
\ 'lazy' : 1, | |
\ 'autoload' : { | |
\ 'insert' : 1, | |
\ 'filetypes' : 'snippet', | |
\ }}) | |
" NeoBundle '[email protected]:Shougo/neocomplcache-snippets-complete.git' | |
NeoBundle 'Shougo/neobundle-vim-scripts' | |
NeoBundle 'Shougo/unite.vim', | |
call neobundle#config('unite.vim',{ | |
\ 'lazy' : 1, | |
\ 'autoload' : { | |
\ 'commands' : [{ 'name' : 'Unite', | |
\ 'complete' : 'customlist,unite#complete_source'}, | |
\ 'UniteWithCursorWord', 'UniteWithInput'] | |
\ }}) | |
NeoBundle 'Shougo/unite-build' | |
NeoBundle 'Shougo/unite-ssh' | |
NeoBundleLazy 'ujihisa/vimshell-ssh', { 'autoload' : { | |
\ 'filetypes' : 'vimshell', | |
\ }} | |
NeoBundle 'Shougo/unite-sudo' | |
NeoBundleLazy 'Shougo/vim-vcs', { | |
\ 'depends' : 'thinca/vim-openbuf', | |
\ 'autoload' : {'commands' : 'Vcs'}, | |
\ } | |
NeoBundle 'Shougo/vimfiler' | |
call neobundle#config('vimfiler', { | |
\ 'lazy' : 1, | |
\ 'depends' : 'Shougo/unite.vim', | |
\ 'autoload' : { | |
\ 'commands' : [{ 'name' : 'VimFiler', | |
\ 'complete' : 'customlist,vimfiler#complete' }, | |
\ 'VimFilerExplorer', | |
\ 'Edit', 'Read', 'Source', 'Write'], | |
\ 'mappings' : ['<Plug>(vimfiler_switch)'] | |
\ } | |
\ }) | |
" NeoBundle 'Shougo/vimfiler', 'ver.1.50' | |
NeoBundle 'Shougo/vimproc', { | |
\ 'build' : { | |
\ 'windows' : 'make -f make_mingw32.mak', | |
\ 'cygwin' : 'make -f make_cygwin.mak', | |
\ 'mac' : 'make -f make_mac.mak', | |
\ 'unix' : 'make -f make_unix.mak', | |
\ }, | |
\ } | |
" NeoBundleLazy 'Shougo/vim-ft-vim_fold', '', 'same', | |
" \ { 'autoload' : { 'filetypes' : 'vim' }} | |
NeoBundle 'Shougo/vimshell' | |
call neobundle#config('vimshell', { | |
\ 'lazy' : 1, | |
\ 'autoload' : { | |
\ 'commands' : [{ 'name' : 'VimShell', | |
\ 'complete' : 'customlist,vimshell#complete'}, | |
\ 'VimShellExecute', 'VimShellInteractive', | |
\ 'VimShellTerminal', 'VimShellPop'], | |
\ 'mappings' : ['<Plug>(vimshell_switch)'] | |
\ }}) | |
NeoBundleLazy 'yomi322/vim-gitcomplete', { 'autoload' : { | |
\ 'filetype' : 'vimshell' | |
\ }} | |
NeoBundle 'Shougo/vinarise', | |
call neobundle#config('vinarise', { | |
\ 'lazy' : 1, | |
\ 'autoload' : { | |
\ 'commands' : 'Vinarise', | |
\ }}) | |
NeoBundle 'Shougo/vesting' | |
call neobundle#config('vesting', { | |
\ 'lazy' : 1, | |
\ 'autoload' : { | |
\ 'commands' : 'Unite', | |
\ }}) | |
NeoBundle 'vim-jp/vital.vim' | |
call neobundle#config('vital.vim', { | |
\ 'lazy' : 1, | |
\ 'autoload' : { | |
\ 'commands' : ['Vitalize'], | |
\ }}) | |
NeoBundle 'hrsh7th/vim-versions' | |
call neobundle#config('hrsh7th/vim-versions', { | |
\ 'lazy' : 1, | |
\ 'autoload' : { | |
\ 'commands' : 'UniteVersions'}, | |
\ }) | |
" NeoBundle 'h1mesuke/unite-outline' | |
NeoBundle 'Shougo/unite-outline', '', 'same' | |
NeoBundleLazy 'hail2u/vim-css3-syntax', '', 'same' | |
NeoBundleLazy 'kana/vim-smartchr', '', 'same', { 'autoload' : { | |
\ 'insert' : 1, | |
\ }} | |
NeoBundleLazy 'kana/vim-smartword', '', 'same', { 'autoload' : { | |
\ 'mappings' : [ | |
\ '<Plug>(smartword-w)', '<Plug>(smartword-b)', '<Plug>(smartword-ge)'] | |
\ }} | |
NeoBundleLazy 'kana/vim-smarttill', '', 'same', { 'autoload' : { | |
\ 'mappings' : [ | |
\ '<Plug>(smarttill-t)', '<Plug>(smarttill-T)'] | |
\ }} | |
NeoBundleLazy 'kana/vim-fakeclip', '', 'same', { 'autoload' : { | |
\ 'mappings' : [ | |
\ ['nv', '<Plug>(fakeclip-y)'], ['nv', '<Plug>(fakeclip-Y)'], | |
\ ['nv', '<Plug>(fakeclip-p)'], ['nv', '<Plug>(fakeclip-P)'], | |
\ ['nv', '<Plug>(fakeclip-gp)']] | |
\ }} | |
NeoBundleLazy 'kana/vim-operator-user', '', 'same' | |
NeoBundleLazy 'kana/vim-operator-replace', '', 'same', { | |
\ 'depends' : 'vim-operator-user', | |
\ 'autoload' : { | |
\ 'mappings' : [ | |
\ ['nx', '<Plug>(operator-replace)']] | |
\ }} | |
NeoBundleLazy 'kana/vim-textobj-user', '', 'same' | |
" NeoBundleLazy 'kana/vim-wwwsearch' | |
NeoBundleLazy 'kien/ctrlp.vim' | |
NeoBundleLazy 'Shougo/foldCC', '', 'same', | |
\ { 'autoload' : { 'filetypes' : 'vim' }} | |
NeoBundleLazy 'mattn/wwwrenderer-vim', '', 'same' | |
NeoBundle 'mattn/webapi-vim' | |
" NeoBundle 'basyura/webapi-vim' | |
" NeoBundle 'pocket7878/presen-vim', | |
" \ { 'depends' : 'pocket7878/curses-vim'} | |
NeoBundleLazy 'rson/vim-conque', '', 'same', { 'autoload' : { | |
\ 'commands' : 'ConqueTerm' | |
\ }} | |
NeoBundleLazy 'sjl/gundo.vim', '', 'same', { 'autoload' : { | |
\ 'commands' : 'GundoToggle' | |
\ }} | |
" NeoBundle 't9md/vim-textmanip', '', 'same' | |
" NeoBundle 't9md/vim-quickhl', '', 'same' | |
NeoBundleLazy 'thinca/vim-fontzoom', '', 'same', { | |
\ 'gui' : 1, | |
\ 'autoload' : { | |
\ 'mappings' : [ | |
\ ['n', '<Plug>(fontzoom-larger)'], | |
\ ['n', '<Plug>(fontzoom-smaller)']] | |
\ }} | |
NeoBundle 'ujihisa/unite-font', '', 'same', { | |
\ 'gui' : 1, | |
\ } | |
NeoBundleLazy 'thinca/vim-prettyprint', '', 'same', { 'autoload' : { | |
\ 'commands' : 'PP' | |
\ }} | |
NeoBundleLazy 'thinca/vim-qfreplace', '', 'same', { 'autoload' : { | |
\ 'filetypes' : ['unite', 'quickfix'], | |
\ }} | |
NeoBundleLazy 'thinca/vim-quickrun', { 'autoload' : { | |
\ 'mappings' : [ | |
\ ['nxo', '<Plug>(quickrun)']], | |
\ }} | |
NeoBundleLazy 'thinca/vim-scouter', '', 'same', { 'autoload' : { | |
\ 'commands' : 'Scouter' | |
\ }} | |
NeoBundleLazy 'thinca/vim-ref', { 'autoload' : { | |
\ 'commands' : 'Ref' | |
\ }} | |
NeoBundle 'thinca/vim-unite-history', '', 'same' | |
NeoBundleLazy 'vim-ruby/vim-ruby', { 'autoload' : { | |
\ 'mappings' : '<Plug>(ref-keyword)', | |
\ 'filetypes' : 'ruby' | |
\ }} | |
NeoBundleLazy 'tsukkee/lingr-vim', '', 'same', { 'autoload' : { | |
\ 'commands' : 'LingrLaunch' | |
\ }} | |
if has('gui_running') && !s:is_windows | |
NeoBundleDisable lingr-vim | |
endif | |
NeoBundle 'Shougo/unite-help', '', 'same' | |
NeoBundle 'tsukkee/unite-tag', '', 'same' | |
NeoBundleLazy 'tyru/caw.vim', { 'autoload' : { | |
\ 'mappings' : [ | |
\ '<Plug>(caw:prefix)', '<Plug>(caw:i:toggle)'] | |
\ }} | |
NeoBundleLazy 'tyru/eskk.vim', { 'autoload' : { | |
\ 'mappings' : [['i', '<Plug>(eskk:toggle)']], | |
\ }} | |
NeoBundleLazy 'tyru/open-browser.vim', '', 'same', { 'autoload' : { | |
\ 'mappings' : '<Plug>(open-browser-wwwsearch)', | |
\ }} | |
NeoBundleLazy 'tyru/operator-html-escape.vim', '', 'same' | |
NeoBundleLazy 'tyru/restart.vim', '', 'same', { | |
\ 'gui' : 1, | |
\ 'autoload' : { | |
\ 'commands' : 'Restart' | |
\ }} | |
" NeoBundle 'tyru/skk.vim' | |
NeoBundleLazy 'tyru/vim-altercmd', '', 'same' | |
NeoBundleLazy 'tyru/winmove.vim', '', 'same', { 'autoload' : { | |
\ 'gui' : 1, | |
\ 'mappings' : [ | |
\ ['n', '<Plug>(winmove-up)'], ['n', '<Plug>(winmove-down)'], | |
\ ['n', '<Plug>(winmove-left)'] , ['n', '<Plug>(winmove-right)']], | |
\ }} | |
NeoBundleLazy 'ujihisa/neco-ghc', { 'autoload' : { | |
\ 'filetypes' : 'haskell' | |
\ }} | |
NeoBundle 'ujihisa/neco-look', '', 'same' | |
NeoBundleLazy 'ujihisa/unite-colorscheme', '', 'same' | |
NeoBundleLazy 'ujihisa/unite-locate', '', 'same' | |
NeoBundleLazy 'ujihisa/vimshell-ssh' | |
NeoBundle 'vim-jp/vimdoc-ja.git' | |
" NeoBundleLazy 'vim-scripts/netrw.vim', '', 'same', { 'autoload' : { | |
" \ 'commands' : 'Explore', | |
" \ }} | |
" NeoBundleLazy 'Markdown', '', 'same' | |
NeoBundleLazy 'yuratomo/w3m.vim', '', 'same', { 'autoload' : { | |
\ 'commands' : 'W3m', | |
\ }} | |
NeoBundle 'pasela/unite-webcolorname', '', 'same' | |
" NeoBundle 'hrsh7th/vim-unite-vcs', '', 'same' | |
NeoBundle 'deris/vim-loadafterft', '', 'same' | |
NeoBundle 'osyo-manga/unite-quickfix', '', 'same' | |
NeoBundle 'osyo-manga/unite-filetype', '', 'same' | |
"NeoBundle 'taglist.vim', '', 'same' | |
NeoBundleLazy 'rbtnn/hexript.vim' | |
NeoBundleLazy 'tpope/vim-endwise', '', 'same' | |
NeoBundleLazy 'Rip-Rip/clang_complete', { | |
\ 'autoload' : { | |
\ 'filetypes' : ['c', 'cpp'], | |
\ }, | |
\ } | |
NeoBundleLazy 'kana/vim-tabpagecd', '', 'same' | |
NeoBundleLazy 'rhysd/accelerated-jk', { 'autoload' : { | |
\ 'mappings' : ['<Plug>(accelerated_jk_gj)', | |
\ '<Plug>(accelerated_jk_gk)'], | |
\ }} | |
" NeoBundle 'gmarik/vundle' | |
NeoBundleLazy 'davidhalter/jedi-vim', { | |
\ 'autoload' : { | |
\ 'filetypes' : ['python', 'python3'], | |
\ }, | |
\ } | |
NeoBundleLazy 'vim-jp/autofmt', '', 'same', { 'autoload' : { | |
\ 'mappings' : [['x', 'gq']], | |
\ }} | |
" From vim.org | |
NeoBundleLazy 'godlygeek/csapprox', '', 'same', { 'terminal' : 1 } | |
NeoBundleLazy 'thinca/vim-guicolorscheme', '', 'same', { 'terminal' : 1 } | |
NeoBundleLazy 'repeat.vim', '', 'same', { 'autoload' : { | |
\ 'mappings' : '.', | |
\ }} | |
NeoBundleLazy 'autodate.vim', '', 'same', { 'autoload' : { | |
\ 'filetypes' : 'vim', | |
\ }} | |
NeoBundleLazy 'matchit.zip', '', 'same', { 'autoload' : { | |
\ 'mappings' : '%', | |
\ }} | |
" NeoBundle 'perl-mauke.vim', '', 'same' | |
NeoBundleLazy 'DirDiff.vim', '', 'same', { 'autoload' : { | |
\ 'commands' : 'DirDiff' | |
\ }} | |
NeoBundleLazy 'rhysd/clever-f.vim', { 'autoload' : { | |
\ 'mappings' : 'f', | |
\ }} | |
NeoBundleLazy 'rhysd/clever-f.vim', { 'autoload' : { | |
\ 'mappings' : 'f', | |
\ }} | |
NeoBundleLazy 'jiangmiao/simple-javascript-indenter', { 'autoload' : { | |
\ 'filetypes' : 'javascript', | |
\ }} | |
NeoBundleLazy 'jelera/vim-javascript-syntax', { 'autoload' : { | |
\ 'filetypes' : 'javascript', | |
\ }} | |
NeoBundleLazy 'bkad/CamelCaseMotion', { 'autoload' : { | |
\ 'mappings' : ['<Plug>CamelCaseMotion_w', | |
\ '<Plug>CamelCaseMotion_b'], | |
\ }} | |
NeoBundleLazy 'HybridText', { 'autoload' : { | |
\ 'filetypes' : 'hybrid', | |
\ }} | |
NeoBundleLocal ~/.vim/bundle | |
" NeoBundle 'taichouchou2/alpaca_complete.git' | |
" NeoBundle 'https://raw.github.com/m2ym/rsense/master/etc/rsense.vim', | |
" \ {'script_type' : 'plugin'} | |
" NeoBundle 'taichouchou2/vim-rsense' | |
" Test. | |
" NeoBundleLazy 'tpope/vim-fugitive' | |
" NeoBundleLazy 'masudaK/vim-python' | |
" NeoBundleLazy 'klen/python-mode' | |
"}}} | |
" Disable menu.vim | |
if has('gui_running') | |
set guioptions=Mc | |
endif | |
" Disable GetLatestVimPlugin.vim | |
let g:loaded_getscriptPlugin = 1 | |
" Disable netrw.vim | |
let g:loaded_netrwPlugin = 1 | |
filetype plugin indent on | |
" Enable syntax color. | |
syntax enable | |
" Installation check. | |
NeoBundleCheck | |
"}}} | |
"--------------------------------------------------------------------------- | |
" Encoding:"{{{ | |
" | |
" The automatic recognition of the character code. | |
" Setting of the encoding to use for a save and reading. | |
" Make it normal in UTF-8 in Unix. | |
set encoding=utf-8 | |
" Setting of terminal encoding."{{{ | |
if !has('gui_running') | |
if &term == 'win32' || &term == 'win64' | |
" Setting when use the non-GUI Japanese console. | |
" Garbled unless set this. | |
set termencoding=cp932 | |
" Japanese input changes itself unless set this. | |
" Be careful because the automatic recognition of the character code is not possible! | |
set encoding=japan | |
else | |
if $ENV_ACCESS ==# 'linux' | |
set termencoding=euc-jp | |
elseif $ENV_ACCESS ==# 'colinux' | |
set termencoding=utf-8 | |
else " fallback | |
set termencoding= " same as 'encoding' | |
endif | |
endif | |
elseif s:is_windows | |
" For system. | |
set termencoding=cp932 | |
endif | |
"}}} | |
" The automatic recognition of the character code."{{{ | |
if !exists('did_encoding_settings') && has('iconv') | |
let s:enc_euc = 'euc-jp' | |
let s:enc_jis = 'iso-2022-jp' | |
" Does iconv support JIS X 0213? | |
if iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb" | |
let s:enc_euc = 'euc-jisx0213,euc-jp' | |
let s:enc_jis = 'iso-2022-jp-3' | |
endif | |
" Build encodings. | |
let &fileencodings = 'ucs-bom' | |
if &encoding !=# 'utf-8' | |
let &fileencodings = &fileencodings . ',' . 'ucs-2le' | |
let &fileencodings = &fileencodings . ',' . 'ucs-2' | |
endif | |
let &fileencodings = &fileencodings . ',' . s:enc_jis | |
if &encoding ==# 'utf-8' | |
let &fileencodings = &fileencodings . ',' . s:enc_euc | |
let &fileencodings = &fileencodings . ',' . 'cp932' | |
elseif &encoding =~# '^euc-\%(jp\|jisx0213\)$' | |
let &encoding = s:enc_euc | |
let &fileencodings = &fileencodings . ',' . 'utf-8' | |
let &fileencodings = &fileencodings . ',' . 'cp932' | |
else " cp932 | |
let &fileencodings = &fileencodings . ',' . 'utf-8' | |
let &fileencodings = &fileencodings . ',' . s:enc_euc | |
endif | |
let &fileencodings = &fileencodings . ',' . &encoding | |
unlet s:enc_euc | |
unlet s:enc_jis | |
let did_encoding_settings = 1 | |
endif | |
"}}} | |
if has('kaoriya') | |
" For Kaoriya only. | |
"set fileencodings=guess | |
endif | |
" When do not include Japanese, use encoding for fileencoding. | |
function! AU_ReCheck_FENC() "{{{ | |
if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0 | |
let &fileencoding=&encoding | |
endif | |
endfunction"}}} | |
autocmd MyAutoCmd BufReadPost * call AU_ReCheck_FENC() | |
" Default fileformat. | |
set fileformat=unix | |
" Automatic recognition of a new line cord. | |
set fileformats=unix,dos,mac | |
" A fullwidth character is displayed in vim properly. | |
set ambiwidth=double | |
" Command group opening with a specific character code again."{{{ | |
" In particular effective when I am garbled in a terminal. | |
" Open in UTF-8 again. | |
command! -bang -bar -complete=file -nargs=? Utf8 edit<bang> ++enc=utf-8 <args> | |
" Open in iso-2022-jp again. | |
command! -bang -bar -complete=file -nargs=? Iso2022jp edit<bang> ++enc=iso-2022-jp <args> | |
" Open in Shift_JIS again. | |
command! -bang -bar -complete=file -nargs=? Cp932 edit<bang> ++enc=cp932 <args> | |
" Open in EUC-jp again. | |
command! -bang -bar -complete=file -nargs=? Euc edit<bang> ++enc=euc-jp <args> | |
" Open in UTF-16 again. | |
command! -bang -bar -complete=file -nargs=? Utf16 edit<bang> ++enc=ucs-2le <args> | |
" Open in UTF-16BE again. | |
command! -bang -bar -complete=file -nargs=? Utf16be edit<bang> ++enc=ucs-2 <args> | |
" Aliases. | |
command! -bang -bar -complete=file -nargs=? Jis Iso2022jp<bang> <args> | |
command! -bang -bar -complete=file -nargs=? Sjis Cp932<bang> <args> | |
command! -bang -bar -complete=file -nargs=? Unicode Utf16<bang> <args> | |
"}}} | |
" Tried to make a file note version."{{{ | |
" Don't save it because dangerous. | |
command! WUtf8 setlocal fenc=utf-8 | |
command! WIso2022jp setlocal fenc=iso-2022-jp | |
command! WCp932 setlocal fenc=cp932 | |
command! WEuc setlocal fenc=euc-jp | |
command! WUtf16 setlocal fenc=ucs-2le | |
command! WUtf16be setlocal fenc=ucs-2 | |
" Aliases. | |
command! WJis WIso2022jp | |
command! WSjis WCp932 | |
command! WUnicode WUtf16 | |
"}}} | |
" Appoint a line feed."{{{ | |
command! -bang -complete=file -nargs=? WUnix write<bang> ++fileformat=unix <args> | edit <args> | |
command! -bang -complete=file -nargs=? WDos write<bang> ++fileformat=dos <args> | edit <args> | |
command! -bang -complete=file -nargs=? WMac write<bang> ++fileformat=mac <args> | edit <args> | |
"}}} | |
if has('multi_byte_ime') | |
set iminsert=0 imsearch=0 | |
endif | |
"}}} | |
"--------------------------------------------------------------------------- | |
" Search:"{{{ | |
" | |
" Ignore the case of normal letters. | |
set ignorecase | |
" If the search pattern contains upper case characters, override ignorecase option. | |
set smartcase | |
" Enable incremental search. | |
set incsearch | |
" Don't highlight search result. | |
set nohlsearch | |
" Searches wrap around the end of the file. | |
set wrapscan | |
"}}} | |
"--------------------------------------------------------------------------- | |
" Edit:"{{{ | |
" | |
" Smart insert tab setting. | |
set smarttab | |
" Exchange tab to spaces. | |
set expandtab | |
" Substitute <Tab> with blanks. | |
"set tabstop=8 | |
" Spaces instead <Tab>. | |
"set softtabstop=4 | |
" Autoindent width. | |
"set shiftwidth=4 | |
" Round indent by shiftwidth. | |
set shiftround | |
" Enable modeline. | |
set modeline | |
" Use clipboard register. | |
if has('unnamedplus') | |
set clipboard& clipboard+=unnamedplus | |
else | |
set clipboard& clipboard+=unnamed | |
endif | |
" Disable auto wrap. | |
autocmd MyAutoCmd FileType * | |
\ if &l:textwidth != 70 && &filetype !=# 'help' | | |
\ setlocal textwidth=0 | | |
\ endif | |
" Enable backspace delete indent and newline. | |
set backspace=indent,eol,start | |
" Highlight parenthesis. | |
set showmatch | |
" Highlight when CursorMoved. | |
set cpoptions-=m | |
set matchtime=3 | |
" Highlight <>. | |
set matchpairs+=<:> | |
" Display another buffer when current buffer isn't saved. | |
set hidden | |
" Auto reload if file is changed. | |
"set autoread | |
" Ignore case on insert completion. | |
set infercase | |
" Search home directory path on cd. | |
" But can't complete. | |
" set cdpath+=~ | |
" Enable folding. | |
set foldenable | |
" set foldmethod=expr | |
set foldmethod=marker | |
" Show folding level. | |
set foldcolumn=3 | |
set foldcolumn=3 | |
set fillchars=vert:\| | |
set commentstring=%s | |
if exists('*FoldCCtext') | |
" Use FoldCCtext(). | |
set foldtext=FoldCCtext() | |
autocmd MyAutoCmd FileType * | |
\ if &filetype !=# 'help' | |
\ | setlocal foldtext=FoldCCtext() | |
\ | endif | |
endif | |
" Use vimgrep. | |
"set grepprg=internal | |
" Use grep. | |
set grepprg=grep\ -nH | |
" Exclude = from isfilename. | |
set isfname-== | |
" Reload .vimrc and .gvimrc automatically. | |
if !has('gui_running') && !s:is_windows | |
autocmd MyAutoCmd BufWritePost .vimrc nested source $MYVIMRC | | |
\ call s:set_syntax_of_user_defined_commands() | | |
\ echo "source $MYVIMRC" | |
else | |
autocmd MyAutoCmd BufWritePost .vimrc source $MYVIMRC | | |
\ call s:set_syntax_of_user_defined_commands() | | |
\ if has('gui_running') | source $MYGVIMRC | echo "source $MYVIMRC" | |
autocmd MyAutoCmd BufWritePost .gvimrc | |
\ if has('gui_running') | source $MYGVIMRC | echo "source $MYGVIMRC" | |
endif | |
" Keymapping timeout. | |
set timeout timeoutlen=3000 ttimeoutlen=100 | |
" CursorHold time. | |
set updatetime=1000 | |
" Set swap directory. | |
set directory-=. | |
if v:version >= 703 | |
" Set undofile. | |
set undofile | |
let &undodir=&directory | |
endif | |
" Set tags file. | |
" Don't search tags file in current directory. And search upward. | |
set tags& tags-=tags tags+=./tags; | |
if v:version < 7.3 || (v:version == 7.3 && !has('patch336')) | |
" Vim's bug. | |
set notagbsearch | |
endif | |
" Enable virtualedit in visual block mode. | |
set virtualedit=block | |
" Set keyword help. | |
set keywordprg=:help | |
" Check timestamp more for 'autoread'. | |
autocmd MyAutoCmd WinEnter * checktime | |
" Disable paste. | |
autocmd MyAutoCmd InsertLeave * | |
\ if &paste | set nopaste | echo 'nopaste' | endif | |
" Use autofmt. | |
set formatexpr=autofmt#japanese#formatexpr() | |
"}}} | |
"--------------------------------------------------------------------------- | |
" View:"{{{ | |
" | |
" Show line number. | |
"set number | |
" Show <TAB> and <CR> | |
set list | |
if s:is_windows | |
set listchars=tab:>-,trail:-,extends:>,precedes:< | |
else | |
set listchars=tab:▸\ ,trail:-,extends:»,precedes:«,nbsp:% | |
endif | |
" Do not wrap long line. | |
set nowrap | |
" Wrap conditions. | |
set whichwrap+=h,l,<,>,[,],b,s,~ | |
" Always display statusline. | |
set laststatus=2 | |
" Height of command line. | |
set cmdheight=2 | |
" Show command on statusline. | |
set showcmd | |
" Show title. | |
set title | |
" Title length. | |
set titlelen=95 | |
" Title string. | |
let &titlestring="%{(&filetype ==# 'lingr-messages' && lingr#unread_count() > 0 )?" | |
\ . " '('.lingr#unread_count().')' : ''}%{expand('%:p:.:~')}%(%m%r%w%)" | |
\ . " \ %<\(%{SnipMid(fnamemodify(&filetype ==# 'vimfiler' ?" | |
\ . "substitute(b:vimfiler.current_dir, '.\\zs/$', '', '') : getcwd(), ':~')," | |
\ . "80-len(expand('%:p:.')),'...')}\) - VIM" | |
" Set tabline. | |
function! s:my_tabline() "{{{ | |
let s = '' | |
for i in range(1, tabpagenr('$')) | |
let bufnrs = tabpagebuflist(i) | |
let bufnr = bufnrs[tabpagewinnr(i) - 1] " first window, first appears | |
let no = (i <= 10 ? i : '#') " display 0-origin tabpagenr. | |
let mod = getbufvar(bufnr, '&modified') ? '!' : ' ' | |
" Use gettabvar(). | |
let title = exists('*gettabvar') && gettabvar(i, 'title') != '' ? | |
\ gettabvar(i, 'title') : fnamemodify(bufname(bufnr), ':t') | |
let title = '[' . title . ']' | |
let s .= '%'.i.'T' | |
let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#' | |
let s .= no . ':' . title | |
let s .= mod | |
let s .= '%#TabLineFill# ' | |
endfor | |
let s .= '%#TabLineFill#%T%=%#TabLine#' | |
return s | |
endfunction "}}} | |
let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()' | |
set showtabline=2 | |
" Set statusline. | |
let &statusline="%{winnr('$')>1?'['.winnr().'/'.winnr('$')" | |
\ . ".(winnr('#')==winnr()?'#':'').']':''}\ " | |
\ . "%{expand('%:p:.')}" | |
\ . "%{".s:SID_PREFIX()."get_twitter_len()}" | |
\ . "\ %=%m%y%{'['.(&fenc!=''?&fenc:&enc).','.&ff.']'}" | |
\ . "%{printf(' %5d/%d',line('.'),line('$'))}" | |
function! s:get_twitter_len() | |
return &filetype !=# 'int-earthquake' || mode() !=# 'i' ? '' : | |
\ '(rest:' . (140 - len(substitute(vimshell#get_cur_text(),'.','x','g'))) . ')' | |
endfunction | |
" Turn down a long line appointed in 'breakat' | |
set linebreak | |
set showbreak=>\ | |
set breakat=\ \ ;:,!? | |
" Do not display greetings message at the time of Vim start. | |
set shortmess=aTI | |
" Don't create backup. | |
set nowritebackup | |
set nobackup | |
set backupdir-=. | |
" Disable bell. | |
set t_vb= | |
set novisualbell | |
" Display candidate supplement. | |
set nowildmenu | |
set wildmode=list:longest,full | |
" Increase history amount. | |
set history=200 | |
" Display all the information of the tag by the supplement of the Insert mode. | |
set showfulltag | |
" Can supplement a tag in a command-line. | |
set wildoptions=tagfile | |
" Enable spell check. | |
set spelllang=en_us | |
" Completion setting. | |
set completeopt=menuone | |
" Don't complete from other buffer. | |
set complete=. | |
"set complete=.,w,b,i,t | |
" Set popup menu max height. | |
set pumheight=20 | |
" Report changes. | |
set report=0 | |
" Maintain a current line at the time of movement as much as possible. | |
set nostartofline | |
" Splitting a window will put the new window below the current one. | |
set splitbelow | |
" Splitting a window will put the new window right the current one. | |
set splitright | |
" Set minimal width for current window. | |
set winwidth=30 | |
" Set minimal height for current window. | |
" set winheight=20 | |
set winheight=1 | |
" Set maximam maximam command line window. | |
set cmdwinheight=5 | |
" No equal window size. | |
set noequalalways | |
" Adjust window size of preview and help. | |
set previewheight=10 | |
set helpheight=12 | |
" Don't redraw while macro executing. | |
set lazyredraw | |
" When a line is long, do not omit it in @. | |
set display=lastline | |
" Display an invisible letter with hex format. | |
"set display+=uhex | |
" Disable automatically insert comment. | |
autocmd MyAutoCmd FileType * setl formatoptions-=ro | setl formatoptions+=mM | |
let g:execcmd_after_ftplugin = { | |
\ '_': [ | |
\ 'setlocal fo-=t fo-=c fo-=r fo-=o', | |
\ ], | |
\ 'c': [ | |
\ 'setlocal fo-=t fo-=c fo-=r fo-=o', | |
\ ], | |
\ 'perl': [ | |
\ 'setlocal fo-=t fo-=c fo-=r fo-=o', | |
\ ], | |
\} | |
let g:execcmd_after_indent = { | |
\ '_': [ | |
\ 'setlocal fo-=t fo-=c fo-=r fo-=o', | |
\ ], | |
\ 'php': [ | |
\ 'setlocal fo-=t fo-=c fo-=r fo-=o', | |
\ ], | |
\} | |
if v:version >= 703 | |
" For conceal. | |
set conceallevel=2 concealcursor=iv | |
set colorcolumn=85 | |
endif | |
" View setting. | |
set viewdir=~/.vim/view viewoptions-=options viewoptions+=slash,unix | |
"}}} | |
"--------------------------------------------------------------------------- | |
" Syntax:"{{{ | |
" | |
" Enable smart indent. | |
set autoindent smartindent | |
augroup MyAutoCmd | |
" Enable gauche syntax. | |
autocmd FileType scheme nested let b:is_gauche=1 | setlocal lispwords=define | | |
\let b:current_syntax='' | syntax enable | |
" Auto reload VimScript. | |
autocmd BufWritePost,FileWritePost *.vim if &autoread | |
\ | source <afile> | echo 'source ' . bufname('%') | endif | |
" Manage long Rakefile easily | |
autocmd BufNewfile,BufRead Rakefile foldmethod=syntax foldnestmax=1 | |
" Close help and git window by pressing q. | |
autocmd FileType help,git-status,git-log,qf, | |
\gitcommit,quickrun,qfreplace,ref, | |
\simpletap-summary,vcs-commit,vcs-status,vim-hacks | |
\ nnoremap <buffer><silent> q :<C-u>call <sid>smart_close()<CR> | |
autocmd FileType * if (&readonly || !&modifiable) && !hasmapto('q', 'n') | |
\ | nnoremap <buffer><silent> q :<C-u>call <sid>smart_close()<CR>| endif | |
autocmd FileType gitcommit setlocal nofoldenable | |
" Close help and git window by pressing q. | |
autocmd FileType ref nnoremap <buffer> <TAB> <C-w>w | |
" Enable omni completion. | |
" autocmd FileType ada setlocal omnifunc=adacomplete#Complete | |
" autocmd FileType c setlocal omnifunc=ccomplete#Complete | |
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS | |
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags | |
"autocmd FileType java setlocal omnifunc=javacomplete#Complete | |
" autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS | |
" autocmd FileType php setlocal omnifunc=phpcomplete#CompletePHP | |
" autocmd FileType python setlocal omnifunc=pythoncomplete#Complete | |
"autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete | |
"autocmd FileType sql setlocal omnifunc=sqlcomplete#Complete | |
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags | |
autocmd FileType python setlocal foldmethod=indent | |
" Update filetype. | |
autocmd BufWritePost * | |
\ if &l:filetype ==# '' || exists('b:ftdetect') | |
\ | unlet! b:ftdetect | |
\ | filetype detect | |
\ | endif | |
autocmd BufEnter,BufNewFile * if bufname('%') != '' && &filetype == '' | |
\ | setlocal ft=hybrid | endif | |
augroup END | |
" Java | |
let g:java_highlight_functions = 'style' | |
let g:java_highlight_all = 1 | |
let g:java_allow_cpp_keywords = 1 | |
" PHP | |
let g:php_folding = 1 | |
" Python | |
let g:python_highlight_all = 1 | |
" XML | |
let g:xml_syntax_folding = 1 | |
" Vim | |
let g:vimsyntax_noerror = 1 | |
"let g:vim_indent_cont = 0 | |
" Bash | |
let g:is_bash = 1 | |
" Java | |
let g:java_highlight_all=1 | |
let g:java_highlight_debug=1 | |
let g:java_allow_cpp_keywords=1 | |
let g:java_space_errors=1 | |
let g:java_highlight_functions=1 | |
" JavaScript | |
let g:SimpleJsIndenter_BriefMode = 1 | |
let g:SimpleJsIndenter_CaseIndentLevel = -1 | |
" Syntax highlight for user commands. | |
augroup syntax-highlight-extends | |
autocmd! | |
autocmd Syntax vim | |
\ call s:set_syntax_of_user_defined_commands() | |
augroup END | |
function! s:set_syntax_of_user_defined_commands() | |
redir => _ | |
silent! command | |
redir END | |
let command_names = join(map(split(_, '\n')[1:], | |
\ "matchstr(v:val, '[!\"b]*\\s\\+\\zs\\u\\w*\\ze')")) | |
if command_names == '' | return | endif | |
execute 'syntax keyword vimCommand ' . command_names | |
endfunction | |
"}}} | |
"--------------------------------------------------------------------------- | |
" Plugin:"{{{ | |
" | |
" neocomplcache.vim"{{{ | |
" Use neocomplcache. | |
let g:neocomplcache_enable_at_startup = 1 | |
let bundle = neobundle#get('neocomplcache') | |
function! bundle.hooks.on_source(bundle) | |
" Use smartcase. | |
let g:neocomplcache_enable_smart_case = 0 | |
" Use camel case completion. | |
let g:neocomplcache_enable_camel_case_completion = 0 | |
" Use underbar completion. | |
let g:neocomplcache_enable_underbar_completion = 0 | |
" Use fuzzy completion. | |
let g:neocomplcache_enable_fuzzy_completion = 1 | |
" Set minimum syntax keyword length. | |
let g:neocomplcache_min_syntax_length = 3 | |
" Set auto completion length. | |
let g:neocomplcache_auto_completion_start_length = 2 | |
" Set manual completion length. | |
let g:neocomplcache_manual_completion_start_length = 0 | |
" Set minimum keyword length. | |
let g:neocomplcache_min_keyword_length = 3 | |
" let g:neocomplcache_enable_cursor_hold_i = v:version > 703 || | |
" \ v:version == 703 && has('patch289') | |
let g:neocomplcache_enable_cursor_hold_i = 0 | |
let g:neocomplcache_cursor_hold_i_time = 300 | |
let g:neocomplcache_enable_insert_char_pre = 0 | |
let g:neocomplcache_enable_prefetch = 0 | |
let g:neocomplcache_skip_auto_completion_time = '0.6' | |
if !exists('g:neocomplcache_wildcard_characters') | |
let g:neocomplcache_wildcard_characters = {} | |
endif | |
let g:neocomplcache_wildcard_characters._ = '-' | |
" For auto select. | |
let g:neocomplcache_enable_auto_select = 1 | |
let g:neocomplcache_enable_auto_delimiter = 1 | |
"let g:neocomplcache_disable_caching_buffer_name_pattern = '[\[*]\%(unite\)[\]*]' | |
let g:neocomplcache_disable_auto_select_buffer_name_pattern = '\[Command Line\]' | |
" let g:neocomplcache_lock_buffer_name_pattern = '\.txt' | |
"let g:neocomplcache_disable_auto_complete = 0 | |
let g:neocomplcache_max_list = 100 | |
let g:neocomplcache_force_overwrite_completefunc = 1 | |
if $USER ==# 'root' | |
let g:neocomplcache_temporary_dir = '/root/.neocon' | |
endif | |
if !exists('g:neocomplcache_omni_patterns') | |
let g:neocomplcache_omni_patterns = {} | |
endif | |
if !exists('g:neocomplcache_force_omni_patterns') | |
let g:neocomplcache_force_omni_patterns = {} | |
endif | |
" For clang_complete. | |
let g:neocomplcache_force_overwrite_completefunc = 1 | |
let g:neocomplcache_force_omni_patterns.c = | |
\ '[^.[:digit:] *\t]\%(\.\|->\)' | |
let g:neocomplcache_force_omni_patterns.cpp = | |
\ '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::' | |
let g:clang_complete_auto = 0 | |
let g:clang_auto_select = 0 | |
let g:clang_use_library = 1 | |
" For jedi-vim. | |
let g:jedi#auto_initialization = 1 | |
let g:jedi#popup_on_dot = 0 | |
let g:jedi#rename_command = '<leader>R' | |
autocmd MyAutoCmd FileType python* | |
\ NeoBundleSource jedi-vim | let b:did_ftplugin = 1 | |
let g:neocomplcache_force_omni_patterns.python = '[^. \t]\.\w*' | |
" Define dictionary. | |
let g:neocomplcache_dictionary_filetype_lists = { | |
\ 'default' : '', | |
\ 'scheme' : expand('~/.gosh_completions'), | |
\ 'scala' : expand('$DOTVIM/dict/scala.dict'), | |
\ 'ruby' : expand('$DOTVIM/dict/ruby.dict'), | |
\ 'int-termtter' : expand('~/.vimshell/int-history/int-termtter'), | |
\ 'hoge' : expand('~/work/test.dic'), | |
\ } | |
let g:neocomplcache_omni_functions = { | |
\ 'ruby' : 'rubycomplete#Complete', | |
\ } | |
" Define keyword pattern. | |
if !exists('g:neocomplcache_keyword_patterns') | |
let g:neocomplcache_keyword_patterns = {} | |
endif | |
" let g:neocomplcache_keyword_patterns.default = '\h\w*' | |
let g:neocomplcache_keyword_patterns['default'] = '[0-9a-zA-Z:#_]\+' | |
let g:neocomplcache_keyword_patterns.perl = '\h\w*->\h\w*\|\h\w*::' | |
if !exists('g:neocomplcache_omni_patterns') | |
let g:neocomplcache_omni_patterns = {} | |
endif | |
" let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::' | |
" let g:neocomplcache_force_omni_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::' | |
let g:neocomplcache_omni_patterns.php = '[^. *\t]\.\w*\|\h\w*::' | |
let g:neocomplcache_omni_patterns.mail = '^\s*\w\+' | |
let g:neocomplcache_omni_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)' | |
let g:neocomplcache_caching_limit_file_size = 500000 | |
if !exists('g:neocomplcache_same_filetype_lists') | |
let g:neocomplcache_same_filetype_lists = {} | |
endif | |
"let g:neocomplcache_same_filetype_lists.perl = 'ref' | |
" let g:neocomplcache_source_look_dictionary_path = $HOME . '/words' | |
let g:neocomplcache_source_look_dictionary_path = '' | |
" Set $RSENSE_HOME path. | |
let g:neocomplcache#sources#rsense#home_directory = '/opt/rsense' | |
let g:neocomplcache_vim_completefuncs = { | |
\ 'Ref' : 'ref#complete', | |
\ 'Unite' : 'unite#complete_source', | |
\ 'VimShellExecute' : | |
\ 'vimshell#vimshell_execute_complete', | |
\ 'VimShellInteractive' : | |
\ 'vimshell#vimshell_execute_complete', | |
\ 'VimShellTerminal' : | |
\ 'vimshell#vimshell_execute_complete', | |
\ 'VimShell' : 'vimshell#complete', | |
\ 'VimFiler' : 'vimfiler#complete', | |
\ 'Vinarise' : 'vinarise#complete', | |
\} | |
if !exists('g:neocomplcache_source_completion_length') | |
let g:neocomplcache_source_completion_length = { | |
\ 'look' : 4, | |
\ } | |
endif | |
" Test."{{{ | |
"let g:neocomplcache_auto_completion_start_length = 1 | |
"let g:neocomplcache_plugin_completion_length = { | |
"\ 'snippets_complete' : 1, | |
"\ 'buffer_complete' : 2, | |
"\ 'syntax_complete' : 2, | |
"\ 'tags_complete' : 3, | |
"\ 'vim_complete' : 4, | |
"\ } | |
let g:neocomplcache_source_disable = { | |
\ 'tags_complete' : 1, | |
\} | |
"}}} | |
" mappings."{{{ | |
" <C-f>, <C-b>: page move. | |
inoremap <expr><C-f> pumvisible() ? "\<PageDown>" : "\<Right>" | |
inoremap <expr><C-b> pumvisible() ? "\<PageUp>" : "\<Left>" | |
" <C-y>: paste. | |
inoremap <expr><C-y> pumvisible() ? neocomplcache#close_popup() : "\<C-r>\"" | |
" <C-e>: close popup. | |
inoremap <expr><C-e> pumvisible() ? neocomplcache#cancel_popup() : "\<End>" | |
" <C-k>: unite completion. | |
imap <C-k> <Plug>(neocomplcache_start_unite_complete) | |
" - unite quick match. | |
" imap <expr> - pumvisible() ? | |
" \ "\<Plug>(neocomplcache_start_unite_quick_match)" : '-' | |
inoremap <expr> O &filetype == 'vim' ? "\<C-x>\<C-v>" : "\<C-x>\<C-o>" | |
" <C-h>, <BS>: close popup and delete backword char. | |
inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>" | |
inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>" | |
" <C-n>: neocomplcache. | |
inoremap <expr><C-n> pumvisible() ? "\<C-n>" : "\<C-x>\<C-u>\<C-p>\<Down>" | |
" <C-p>: keyword completion. | |
inoremap <expr><C-p> pumvisible() ? "\<C-p>" : "\<C-p>\<C-n>" | |
inoremap <expr>' pumvisible() ? neocomplcache#close_popup() : "'" | |
inoremap <expr><C-x><C-f> neocomplcache#manual_filename_complete() | |
imap <C-s> <Plug>(neocomplcache_start_unite_snippet) | |
" <CR>: close popup and save indent. | |
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR> | |
function! s:my_cr_function() | |
return neocomplcache#smart_close_popup() . "\<CR>" | |
endfunction | |
" <TAB>: completion. | |
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : | |
\ <SID>check_back_space() ? "\<TAB>" : | |
\ neocomplcache#start_manual_complete() | |
function! s:check_back_space() "{{{ | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~ '\s' | |
endfunction"}}} | |
" <S-TAB>: completion back. | |
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |
" For cursor moving in insert mode(Not recommended) | |
inoremap <expr><Left> neocomplcache#close_popup() . "\<Left>" | |
inoremap <expr><Right> neocomplcache#close_popup() . "\<Right>" | |
inoremap <expr><Up> neocomplcache#close_popup() . "\<Up>" | |
inoremap <expr><Down> neocomplcache#close_popup() . "\<Down>" | |
"}}} | |
endfunction | |
function! CompleteFiles(findstart, base) | |
if a:findstart | |
" Get cursor word. | |
let cur_text = strpart(getline('.'), 0, col('.') - 1) | |
return match(cur_text, '\f*$') | |
endif | |
let words = split(expand(a:base . '*'), '\n') | |
let list = [] | |
let cnt = 0 | |
for word in words | |
call add(list, { | |
\ 'word' : word, | |
\ 'abbr' : printf('%3d: %s', cnt, word), | |
\ 'menu' : 'file_complete' | |
\ }) | |
let cnt += 1 | |
endfor | |
return { 'words' : list, 'refresh' : 'always' } | |
endfunction | |
"}}} | |
" neosnippet.vim"{{{ | |
let bundle = neobundle#get('neosnippet') | |
function! bundle.hooks.on_source(bundle) | |
imap <silent>L <Plug>(neosnippet_jump_or_expand) | |
smap <silent>L <Plug>(neosnippet_jump_or_expand) | |
xmap <silent>L <Plug>(neosnippet_start_unite_snippet_target) | |
imap <silent>K <Plug>(neosnippet_expand_or_jump) | |
smap <silent>K <Plug>(neosnippet_expand_or_jump) | |
imap <silent>G <Plug>(neosnippet_expand) | |
imap <silent>S <Plug>(neosnippet_start_unite_snippet) | |
xmap <silent>o <Plug>(neosnippet_register_oneshot_snippet) | |
xmap <silent>U <Plug>(neosnippet_expand_target) | |
let g:neosnippet#enable_snipmate_compatibility = 1 | |
inoremap <expr><C-g> neocomplcache#undo_completion() | |
inoremap <expr><C-l> neocomplcache#complete_common_string() | |
" let g:snippets_dir = '~/.vim/snippets/,~/.vim/bundle/snipmate/snippets/' | |
endfunction | |
"}}} | |
" echodoc.vim"{{{ | |
let bundle = neobundle#get('echodoc') | |
function! bundle.hooks.on_source(bundle) | |
let g:echodoc_enable_at_startup = 1 | |
endfunction | |
"}}} | |
" vimshell.vim"{{{ | |
" Plugin key-mappings."{{{ | |
" <C-Space>: switch to vimshell. | |
nmap <C-@> <Plug>(vimshell_switch) | |
nnoremap ! q:VimShellExecute<Space> | |
nnoremap [Space]i q:VimShellInteractive<Space> | |
nnoremap [Space]t q:VimShellTerminal<Space> | |
nnoremap <silent> [Space]; <C-u>:VimShellPop<CR> | |
"}}} | |
let bundle = neobundle#get('vimshell') | |
function! bundle.hooks.on_source(bundle) | |
" let g:vimshell_user_prompt = "3\ngetcwd()" | |
let g:vimshell_user_prompt = 'fnamemodify(getcwd(), ":~")' | |
" let g:vimshell_user_prompt = 'fnamemodify(getcwd(), ":~")' | |
let g:vimshell_right_prompt = 'vcs#info("(%s)-[%b]%p", "(%s)-[%b|%a]%p")' | |
let g:vimshell_prompt = '% ' | |
"let g:vimshell_environment_term = 'xterm' | |
let g:vimshell_split_command = '' | |
let g:vimshell_enable_transient_user_prompt = 1 | |
autocmd MyAutoCmd FileType vimshell call s:vimshell_settings() | |
function! s:vimshell_settings() | |
if s:is_windows | |
" Display user name on Windows. | |
"let g:vimshell_prompt = $USERNAME."% " | |
" Use ckw. | |
let g:vimshell_use_terminal_command = 'ckw -e' | |
else | |
" Display user name on Linux. | |
"let g:vimshell_prompt = $USER."% " | |
" Use zsh history. | |
let g:vimshell_external_history_path = expand('~/.zsh-history') | |
call vimshell#set_execute_file('bmp,jpg,png,gif', 'gexe eog') | |
call vimshell#set_execute_file('mp3,m4a,ogg', 'gexe amarok') | |
let g:vimshell_execute_file_list['zip'] = 'zipinfo' | |
call vimshell#set_execute_file('tgz,gz', 'gzcat') | |
call vimshell#set_execute_file('tbz,bz2', 'bzcat') | |
" Use gnome-terminal. | |
let g:vimshell_use_terminal_command = 'gnome-terminal -e' | |
endif | |
" Initialize execute file list. | |
let g:vimshell_execute_file_list = {} | |
call vimshell#set_execute_file('txt,vim,c,h,cpp,d,xml,java', 'vim') | |
let g:vimshell_execute_file_list['rb'] = 'ruby' | |
let g:vimshell_execute_file_list['pl'] = 'perl' | |
let g:vimshell_execute_file_list['py'] = 'python' | |
call vimshell#set_execute_file('html,xhtml', 'gexe firefox') | |
inoremap <buffer><expr>' pumvisible() ? "\<C-y>" : "'" | |
imap <buffer><BS> <Plug>(vimshell_another_delete_backward_char) | |
imap <buffer><C-h> <Plug>(vimshell_another_delete_backward_char) | |
imap <buffer><C-k> <Plug>(vimshell_zsh_complete) | |
nnoremap <silent><buffer> <C-j> | |
\ <C-u>:Unite -buffer-name=files -default-action=lcd directory_mru<CR> | |
call vimshell#altercmd#define('g', 'git') | |
call vimshell#altercmd#define('i', 'iexe') | |
call vimshell#altercmd#define('t', 'texe') | |
call vimshell#set_alias('l.', 'ls -d .*') | |
call vimshell#set_alias('gvim', 'gexe gvim') | |
call vimshell#set_galias('L', 'ls -l') | |
call vimshell#set_galias('time', 'exe time -p') | |
" Auto jump. | |
call vimshell#set_alias('j', ':Unite -buffer-name=files | |
\ -default-action=lcd -input=$$args directory_mru') | |
call vimshell#hook#add('chpwd', 'my_chpwd', s:vimshell_hooks.chpwd) | |
call vimshell#hook#add('emptycmd', 'my_emptycmd', s:vimshell_hooks.emptycmd) | |
call vimshell#hook#add('preprompt', 'my_preprompt', s:vimshell_hooks.preprompt) | |
call vimshell#hook#add('preexec', 'my_preexec', s:vimshell_hooks.preexec) | |
" call vimshell#hook#set('preexec', [s:SID_PREFIX() . 'vimshell_hooks_preexec']) | |
endfunction | |
autocmd MyAutoCmd FileType int-* call s:interactive_settings() | |
function! s:interactive_settings() | |
call vimshell#hook#set('input', [s:vimshell_hooks.input]) | |
endfunction | |
autocmd MyAutoCmd FileType term-* call s:terminal_settings() | |
function! s:terminal_settings() | |
inoremap <silent><buffer><expr> <Plug>(vimshell_term_send_semicolon) | |
\ vimshell#term_mappings#send_key(';') | |
inoremap <silent><buffer><expr> j<Space> | |
\ vimshell#term_mappings#send_key('j') | |
"inoremap <silent><buffer><expr> <Up> | |
" \ vimshell#term_mappings#send_keys("\<ESC>[A") | |
" Sticky key. | |
imap <buffer><expr> ; <SID>texe_sticky_func() | |
" Escape key. | |
iunmap <buffer> <ESC><ESC> | |
imap <buffer> <ESC> <Plug>(vimshell_term_send_escape) | |
endfunction | |
function! s:texe_sticky_func() | |
let sticky_table = { | |
\',' : '<', '.' : '>', '/' : '?', | |
\'1' : '!', '2' : '@', '3' : '#', '4' : '$', '5' : '%', | |
\'6' : '^', '7' : '&', '8' : '*', '9' : '(', '0' : ')', '-' : '_', '=' : '+', | |
\';' : ':', '[' : '{', ']' : '}', '`' : '~', "'" : "\"", '\' : '|', | |
\} | |
let special_table = { | |
\ "\<ESC>" : "\<ESC>", "\<CR>" : ";\<CR>" | |
\ "\<Space>" : "\<Plug>(vimshell_term_send_semicolon)", | |
\} | |
if mode() !~# '^c' | |
echo 'Input sticky key: ' | |
endif | |
let char = '' | |
while char == '' | |
let char = nr2char(getchar()) | |
endwhile | |
if char =~ '\l' | |
return toupper(char) | |
elseif has_key(sticky_table, char) | |
return sticky_table[char] | |
elseif has_key(special_table, char) | |
return special_table[char] | |
else | |
return '' | |
endif | |
endfunction | |
let s:vimshell_hooks = {} | |
function! s:vimshell_hooks.chpwd(args, context) | |
if len(split(glob('*'), '\n')) < 100 | |
call vimshell#execute('ls') | |
else | |
call vimshell#execute('echo "Many files."') | |
endif | |
endfunction | |
function! s:vimshell_hooks.emptycmd(cmdline, context) | |
call vimshell#set_prompt_command('ls') | |
return 'ls' | |
endfunction | |
function! s:vimshell_hooks.preprompt(args, context) | |
" call vimshell#execute('echo "preprompt"') | |
endfunction | |
function! s:vimshell_hooks.preexec(cmdline, context) | |
" call vimshell#execute('echo "preexec"') | |
let args = vimproc#parser#split_args(a:cmdline) | |
if len(args) > 0 && args[0] ==# 'diff' | |
call vimshell#set_syntax('diff') | |
endif | |
return a:cmdline | |
endfunction | |
function! s:vimshell_hooks.input(input, context) | |
" echomsg 'input' | |
return a:input | |
endfunction | |
endfunction | |
"}}} | |
" netrw.vim"{{{ | |
let g:netrw_list_hide= '*.swp' | |
nnoremap <silent> <BS> :<C-u>Explore<CR> | |
" Change default directory. | |
set browsedir=current | |
"}}} | |
" vinarise.vim"{{{ | |
let g:vinarise_enable_auto_detect = 1 | |
"}}} | |
" vim-versions{{{ | |
nnoremap <silent> [Space]gs :<C-u>UniteVersions status:!<CR> | |
"}}} | |
" unite.vim"{{{ | |
" The prefix key. | |
nnoremap [unite] <Nop> | |
xnoremap [unite] <Nop> | |
nmap ;u [unite] | |
xmap ;u [unite] | |
nnoremap [unite]u q:Unite<Space> | |
" nnoremap <silent> : :<C-u>Unite history/command command<CR> | |
nnoremap <expr><silent> ;b <SID>unite_build() | |
function! s:unite_build() | |
return ":\<C-u>Unite -buffer-name=build". tabpagenr() ." -no-quit build\<CR>" | |
endfunction | |
nnoremap <silent> ;o | |
\ :<C-u>Unite outline -start-insert -resume<CR> | |
nnoremap [unite]f :<C-u>Unite source<CR> | |
nnoremap <silent> ;t | |
\ :<C-u>UniteWithCursorWord -buffer-name=tag tag tag/include<CR> | |
xnoremap <silent> ;r | |
\ d:<C-u>Unite -buffer-name=register register history/yank<CR> | |
nnoremap <silent> ;w | |
\ :<C-u>UniteWithCursorWord -buffer-name=register | |
\ buffer file_mru bookmark file<CR> | |
nnoremap <silent> <C-k> | |
\ :<C-u>Unite change jump<CR> | |
nnoremap <silent> ;g | |
\ :<C-u>Unite grep -buffer-name=search -no-quit -resume<CR> | |
nnoremap <silent> ;r | |
\ :<C-u>Unite -buffer-name=register register history/yank<CR> | |
inoremap <silent><expr> <C-z> | |
\ unite#start_complete('register', { 'input': unite#get_cur_text() }) | |
" <C-t>: Tab pages | |
nnoremap <silent> <C-t> :<C-u>Unite tab<CR> | |
" <C-w>: Windows operation | |
nnoremap <silent> <C-w> :<C-u>Unite window<CR> | |
"}}} | |
if s:is_windows | |
nnoremap <silent> [Window]s | |
\ :<C-u>Unite -buffer-name=files -no-split -multi-line | |
\ jump_point file_point buffer_tab | |
\ file_rec:! file file/new file_mru<CR> | |
else | |
nnoremap <silent> [Window]s | |
\ :<C-u>Unite -buffer-name=files -no-split -multi-line | |
\ jump_point file_point buffer_tab | |
\ file_rec/async:! file file/new file_mru<CR> | |
endif | |
nnoremap <silent> [Window]w | |
\ :<C-u>Unite window<CR> | |
nnoremap <silent> [Space]b | |
\ :<C-u>UniteBookmarkAdd<CR> | |
" t: tags-and-searches "{{{ | |
" The prefix key. | |
nnoremap [Tag] <Nop> | |
nmap t [Tag] | |
" Jump. | |
" nnoremap [Tag]t <C-]> | |
nnoremap <silent><expr> [Tag]t &filetype == 'help' ? "\<C-]>" : | |
\ ":\<C-u>UniteWithCursorWord -buffer-name=tag tag tag/include\<CR>" | |
" Jump next. | |
nnoremap <silent> [Tag]n :<C-u>tag<CR> | |
" Jump previous. | |
" nnoremap <silent> [Tag]p :<C-u>pop<CR> | |
nnoremap <silent><expr> [Tag]p &filetype == 'help' ? | |
\ ":\<C-u>pop\<CR>" : ":\<C-u>Unite jump\<CR>" | |
"}}} | |
" Execute help. | |
nnoremap <silent> <C-h> :<C-u>Unite -buffer-name=help help<CR> | |
" Execute help by cursor keyword. | |
nnoremap <silent> g<C-h> :<C-u>UniteWithInput help<CR> | |
" Search. | |
nnoremap <expr><silent> / <SID>smart_search_expr( | |
\ ":\<C-u>Unite -buffer-name=search -no-split -start-insert line/fast\<CR>", | |
\ ":\<C-u>Unite -buffer-name=search -start-insert line\<CR>") | |
nnoremap <expr> g/ <SID>smart_search_expr('g/', | |
\ ":\<C-u>Unite -buffer-name=search -start-insert line_migemo\<CR>") | |
nnoremap [Alt]/ g/ | |
nnoremap <silent><expr> ? <SID>smart_search_expr('?', | |
\ ":\<C-u>Unite mapping\<CR>") | |
nnoremap <silent><expr> * <SID>smart_search_expr( | |
\ ":\<C-u>UniteWithCursorWord -buffer-name=search line/fast\<CR>", | |
\ ":\<C-u>UniteWithCursorWord -buffer-name=search line\<CR>") | |
function! s:smart_search_expr(expr1, expr2) | |
return line('$') > 5000 ? a:expr1 : a:expr2 | |
endfunction | |
nnoremap <silent> n | |
\ :<C-u>UniteResume search -no-start-insert<CR> | |
let g:unite_source_history_yank_enable = 1 | |
let bundle = neobundle#get('unite.vim') | |
function! bundle.hooks.on_source(bundle) | |
autocmd MyAutoCmd FileType unite call s:unite_my_settings() | |
call unite#set_profile('action', 'context', {'start_insert' : 1}) | |
" Set "-no-quit" automatically in grep unite source. | |
call unite#set_profile('source/grep', 'context', {'no_quit' : 1}) | |
" migemo. | |
call unite#custom_source('line_migemo', 'matchers', 'matcher_migemo') | |
" Custom filters."{{{ | |
" call unite#custom_source('file,buffer,file_rec', 'matchers', 'matcher_fuzzy') | |
call unite#filters#sorter_default#use(['sorter_rank']) | |
"}}} | |
function! s:unite_my_settings() "{{{ | |
" Directory partial match. | |
" call unite#set_substitute_pattern('files', | |
" \'\%([~.*]\+\)\@<!/', '*/*', 100) | |
" call unite#set_substitute_pattern('files', '^\\', | |
" \ substitute(substitute($HOME, '\\', '/', 'g'), ' ', '\\ ', 'g') . '/*', -100) | |
" Test. | |
" call unite#set_substitute_pattern('files', '^\.v/', | |
" \ unite#util#substitute_path_separator($HOME).'/.vim/', 1000) | |
call unite#set_substitute_pattern('files', '^\.v/', | |
\ [expand('~/.vim/'), unite#util#substitute_path_separator($HOME) | |
\ . '/.bundle/*/'], 1000) | |
call unite#set_substitute_pattern('files', '\.', '*.', 1000) | |
call unite#custom_alias('file', 'h', 'left') | |
call unite#custom_default_action('directory', 'narrow') | |
" call unite#custom_default_action('file', 'my_tabopen') | |
call unite#set_substitute_pattern('file', '[^~.]\zs/', '*/*', 20) | |
call unite#custom_default_action('versions/git/status', 'commit') | |
let g:unite_quick_match_table = { | |
\ 'a' : 1, 's' : 2, 'd' : 3, 'f' : 4, 'g' : 5, | |
\ 'h' : 6, 'k' : 7, 'l' : 8, ';' : 9, | |
\ 'q' : 10, 'w' : 11, 'e' : 12, 'r' : 13, 't' : 14, | |
\ 'y' : 15, 'u' : 16, 'i' : 17, 'o' : 18, 'p' : 19, | |
\ '1' : 20, '2' : 21, '3' : 22, '4' : 23, '5' : 24, | |
\ '6' : 25, '7' : 26, '8' : 27, '9' : 28, '0' : 29, | |
\} | |
" call unite#custom_default_action('directory', 'cd') | |
" Custom actions."{{{ | |
let my_tabopen = { | |
\ 'description' : 'my tabopen items', | |
\ 'is_selectable' : 1, | |
\ } | |
function! my_tabopen.func(candidates) "{{{ | |
call unite#take_action('tabopen', a:candidates) | |
let dir = isdirectory(a:candidates[0].word) ? | |
\ a:candidates[0].word : fnamemodify(a:candidates[0].word, ':p:h') | |
execute g:unite_kind_openable_lcd_command '`=dir`' | |
endfunction"}}} | |
call unite#custom_action('file,buffer', 'tabopen', my_tabopen) | |
unlet my_tabopen | |
"}}} | |
" Overwrite settings. | |
imap <buffer> <BS> <Plug>(unite_delete_backward_path) | |
imap <buffer> jj <Plug>(unite_insert_leave) | |
imap <buffer><expr> j unite#smart_map('j', '') | |
imap <buffer> <TAB> <Plug>(unite_select_next_line) | |
imap <buffer> <C-w> <Plug>(unite_delete_backward_path) | |
imap <buffer> ' <Plug>(unite_quick_match_default_action) | |
nmap <buffer> ' <Plug>(unite_quick_match_default_action) | |
imap <buffer><expr> x | |
\ unite#smart_map('x', "\<Plug>(unite_quick_match_choose_action)") | |
nmap <buffer> x <Plug>(unite_quick_match_choose_action) | |
nmap <buffer> cd <Plug>(unite_quick_match_default_action) | |
nmap <buffer> <C-z> <Plug>(unite_toggle_transpose_window) | |
imap <buffer> <C-z> <Plug>(unite_toggle_transpose_window) | |
imap <buffer> <C-y> <Plug>(unite_narrowing_path) | |
nmap <buffer> <C-y> <Plug>(unite_narrowing_path) | |
nmap <buffer> <C-j> <Plug>(unite_toggle_auto_preview) | |
" nmap <buffer> <C-r> <Plug>(unite_narrowing_input_history) | |
" imap <buffer> <C-r> <Plug>(unite_narrowing_input_history) | |
nmap <silent><buffer> <Tab> :call <SID>NextWindow()<CR> | |
nnoremap <silent><buffer><expr> l | |
\ unite#smart_map('l', unite#do_action('default')) | |
nmap <buffer> <C-e> <Plug>(unite_narrowing_input_history) | |
let unite = unite#get_current_unite() | |
if unite.buffer_name =~# '^search' | |
nnoremap <silent><buffer><expr> r unite#do_action('replace') | |
else | |
nnoremap <silent><buffer><expr> r unite#do_action('rename') | |
endif | |
nnoremap <silent><buffer><expr> cd unite#do_action('lcd') | |
nnoremap <buffer><expr> S unite#mappings#set_current_filters( | |
\ empty(unite#mappings#get_current_filters()) ? ['sorter_reverse'] : []) | |
endfunction"}}} | |
" Original source."{{{ | |
let source = { | |
\ 'name' : 'buffer_lines', | |
\ 'description' : 'candidates from current buffer lines', | |
\ 'action_table' : {}, | |
\ 'max_candidates' : 30, | |
\ 'hooks' : {}, | |
\ } | |
call unite#define_source(source) | |
function! source.hooks.on_init(args, context) "{{{ | |
let a:context.source__lines = getbufline(bufnr('%'), 1, '$') | |
let a:context.source__bufname = bufname('%') | |
endfunction"}}} | |
function! source.gather_candidates(args, context) "{{{ | |
let candidates = [] | |
let linenr = 1 | |
for line in a:context.source__lines | |
call add(candidates, { | |
\ 'word' : line, | |
\ 'kind' : 'jump_list', | |
\ 'action__line' : linenr, | |
\ 'action__path' : a:context.source__bufname, | |
\ }) | |
let linenr += 1 | |
endfor | |
return candidates | |
endfunction"}}} | |
unlet source | |
"}}} | |
" Variables. | |
let g:unite_enable_split_vertically = 0 | |
let g:unite_winheight = 20 | |
let g:unite_enable_start_insert = 0 | |
let g:unite_enable_short_source_names = 1 | |
let g:unite_cursor_line_highlight = 'TabLineSel' | |
" let g:unite_abbr_highlight = 'TabLine' | |
" let g:unite_source_file_mru_time_format = '' | |
let g:unite_source_file_mru_filename_format = ':~:.' | |
let g:unite_source_file_mru_limit = 300 | |
" let g:unite_source_directory_mru_time_format = '' | |
let g:unite_source_directory_mru_limit = 300 | |
if s:is_windows | |
else | |
" Like Textmate icons. | |
let g:unite_marked_icon = '✗' | |
endif | |
if executable('jvgrep') | |
" For jvgrep. | |
let g:unite_source_grep_command = 'jvgrep' | |
let g:unite_source_grep_default_opts = '--exclude ''\.(git|svn|hg|bzr)''' | |
let g:unite_source_grep_recursive_opt = '-R' | |
elseif executable('ack-grep') | |
" For ack. | |
" let g:unite_source_grep_command = 'ack-grep' | |
" let g:unite_source_grep_default_opts = '--no-heading --no-color -a' | |
" let g:unite_source_grep_recursive_opt = '' | |
endif | |
" For unite-alias. | |
let g:unite_source_alias_aliases = {} | |
let g:unite_source_alias_aliases.test = { | |
\ 'source' : 'file_rec', | |
\ 'args' : '~/', | |
\ } | |
let g:unite_source_alias_aliases.line_migemo = { | |
\ 'source' : 'line', | |
\ } | |
" For unite-menu. | |
let g:unite_source_menu_menus = {} | |
let g:unite_source_menu_menus.enc = { | |
\ 'description' : 'Open with a specific character code again.', | |
\ } | |
let g:unite_source_menu_menus.enc.command_candidates = [ | |
\ ['utf8', 'Utf8'], | |
\ ['iso2022jp', 'Iso2022jp'], | |
\ ['cp932', 'Cp932'], | |
\ ['euc', 'Euc'], | |
\ ['utf16', 'Utf16'], | |
\ ['utf16-be', 'Utf16be'], | |
\ ['jis', 'Jis'], | |
\ ['sjis', 'Sjis'], | |
\ ['unicode', 'Unicode'], | |
\ ] | |
nnoremap <silent> ;e :<C-u>Unite menu:enc<CR> | |
let g:unite_source_menu_menus.fenc = { | |
\ 'description' : 'Change file fenc option.', | |
\ } | |
let g:unite_source_menu_menus.fenc.command_candidates = [ | |
\ ['utf8', 'WUtf8'], | |
\ ['iso2022jp', 'WIso2022jp'], | |
\ ['cp932', 'WCp932'], | |
\ ['euc', 'WEuc'], | |
\ ['utf16', 'WUtf16'], | |
\ ['utf16-be', 'WUtf16be'], | |
\ ['jis', 'WJis'], | |
\ ['sjis', 'WSjis'], | |
\ ['unicode', 'WUnicode'], | |
\ ] | |
nnoremap <silent> ;f :<C-u>Unite menu:fenc<CR> | |
let g:unite_source_menu_menus.ff = { | |
\ 'description' : 'Change file format option.', | |
\ } | |
let g:unite_source_menu_menus.ff.command_candidates = { | |
\ 'unix' : 'WUnix', | |
\ 'dos' : 'WDos', | |
\ 'mac' : 'WMac', | |
\ } | |
nnoremap <silent> ;w :<C-u>Unite menu:ff<CR> | |
let g:unite_source_menu_menus.unite = { | |
\ 'description' : 'Start unite sources', | |
\ } | |
let g:unite_source_menu_menus.unite.command_candidates = { | |
\ 'history' : 'Unite history/command', | |
\ 'quickfix' : 'Unite qflist -no-quit', | |
\ 'resume' : 'Unite -buffer-name=resume resume', | |
\ 'directory' : 'Unite -buffer-name=files '. | |
\ '-default-action=lcd directory_mru', | |
\ 'mapping' : 'Unite mapping', | |
\ 'message' : 'Unite output:message', | |
\ } | |
nnoremap <silent> ;u :<C-u>Unite menu:unite -resume<CR> | |
let g:unite_build_error_icon = $DOTVIM . '/signs/err.' | |
\ . (s:is_windows ? 'bmp' : 'png') | |
let g:unite_build_warning_icon = $DOTVIM . '/signs/warn.' | |
\ . (s:is_windows ? 'bmp' : 'png') | |
endfunction | |
"}}} | |
" smartword.vim"{{{ | |
" Replace w and others with smartword-mappings | |
nmap w <Plug>(smartword-w) | |
nmap b <Plug>(smartword-b) | |
nmap ge <Plug>(smartword-ge) | |
xmap w <Plug>(smartword-w) | |
xmap b <Plug>(smartword-b) | |
" Operator pending mode. | |
omap <Leader>w <Plug>(smartword-w) | |
omap <Leader>b <Plug>(smartword-b) | |
omap <Leader>ge <Plug>(smartword-ge) | |
"}}} | |
" camlcasemotion.vim"{{{ | |
nmap <silent> W <Plug>CamelCaseMotion_w | |
xmap <silent> W <Plug>CamelCaseMotion_w | |
nmap <silent> B <Plug>CamelCaseMotion_b | |
xmap <silent> B <Plug>CamelCaseMotion_b | |
""}}} | |
" smartchr.vim"{{{ | |
let bundle = neobundle#get('vim-smartchr') | |
function! bundle.hooks.on_source(bundle) | |
inoremap <expr> , smartchr#one_of(', ', ',') | |
inoremap <expr> ? smartchr#one_of('?', '? ') | |
" Smart =. | |
inoremap <expr> = | |
\ search('\(&\<bar><bar>\<bar>+\<bar>-\<bar>/\<bar>>\<bar><\) \%#', 'bcn')? '<bs>= ' | |
\ : search('\(*\<bar>!\)\%#', 'bcn') ? '= ' | |
\ : smartchr#one_of(' = ', '=', ' == ') | |
augroup MyAutoCmd | |
" Substitute .. into -> . | |
autocmd FileType c,cpp inoremap <buffer> <expr> . smartchr#loop('.', '->', '...') | |
autocmd FileType perl,php inoremap <buffer> <expr> . smartchr#loop(' . ', '->', '.') | |
autocmd FileType perl,php inoremap <buffer> <expr> - smartchr#loop('-', '->') | |
autocmd FileType vim inoremap <buffer> <expr> . smartchr#loop('.', ' . ', '..', '...') | |
autocmd FileType haskell,int-ghci | |
\ inoremap <buffer> <expr> + smartchr#loop('+', ' ++ ') | |
\| inoremap <buffer> <expr> - smartchr#loop('-', ' -> ', ' <- ') | |
\| inoremap <buffer> <expr> $ smartchr#loop(' $ ', '$') | |
\| inoremap <buffer> <expr> \ smartchr#loop('\ ', '\') | |
\| inoremap <buffer> <expr> : smartchr#loop(':', ' :: ', ' : ') | |
\| inoremap <buffer> <expr> . smartchr#loop('.', ' . ', '..') | |
autocmd FileType scala | |
\ inoremap <buffer> <expr> - smartchr#loop('-', ' -> ', ' <- ') | |
\| inoremap <buffer> <expr> = smartchr#loop(' = ', '=', ' => ') | |
\| inoremap <buffer> <expr> : smartchr#loop(': ', ':', ' :: ') | |
\| inoremap <buffer> <expr> . smartchr#loop('.', ' => ') | |
autocmd FileType eruby | |
\ inoremap <buffer> <expr> > smartchr#loop('>', '%>') | |
\| inoremap <buffer> <expr> < smartchr#loop('<', '<%', '<%=') | |
augroup END | |
endfunction | |
"}}} | |
" smarttill.vim"{{{ | |
xmap q <Plug>(smarttill-t) | |
xmap Q <Plug>(smarttill-T) | |
" Operator pending mode. | |
omap q <Plug>(smarttill-t) | |
omap Q <Plug>(smarttill-T) | |
"}}} | |
" changelog.vim"{{{ | |
autocmd MyAutoCmd BufNewFile,BufRead *.changelog setf changelog | |
let g:changelog_timeformat = "%Y-%m-%d" | |
let g:changelog_username = "Shougo " | |
"}}} | |
" quickrun.vim"{{{ | |
function! s:init_quickrun() | |
for [key, com] in items({ | |
\ '<Leader>x' : '<=@i >:', | |
\ '<Leader>p' : '<=@i >!', | |
\ '<Leader>"' : '<=@i >=@"', | |
\ '<Leader>w' : '<=@i >', | |
\ '<Leader>q' : '<=@i >>', | |
\ '<Leader>vx' : '-eval 1 <=@i >:', | |
\ '<Leader>vp' : '-eval 1 <=@i >!', | |
\ '<Leader>v"' : '-eval 1 <=@i >=@"', | |
\ '<Leader>vw' : '-eval 1 <=@i >', | |
\ '<Leader>vq' : '-eval 1 <=@i >>', | |
\ }) | |
execute 'nnoremap <silent>' key ':QuickRun' com '-mode n<CR>' | |
execute 'vnoremap <silent>' key ':QuickRun' com '-mode v<CR>' | |
endfor | |
call s:set_default('g:QuickRunConfig', {'mkd': {'command': 'mdv2html'}}) | |
call s:set_default('g:QuickRunConfig', {'xmodmap': {}}) | |
endfunction | |
call s:init_quickrun() | |
nmap <silent> [Space]r <Plug>(quickrun-op) | |
if !exists('g:quickrun_config') | |
" Enable async. | |
let g:quickrun_config = { | |
\ '*': {'runmode': 'async:vimproc'}, | |
\ } | |
if s:is_windows | |
function! TexEncoding() | |
if &fileencoding ==# 'utf-8' | |
let arg = 'utf8 ' | |
elseif &fileencoding =~# '^euc-\%(jp\|jisx0213\)$' | |
let arg = 'euc ' | |
elseif &fileencoding =~# '^iso-2022-jp' | |
let arg = 'jis ' | |
else " cp932 | |
let arg = 'sjis ' | |
endif | |
return arg | |
endfunction | |
let tex = 'platex -kanji={TexEncoding()}' | |
let g:quickrun_config.tex = { 'command' : tex, 'exec': ['%c %s', 'dvipdfmx %s:r.dvi'] } | |
else | |
let tex = 'platex' | |
let g:quickrun_config.tex = { 'command' : tex, 'exec': ['%c %s', 'dvipdfmx %s:r.dvi', 'open %s:r.pdf'] } | |
endif | |
unlet tex | |
let g:quickrun_config.vim = {} | |
endif | |
"}}} | |
" python.vim | |
let python_highlight_all = 1 | |
" fakeclip.vim"{{{ | |
let g:fakeclip_no_default_key_mappings = 1 | |
for _ in ['+', '*'] | |
execute 'silent! nmap "'._.'y <Plug>(fakeclip-y)' | |
execute 'silent! nmap "'._.'Y <Plug>(fakeclip-Y)' | |
execute 'silent! nmap "'._.'yy <Plug>(fakeclip-Y)' | |
execute 'silent! vmap "'._.'y <Plug>(fakeclip-y)' | |
execute 'silent! vmap "'._.'Y <Plug>(fakeclip-Y)' | |
execute 'silent! nmap "'._.'p <Plug>(fakeclip-p)' | |
execute 'silent! nmap "'._.'P <Plug>(fakeclip-P)' | |
execute 'silent! nmap "'._.'gp <Plug>(fakeclip-gp)' | |
execute 'silent! nmap "'._.'gP <Plug>(fakeclip-gP)' | |
execute 'silent! vmap "'._.'p <Plug>(fakeclip-p)' | |
execute 'silent! vmap "'._.'P <Plug>(fakeclip-P)' | |
execute 'silent! vmap "'._.'gp <Plug>(fakeclip-gp)' | |
execute 'silent! vmap "'._.'gP <Plug>(fakeclip-gP)' | |
"execute 'silent! map! <C-r>'._.' <Plug>(fakeclip-insert)' | |
"execute 'silent! map! <C-r><C-r>'._.' <Plug>(fakeclip-insert-r)' | |
"execute 'silent! map! <C-r><C-o>'._.' <Plug>(fakeclip-insert-o)' | |
"execute 'silent! imap <C-r><C-p>'._.' <Plug>(fakeclip-insert-p)' | |
endfor | |
"}}} | |
" ref.vim"{{{ | |
let bundle = neobundle#get('vim-ref') | |
function! bundle.hooks.on_source(bundle) | |
let g:ref_use_vimproc = 1 | |
if s:is_windows | |
let g:ref_refe_encoding = 'cp932' | |
else | |
let g:ref_refe_encoding = 'euc-jp' | |
endif | |
" ref-lynx. | |
if s:is_windows | |
let s:lynx = 'C:/lynx/lynx.exe' | |
let s:cfg = 'C:/lynx/lynx.cfg' | |
let g:ref_lynx_cmd = s:lynx.' -cfg='.s:cfg.' -dump -nonumbers %s' | |
let g:ref_alc_cmd = s:lynx.' -cfg='.s:cfg.' -dump %s' | |
unlet s:lynx | |
unlet s:cfg | |
endif | |
let g:ref_lynx_use_cache = 1 | |
let g:ref_lynx_start_linenumber = 0 " Skip. | |
let g:ref_lynx_hide_url_number = 0 | |
autocmd MyAutoCmd FileType ref call s:ref_my_settings() | |
function! s:ref_my_settings() "{{{ | |
" Overwrite settings. | |
nmap <buffer> [Tag]t <Plug>(ref-keyword) | |
nmap <buffer> [Tag]p <Plug>(ref-back) | |
endfunction"}}} | |
endfunction | |
"}}} | |
" vimfiler.vim"{{{ | |
"nmap [Space]v <Plug>(vimfiler_switch) | |
nnoremap <silent> [Space]v :<C-u>VimFiler<CR> | |
nnoremap [Space]ff :<C-u>VimFilerExplorer<CR> | |
let bundle = neobundle#get('vimfiler') | |
function! bundle.hooks.on_source(bundle) | |
let g:vimfiler_enable_clipboard = 0 | |
let g:vimfiler_safe_mode_by_default = 0 | |
let g:vimfiler_as_default_explorer = 1 | |
let g:vimfiler_detect_drives = s:is_windows ? [ | |
\ 'C:/', 'D:/', 'E:/', 'F:/', 'G:/', 'H:/', 'I:/', | |
\ 'J:/', 'K:/', 'L:/', 'M:/', 'N:/'] : | |
\ split(glob('/mnt/*'), '\n') + split(glob('/media/*'), '\n') + | |
\ split(glob('/Users/*'), '\n') | |
" %p : full path | |
" %d : current directory | |
" %f : filename | |
" %F : filename removed extensions | |
" %* : filenames | |
" %# : filenames fullpath | |
let g:vimfiler_sendto = { | |
\ 'unzip' : 'unzip %f', | |
\ 'zip' : 'zip -r %F.zip %*', | |
\ 'Inkscape' : 'inkspace', | |
\ 'GIMP' : 'gimp %*', | |
\ 'gedit' : 'gedit', | |
\ } | |
if s:is_windows | |
" Use trashbox. | |
let g:unite_kind_file_use_trashbox = 1 | |
else | |
" Like Textmate icons. | |
let g:vimfiler_tree_leaf_icon = ' ' | |
let g:vimfiler_tree_opened_icon = '▾' | |
let g:vimfiler_tree_closed_icon = '▸' | |
let g:vimfiler_file_icon = '-' | |
let g:vimfiler_readonly_file_icon = '✗' | |
let g:vimfiler_marked_file_icon = '✓' | |
endif | |
" let g:vimfiler_readonly_file_icon = '[O]' | |
let g:vimfiler_quick_look_command = | |
\ s:is_windows ? 'maComfort.exe -ql' : | |
\ s:is_mac ? 'qlmanage -p' : 'gloobus-preview' | |
autocmd MyAutoCmd FileType vimfiler call s:vimfiler_my_settings() | |
function! s:vimfiler_my_settings() "{{{ | |
call vimfiler#set_execute_file('vim', ['vim', 'notepad']) | |
call vimfiler#set_execute_file('txt', 'vim') | |
" Overwrite settings. | |
nnoremap <silent><buffer> J | |
\ <C-u>:Unite -buffer-name=files -default-action=lcd directory_mru<CR> | |
" Call sendto. | |
" nnoremap <buffer> - <C-u>:Unite sendto<CR> | |
" setlocal cursorline | |
nmap <buffer> O <Plug>(vimfiler_sync_with_another_vimfiler) | |
nnoremap <silent><buffer><expr> gy vimfiler#do_action('tabopen') | |
nmap <buffer> p <Plug>(vimfiler_quick_look) | |
" Migemo search. | |
if !empty(unite#get_filters('matcher_migemo')) | |
nnoremap <silent><buffer><expr> / line('$') > 10000 ? 'g/' : | |
\ ":\<C-u>Unite -buffer-name=search -start-insert line_migemo\<CR>" | |
endif | |
endfunction"}}} | |
endfunction | |
"}}} | |
" eskk.vim"{{{ | |
imap <C-j> <Plug>(eskk:toggle) | |
let bundle = neobundle#get('eskk.vim') | |
function! bundle.hooks.on_source(bundle) | |
let g:eskk#large_dictionary = { | |
\ 'path': expand('~/SKK-JISYO.L'), | |
\ 'sorted': 1, | |
\ 'encoding': 'euc-jp', | |
\} | |
" Disable skk.vim | |
let g:plugin_skk_disable = 1 | |
let g:eskk#disable = 0 | |
let g:eskk#debug = 0 | |
" Don't keep state. | |
let g:eskk#keep_state = 0 | |
let g:eskk#show_annotation = 1 | |
let g:eskk#rom_input_style = 'msime' | |
let g:eskk#egg_like_newline = 1 | |
let g:eskk#egg_like_newline_completion = 1 | |
" Disable mapping. | |
"let g:eskk#map_normal_keys = 0 | |
" Toggle debug. | |
nnoremap <silent> [Space]ed :<C-u>call ToggleVariable('g:eskk#debug')<CR> | |
autocmd MyAutoCmd User eskk-initialize-post | |
\ EskkMap -remap jj <Plug>(eskk:disable)<Esc> | |
"let g:eskk#dictionary = { | |
"\ 'path': expand('~/.skk-eskk-jisyo'), | |
"\ 'sorted': 0, | |
"\ 'encoding': 'utf-8', | |
"\} | |
" Use /bin/sh -c "VTE_CJK_WIDTH=1 gnome-terminal --disable-factory" | |
" instead of this settings. | |
"if &encoding == 'utf-8' && !has('gui_running') | |
" GNOME Terminal only. | |
" Use <> instead of ▽. | |
"let g:eskk#marker_henkan = '<>' | |
" Use >> instead of ▼. | |
"let g:eskk#marker_henkan_select = '>>' | |
"endif | |
" Define table. | |
autocmd MyAutoCmd User eskk-initialize-pre call s:eskk_initial_pre() | |
function! s:eskk_initial_pre() "{{{ | |
let t = eskk#table#new('rom_to_hira*', 'rom_to_hira') | |
call t.add_map('z ', ' ') | |
call t.add_map('~', '〜') | |
call t.add_map('zc', '©') | |
call t.add_map('zr', '®') | |
call t.add_map('z9', '(') | |
call t.add_map('z0', ')') | |
call eskk#register_mode_table('hira', t) | |
unlet t | |
endfunction "}}} | |
endfunction | |
"}}} | |
" lingr-vim"{{{ | |
let g:lingr_vim_sidebar_width = 30 | |
" Keymappings. | |
autocmd MyAutoCmd FileType lingr-messages call s:lingr_messages_my_settings() | |
autocmd MyAutoCmd FileType lingr-say call s:lingr_say_my_settings() | |
autocmd MyAutoCmd FileType lingr-rooms call s:lingr_looms_my_settings() | |
function! s:lingr_messages_my_settings() "{{{ | |
nmap <buffer> o <Plug>(lingr-messages-show-say-buffer) | |
nunmap <buffer> s | |
if s:is_windows | |
" Dirty shellslash hack. | |
set noshellslash | |
augroup MyAutoCmd | |
autocmd WinEnter,BufWinEnter <buffer> set noshellslash | |
autocmd WinLeave,BufWinLeave <buffer> set shellslash | |
augroup END | |
endif | |
endfunction"}}} | |
function! s:lingr_say_my_settings() "{{{ | |
imap <buffer> <CR> <Plug>(lingr-say-insert-mode-say) | |
nmap <buffer> q <Plug>(lingr-say-close) | |
endfunction"}}} | |
function! s:lingr_looms_my_settings() "{{{ | |
nmap <buffer> l <Plug>(lingr-rooms-select-room) | |
endfunction"}}} | |
if !s:is_windows | |
command! Suicide call system('kill -KILL ' . getpid()) | |
endif | |
"}}} | |
" surround.vim"{{{ | |
let g:surround_no_mappings = 1 | |
autocmd MyAutoCmd FileType * call s:define_surround_keymappings() | |
function! s:define_surround_keymappings() | |
if !&modifiable | |
silent! nunmap <buffer> ds | |
silent! nunmap <buffer> cs | |
silent! nunmap <buffer> ys | |
silent! nunmap <buffer> yS | |
else | |
nmap <buffer> ds <Plug>Dsurround | |
nmap <buffer> cs <Plug>Csurround | |
nmap <buffer> ys <Plug>Ysurround | |
nmap <buffer> yS <Plug>YSurround | |
endif | |
endfunction | |
"}}} | |
" qfreplace.vim | |
autocmd MyAutoCmd FileType qf nnoremap <buffer> r :<C-u>Qfreplace<CR> | |
" open-browser.vim"{{{ | |
nmap gs <Plug>(open-browser-wwwsearch) | |
let bundle = neobundle#get('open-browser.vim') | |
function! bundle.hooks.on_source(bundle) | |
nnoremap <Plug>(open-browser-wwwsearch) | |
\ :<C-u>call <SID>www_search()<CR> | |
function! s:www_search() | |
let search_word = input('Please input search word: ', '', | |
\ 'customlist,wwwsearch#cmd_Wwwsearch_complete') | |
if search_word != '' | |
execute 'OpenBrowserSearch' escape(search_word, '"') | |
endif | |
endfunction | |
endfunction | |
"}}} | |
" caw.vim"{{{ | |
nmap gc <Plug>(caw:prefix) | |
xmap gc <Plug>(caw:prefix) | |
nmap gcc <Plug>(caw:i:toggle) | |
xmap gcc <Plug>(caw:i:toggle) | |
"}}} | |
" autodate.vim"{{{ | |
let autodate_format = '%d %3m %Y' | |
let autodate_keyword_pre = 'Last \%(Change\|Modified\):' | |
"}}} | |
" Conque.vim"{{{ | |
let g:ConqueTerm_EscKey = '<Esc>' | |
let g:ConqueTerm_PyVersion = 3 | |
"}}} | |
" fontzoom.vim"{{{ | |
nmap + <Plug>(fontzoom-larger) | |
nmap _ <Plug>(fontzoom-smaller) | |
"}}} | |
" surround_custom_mappings.vim"{{{ | |
let bundle = neobundle#get('vim-surround_custom_mapping') | |
function! bundle.hooks.on_source(bundle) | |
let g:surround_custom_mapping = {} | |
let g:surround_custom_mapping._ = { | |
\ 'p': "<pre> \r </pre>", | |
\ 'w': "%w(\r)", | |
\ } | |
let g:surround_custom_mapping.help = { | |
\ 'p': "> \r <", | |
\ } | |
let g:surround_custom_mapping.ruby = { | |
\ '-': "<% \r %>", | |
\ '=': "<%= \r %>", | |
\ '9': "(\r)", | |
\ '5': "%(\r)", | |
\ '%': "%(\r)", | |
\ 'w': "%w(\r)", | |
\ '#': "#{\r}", | |
\ '3': "#{\r}", | |
\ 'e': "begin \r end", | |
\ 'E': "<<EOS \r EOS", | |
\ 'i': "if \1if\1 \r end", | |
\ 'u': "unless \1unless\1 \r end", | |
\ 'c': "class \1class\1 \r end", | |
\ 'm': "module \1module\1 \r end", | |
\ 'd': "def \1def\1\2args\r..*\r(&)\2 \r end", | |
\ 'p': "\1method\1 do \2args\r..*\r|&| \2\r end", | |
\ 'P': "\1method\1 {\2args\r..*\r|&|\2 \r }", | |
\ } | |
let g:surround_custom_mapping.javascript = { | |
\ 'f': "function(){ \r }" | |
\ } | |
let g:surround_custom_mapping.lua = { | |
\ 'f': "function(){ \r }" | |
\ } | |
let g:surround_custom_mapping.python = { | |
\ 'p': "print( \r)", | |
\ '[': "[\r]", | |
\ } | |
let g:surround_custom_mapping.vim= { | |
\'f': "function! \r endfunction" | |
\ } | |
endfunction | |
"}}} | |
" Gundo.vim | |
nnoremap U :<C-u>GundoToggle<CR> | |
" TweetVim | |
" Start TweetVim. | |
nnoremap <silent> [unite]w :<C-u>Unite tweetvim<CR> | |
autocmd MyAutoCmd FileType tweetvim call s:tweetvim_my_settings() | |
function! s:tweetvim_my_settings() "{{{ | |
" Open say buffer. | |
nnoremap <silent><buffer> o :TweetVimSay<CR> | |
nnoremap <silent><buffer> q :close<CR> | |
nmap <silent><buffer> j <Plug>(accelerated_jk_gj) | |
endfunction"}}} | |
let g:tweetvim_display_separator = 0 | |
" Operator-replace. | |
nmap R <Plug>(operator-replace) | |
xmap R <Plug>(operator-replace) | |
xmap p <Plug>(operator-replace) | |
" Taglist. | |
let Tlist_Show_One_File = 1 | |
let Tlist_Use_Right_Window = 1 | |
let Tlist_Exit_OnlyWindow = 1 | |
" restart.vim {{{ | |
let g:restart_save_window_values = 0 | |
nnoremap <silent> [Space]re :<C-u>Restart<CR> | |
"}}} | |
" accelerated-jk | |
nmap <silent>j <Plug>(accelerated_jk_gj) | |
nmap gj j | |
nmap <silent>k <Plug>(accelerated_jk_gk) | |
nmap gk k | |
" tabpagecd | |
autocmd MyAutoCmd TabEnter * NeoBundleSource vim-tabpagecd | |
" altercmd.vim{{{ | |
nnoremap : :<C-u>NeoBundleSource vim-altercmd<CR>: | |
let bundle = neobundle#get('vim-altercmd') | |
function! bundle.hooks.on_source(bundle) | |
silent! nunmap : | |
silent! xunmap : | |
call altercmd#load() | |
AlterCommand <cmdwin> u[nite] Unite | |
AlterCommand u[nite] Unite | |
AlterCommand <cmdwin> u[nite] Unite | |
AlterCommand u[nite] Unite | |
AlterCommand <cmdwin> e[dit] Edit | |
AlterCommand e[dit] Edit | |
AlterCommand <cmdwin> r[ead] Read | |
AlterCommand r[ead] Read | |
AlterCommand <cmdwin> s[ource] Source | |
AlterCommand s[ource] Source | |
AlterCommand <cmdwin> w[rite] Write | |
AlterCommand w[rite] Write | |
endfunction | |
"}}} | |
"}}} | |
"--------------------------------------------------------------------------- | |
" Key-mappings: "{{{ | |
" | |
" Use <C-Space>. | |
map <C-Space> <C-@> | |
cmap <C-Space> <C-@> | |
" Visual mode keymappings: "{{{ | |
" <TAB>: indent. | |
xnoremap <TAB> > | |
" <S-TAB>: unindent. | |
xnoremap <S-TAB> < | |
" Indent | |
nnoremap > >> | |
nnoremap < << | |
xnoremap > >gv | |
xnoremap < <gv | |
xmap <silent> y "*y:let [@+,@"]=[@*,@*]<CR> | |
"}}} | |
" Insert mode keymappings: "{{{ | |
" <C-t>: insert tab. | |
inoremap <C-t> <C-v><TAB> | |
" <C-d>: delete char. | |
inoremap <C-d> <Del> | |
" <C-a>: move to head. | |
inoremap <silent><C-a> <C-o>^ | |
" Enable undo <C-w> and <C-u>. | |
inoremap <C-w> <C-g>u<C-w> | |
inoremap <C-u> <C-g>u<C-u> | |
if has('gui_running') | |
inoremap <ESC> <ESC> | |
endif | |
" H, D: delete camlcasemotion. | |
inoremap <expr>H <SID>camelcase_delete(0) | |
inoremap <expr>D <SID>camelcase_delete(1) | |
function! s:camelcase_delete(is_reverse) | |
let save_ve = &l:virtualedit | |
setlocal virtualedit=all | |
if a:is_reverse | |
let cur_text = getline('.')[virtcol('.')-1 : ] | |
else | |
let cur_text = getline('.')[: virtcol('.')-2] | |
endif | |
let &l:virtualedit = save_ve | |
let pattern = '\d\+\|\u\+\ze\%(\u\l\|\d\)\|' . | |
\'\u\l\+\|\%(\a\|\d\)\+\ze_\|\%(\k\@!\S\)\+' . | |
\'\|\%(_\@!\k\)\+\>\|[_]\|\s\+' | |
if a:is_reverse | |
let cur_cnt = len(matchstr(cur_text, '^\%('.pattern.'\)')) | |
else | |
let cur_cnt = len(matchstr(cur_text, '\%('.pattern.'\)$')) | |
endif | |
let del = a:is_reverse ? "\<Del>" : "\<BS>" | |
return (pumvisible() ? neocomplcache#smart_close_popup() : '') . repeat(del, cur_cnt) | |
endfunction | |
"}}} | |
" Command-line mode keymappings:"{{{ | |
" <C-a>, A: move to head. | |
cnoremap <C-a> <Home> | |
" <C-b>: previous char. | |
cnoremap <C-b> <Left> | |
" <C-d>: delete char. | |
cnoremap <C-d> <Del> | |
" <C-e>, E: move to end. | |
cnoremap <C-e> <End> | |
" <C-f>: next char. | |
cnoremap <C-f> <Right> | |
" <C-n>: next history. | |
cnoremap <C-n> <Down> | |
" <C-p>: previous history. | |
cnoremap <C-p> <Up> | |
" <C-k>, K: delete to end. | |
cnoremap <C-k> <C-\>e getcmdpos() == 1 ? | |
\ '' : getcmdline()[:getcmdpos()-2]<CR> | |
" <C-y>: paste. | |
cnoremap <C-y> <C-r>* | |
"}}} | |
" Command line buffer."{{{ | |
nnoremap <sid>(command-line-enter) q: | |
xnoremap <sid>(command-line-enter) q: | |
nnoremap <sid>(command-line-norange) q:<C-u> | |
nmap ;; <sid>(command-line-enter) | |
xmap ;; <sid>(command-line-enter) | |
autocmd MyAutoCmd CmdwinEnter * call s:init_cmdwin() | |
autocmd MyAutoCmd CmdwinLeave * let g:neocomplcache_enable_auto_select = 1 | |
function! s:init_cmdwin() | |
NeoBundleSource vim-altercmd | |
let g:neocomplcache_enable_auto_select = 0 | |
let b:neocomplcache_sources_list = ['vim_complete'] | |
nnoremap <buffer><silent> q :<C-u>quit<CR> | |
nnoremap <buffer><silent> <TAB> :<C-u>quit<CR> | |
inoremap <buffer><expr><CR> neocomplcache#close_popup()."\<CR>" | |
inoremap <buffer><expr><C-h> col('.') == 1 ? | |
\ "\<ESC>:quit\<CR>" : neocomplcache#cancel_popup()."\<C-h>" | |
inoremap <buffer><expr><BS> col('.') == 1 ? | |
\ "\<ESC>:quit\<CR>" : neocomplcache#cancel_popup()."\<C-h>" | |
" Completion. | |
inoremap <buffer><expr><TAB> pumvisible() ? | |
\ "\<C-n>" : <SID>check_back_space() ? "\<TAB>" : "\<C-x>\<C-u>\<C-p>" | |
startinsert! | |
endfunction"}}} | |
" [Space]: Other useful commands "{{{ | |
" Smart space mapping. | |
" Notice: when starting other <Space> mappings in noremap, disappeared [Space]. | |
nmap <Space> [Space] | |
xmap <Space> [Space] | |
nnoremap [Space] <Nop> | |
xnoremap [Space] <Nop> | |
" Toggle relativenumber. | |
nnoremap <silent> [Space]. | |
\ :<C-u>call ToggleOption('relativenumber')<CR> | |
nnoremap <silent> [Space]p | |
\ :<C-u>call ToggleOption('paste')<CR> | |
" Toggle highlight. | |
nnoremap <silent> [Space]/ | |
\ :<C-u>call ToggleOption('hlsearch')<CR> | |
" Toggle cursorline. | |
nnoremap <silent> [Space]cl | |
\ :<C-u>call ToggleOption('cursorline')<CR> | |
" Set autoread. | |
nnoremap [Space]ar | |
\ :<C-u>setlocal autoread<CR> | |
" Output encoding information. | |
nnoremap <silent> [Space]en | |
\ :<C-u>setlocal encoding? termencoding? fenc? fencs?<CR> | |
" Set spell check. | |
nnoremap [Space]sp | |
\ :<C-u>call ToggleOption('spell')<CR> | |
nnoremap [Space]w | |
\ :<C-u>call ToggleOption('wrap')<CR> | |
" Echo syntax name. | |
nnoremap [Space]sy | |
\ :<C-u>echo synIDattr(synID(line('.'), col('.'), 1), "name")<CR> | |
" Easily edit .vimrc and .gvimrc "{{{ | |
nnoremap <silent> [Space]ev :<C-u>edit $MYVIMRC<CR> | |
nnoremap <silent> [Space]eg :<C-u>edit $MYGVIMRC<CR> | |
" Load .gvimrc after .vimrc edited at GVim. | |
nnoremap <silent> [Space]rv :<C-u>source $MYVIMRC \| | |
\ if has('gui_running') \| | |
\ source $MYGVIMRC \| | |
\ endif \| echo "source $MYVIMRC"<CR> | |
nnoremap <silent> [Space]rg | |
\ :<C-u>source $MYGVIMRC \| | |
\ echo "source $MYGVIMRC"<CR> | |
"}}} | |
" Useful save mappings. | |
nnoremap <Leader><Leader> :<C-u>update<CR> | |
" Change current directory. | |
nnoremap <silent> [Space]cd :<C-u>call <SID>cd_buffer_dir()<CR> | |
function! s:cd_buffer_dir() "{{{ | |
let filetype = getbufvar(bufnr('%'), '&filetype') | |
if filetype ==# 'vimfiler' | |
let dir = getbufvar(bufnr('%'), 'vimfiler').current_dir | |
elseif filetype ==# 'vimshell' | |
let dir = getbufvar(bufnr('%'), 'vimshell').save_dir | |
else | |
let dir = isdirectory(bufname('%')) ? bufname('%') : fnamemodify(bufname('%'), ':p:h') | |
endif | |
cd `=dir` | |
endfunction"}}} | |
" Delete windows ^M codes. | |
nnoremap <silent> [Space]<C-m> mmHmt:<C-u>%s/<C-v><CR>$//ge<CR>'tzt'm | |
" Delete spaces before newline. | |
nnoremap <silent> [Space]ss mmHmt:<C-u>%s/<Space>$//ge<CR>`tzt`m | |
" Easily syntax change. | |
nnoremap <silent> [Space]ft :<C-u>Unite -start-insert filetype<CR> | |
" Exchange gj and gk to j and k. "{{{ | |
command! -nargs=? -bar -bang ToggleGJK call s:ToggleGJK() | |
nnoremap <silent> [Space]gj :<C-u>ToggleGJK<CR> | |
xnoremap <silent> [Space]gj :<C-u>ToggleGJK<CR> | |
function! s:ToggleGJK() | |
if exists('b:enable_mapping_gjk') && b:enable_mapping_gjk | |
let b:enable_mapping_gjk = 0 | |
noremap <buffer> j j | |
noremap <buffer> k k | |
noremap <buffer> gj gj | |
noremap <buffer> gk gk | |
xnoremap <buffer> j j | |
xnoremap <buffer> k k | |
xnoremap <buffer> gj gj | |
xnoremap <buffer> gk gk | |
else | |
let b:enable_mapping_gjk = 1 | |
noremap <buffer> j gj | |
noremap <buffer> k gk | |
noremap <buffer> gj j | |
noremap <buffer> gk k | |
xnoremap <buffer> j gj | |
xnoremap <buffer> k gk | |
xnoremap <buffer> gj j | |
xnoremap <buffer> gk k | |
endif | |
endfunction"}}} | |
" Change tab width. "{{{ | |
nnoremap <silent> [Space]t2 :<C-u>setl shiftwidth=2 softtabstop=2<CR> | |
nnoremap <silent> [Space]t4 :<C-u>setl shiftwidth=4 softtabstop=4<CR> | |
nnoremap <silent> [Space]t8 :<C-u>setl shiftwidth=8 softtabstop=8<CR> | |
"}}} | |
"}}} | |
" s: Windows and buffers(High priority) "{{{ | |
" The prefix key. | |
nnoremap [Window] <Nop> | |
nmap s [Window] | |
nnoremap <silent> [Window]p :<C-u>call <SID>split_nicely()<CR> | |
nnoremap <silent> [Window]v :<C-u>vsplit<CR> | |
nnoremap <silent> [Window]c :<C-u>call <sid>smart_close()<CR> | |
nnoremap <silent> - :<C-u>call <sid>smart_close()<CR> | |
nnoremap <silent> [Window]o :<C-u>only<CR> | |
" A .vimrc snippet that allows you to move around windows beyond tabs | |
nnoremap <silent> <Tab> :call <SID>NextWindow()<CR> | |
nnoremap <silent> <S-Tab> :call <SID>PreviousWindowOrTab()<CR> | |
function! s:smart_close() | |
if winnr('$') != 1 | |
close | |
endif | |
endfunction | |
function! s:NextWindow() | |
if winnr('$') == 1 | |
silent! normal! ``z. | |
else | |
wincmd w | |
endif | |
endfunction | |
function! s:NextWindowOrTab() | |
if tabpagenr('$') == 1 && winnr('$') == 1 | |
call s:split_nicely() | |
elseif winnr() < winnr("$") | |
wincmd w | |
else | |
tabnext | |
1wincmd w | |
endif | |
endfunction | |
function! s:PreviousWindowOrTab() | |
if winnr() > 1 | |
wincmd W | |
else | |
tabprevious | |
execute winnr("$") . "wincmd w" | |
endif | |
endfunction | |
nnoremap <silent> [Window]<Space> :<C-u>call <SID>ToggleSplit()<CR> | |
" If window isn't splited, split buffer. | |
function! s:ToggleSplit() | |
let prev_name = winnr() | |
silent! wincmd w | |
if prev_name == winnr() | |
SplitNicely | |
else | |
call s:smart_close() | |
endif | |
endfunction | |
" Split nicely."{{{ | |
command! SplitNicely call s:split_nicely() | |
function! s:split_nicely() | |
" Split nicely. | |
if winwidth(0) > 2 * &winwidth | |
vsplit | |
else | |
split | |
endif | |
wincmd p | |
endfunction | |
"}}} | |
" Delete current buffer."{{{ | |
nnoremap <silent> [Window]d :<C-u>call <SID>CustomBufferDelete(0)<CR> | |
" Force delete current buffer. | |
nnoremap <silent> [Window]D :<C-u>call <SID>CustomBufferDelete(1)<CR> | |
function! s:CustomBufferDelete(is_force) | |
let current = bufnr('%') | |
call unite#util#alternate_buffer() | |
if a:is_force | |
silent! execute 'bdelete! ' . current | |
else | |
silent! execute 'bdelete ' . current | |
endif | |
endfunction | |
"}}} | |
" JunkFile | |
nnoremap <silent> [Window]e :<C-u>JunkFile<CR> | |
"}}} | |
" e: Change basic commands "{{{ | |
" The prefix key. | |
nnoremap [Alt] <Nop> | |
xnoremap [Alt] <Nop> | |
nmap e [Alt] | |
xmap e [Alt] | |
" Indent paste. | |
nnoremap <silent> [Alt]p o<Esc>pm``[=`]``^ | |
xnoremap <silent> [Alt]p o<Esc>pm``[=`]``^ | |
nnoremap <silent> [Alt]P O<Esc>Pm``[=`]``^ | |
xnoremap <silent> [Alt]P O<Esc>Pm``[=`]``^ | |
" Insert blank line. | |
nnoremap <silent> [Alt]o o<Space><BS><ESC> | |
nnoremap <silent> [Alt]O O<Space><BS><ESC> | |
" Yank to end line. | |
nmap [Alt]y y$ | |
nmap Y y$ | |
nnoremap x "_x | |
" Useless commands | |
nnoremap [Alt]; ; | |
nnoremap [Alt], , | |
"}}} | |
" q: Quickfix "{{{ | |
" The prefix key. | |
nnoremap [Quickfix] <Nop> | |
nmap q [Quickfix] | |
" Disable Ex-mode. | |
nnoremap Q q | |
" Toggle quickfix window. | |
nnoremap <silent> [Quickfix]<Space> | |
\ :<C-u>call <SID>toggle_quickfix_window()<CR> | |
function! s:toggle_quickfix_window() | |
let _ = winnr('$') | |
cclose | |
if _ == winnr('$') | |
copen | |
setlocal nowrap | |
setlocal whichwrap=b,s | |
endif | |
endfunction | |
"}}} | |
" Jump mark can restore column."{{{ | |
nnoremap \ ` | |
" Useless command. | |
nnoremap M m | |
"}}} | |
" Smart <C-f>, <C-b>. | |
nnoremap <silent> <C-f> <C-f> | |
nnoremap <silent> <C-b> <C-b> | |
" Disable ZZ. | |
nnoremap ZZ <Nop> | |
" Like gv, but select the last changed text. | |
nnoremap gc `[v`] | |
" Specify the last changed text as {motion}. | |
vnoremap <silent> gc :<C-u>normal gc<CR> | |
onoremap <silent> gc :<C-u>normal gc<CR> | |
" Auto escape / and ? in search command. | |
cnoremap <expr> / getcmdtype() == '/' ? '\/' : '/' | |
" Smart }."{{{ | |
nnoremap <silent> } :<C-u>call ForwardParagraph()<CR> | |
onoremap <silent> } :<C-u>call ForwardParagraph()<CR> | |
xnoremap <silent> } <Esc>:<C-u>call ForwardParagraph()<CR>mzgv`z | |
function! ForwardParagraph() | |
let cnt = v:count ? v:count : 1 | |
let i = 0 | |
while i < cnt | |
if !search('^\s*\n.*\S','W') | |
normal! G$ | |
return | |
endif | |
let i = i + 1 | |
endwhile | |
endfunction | |
"}}} | |
" Smart home and smart end."{{{ | |
nnoremap <silent> gh :<C-u>call SmartHome("n")<CR> | |
nnoremap <silent> gl :<C-u>call SmartEnd("n")<CR> | |
xnoremap <silent> gh <ESC>:<C-u>call SmartHome("v")<CR> | |
xnoremap <silent> gl <ESC>:<C-u>call SmartEnd("v")<CR> | |
" Smart home function"{{{ | |
function! SmartHome(mode) | |
let curcol = col('.') | |
if &wrap | |
normal! g^ | |
else | |
normal! ^ | |
endif | |
if col('.') == curcol | |
if &wrap | |
normal! g0 | |
else | |
normal! 0 | |
endif | |
endif | |
if a:mode == "v" | |
normal! msgv`s | |
endif | |
return "" | |
endfunction"}}} | |
" Smart end function"{{{ | |
function! SmartEnd(mode) | |
let curcol = col('.') | |
let lastcol = a:mode ==# 'i' ? col('$') : col('$') - 1 | |
" Gravitate towards ending for wrapped lines | |
if curcol < lastcol - 1 | |
call cursor(0, curcol + 1) | |
endif | |
if curcol < lastcol | |
if &wrap | |
normal! g$ | |
else | |
normal! $ | |
endif | |
else | |
normal! g_ | |
endif | |
" Correct edit mode cursor position, put after current character | |
if a:mode == "i" | |
call cursor(0, col(".") + 1) | |
endif | |
if a:mode == "v" | |
normal! msgv`s | |
endif | |
return "" | |
endfunction "}}} | |
"}}} | |
" Jump to a line and the line of before and after of the same indent."{{{ | |
" Useful for Python. | |
nnoremap <silent> g{ :<C-u>call search('^' . | |
\ matchstr(getline(line('.') + 1), '\(\s*\)') .'\S', 'b')<CR>^ | |
nnoremap <silent> g} :<C-u>call search('^' . | |
\ matchstr(getline(line('.')), '\(\s*\)') .'\S')<CR>^ | |
"}}} | |
" Select rectangle. | |
xnoremap r <C-v> | |
" Select until end of current line in visual mode. | |
xnoremap v $h | |
" Paste next line. | |
nnoremap <silent> gp o<ESC>p^ | |
nnoremap <silent> gP O<ESC>P^ | |
xnoremap <silent> gp o<ESC>p^ | |
xnoremap <silent> gP O<ESC>P^ | |
" Redraw. | |
nnoremap <silent> <C-l> :<C-u>redraw!<CR> | |
" Folding."{{{ | |
" If press h on head, fold close. | |
"nnoremap <expr> h col('.') == 1 && foldlevel(line('.')) > 0 ? 'zc' : 'h' | |
" If press l on fold, fold open. | |
nnoremap <expr> l foldclosed(line('.')) != -1 ? 'zo0' : 'l' | |
" If press h on head, range fold close. | |
"xnoremap <expr> h col('.') == 1 && foldlevel(line('.')) > 0 ? 'zcgv' : 'h' | |
" If press l on fold, range fold open. | |
xnoremap <expr> l foldclosed(line('.')) != -1 ? 'zogv0' : 'l' | |
noremap [Space]j zj | |
noremap [Space]k zk | |
noremap [Space]h zc | |
noremap [Space]l zo | |
noremap [Space]a za | |
noremap [Space]m zM | |
noremap [Space]i zMzv | |
noremap [Space]rr zR | |
noremap [Space]f zf | |
noremap [Space]d zd | |
noremap [Space]u :<C-u>Unite outline:foldings<CR> | |
noremap [Space]gg :<C-u>echo FoldCCnavi()<CR> | |
"}}} | |
" Substitute. | |
xnoremap s :s//g<Left><Left> | |
" Sticky shift in English keyboard."{{{ | |
" Sticky key. | |
inoremap <expr> ; <SID>sticky_func() | |
cnoremap <expr> ; <SID>sticky_func() | |
snoremap <expr> ; <SID>sticky_func() | |
function! s:sticky_func() | |
let sticky_table = { | |
\',' : '<', '.' : '>', '/' : '?', | |
\'1' : '!', '2' : '@', '3' : '#', '4' : '$', '5' : '%', | |
\'6' : '^', '7' : '&', '8' : '*', '9' : '(', '0' : ')', '-' : '_', '=' : '+', | |
\';' : ':', '[' : '{', ']' : '}', '`' : '~', "'" : "\"", '\' : '|', | |
\} | |
let special_table = { | |
\"\<ESC>" : "\<ESC>", "\<Space>" : ';', "\<CR>" : ";\<CR>" | |
\} | |
if mode() !~# '^c' | |
echo 'Input sticky key: ' | |
endif | |
let char = '' | |
while char == '' | |
let char = nr2char(getchar()) | |
endwhile | |
if char =~ '\l' | |
return toupper(char) | |
elseif has_key(sticky_table, char) | |
return sticky_table[char] | |
elseif has_key(special_table, char) | |
return special_table[char] | |
else | |
return '' | |
endif | |
endfunction | |
"}}} | |
" Easy escape."{{{ | |
inoremap jj <ESC> | |
" inoremap <expr> j getline('.')[col('.') - 2] ==# 'j' ? "\<BS>\<ESC>" : 'j' | |
cnoremap <expr> j getcmdline()[getcmdpos()-2] ==# 'j' ? "\<BS>\<C-c>" : 'j' | |
onoremap jj <ESC> | |
inoremap j<Space> j | |
onoremap j<Space> j | |
"}}} | |
" Execute countable 'n.'. | |
" EXAMPLE: 3@n | |
let @n='n.' | |
" a>, i], etc... "{{{ | |
" <angle> | |
onoremap aa a> | |
xnoremap aa a> | |
onoremap ia i> | |
xnoremap ia i> | |
" [rectangle] | |
onoremap ar a] | |
xnoremap ar a] | |
onoremap ir i] | |
xnoremap ir i] | |
" 'quote' | |
onoremap aq a' | |
xnoremap aq a' | |
onoremap iq i' | |
xnoremap iq i' | |
" "double quote" | |
onoremap ad a" | |
xnoremap ad a" | |
onoremap id i" | |
xnoremap id i" | |
"}}} | |
" Move to top/center/bottom. | |
noremap <expr> zz (winline() == (winheight(0)+1)/ 2) ? | |
\ 'zt' : (winline() == 1)? 'zb' : 'zz' | |
" Capitalize. | |
nnoremap gu <ESC>gUiw`] | |
inoremap <C-q> <ESC>gUiw`]a | |
" Clear highlight. | |
nnoremap <ESC><ESC> :nohlsearch<CR> | |
" operator-html-escape.vim | |
nmap <Leader>h <Plug>(operator-html-escape) | |
xmap <Leader>h <Plug>(operator-html-escape) | |
" Easily macro. | |
nnoremap @@ @a | |
" Improved visual selection.{{{ | |
" http://labs.timedia.co.jp/2012/10/vim-more-useful-blockwise-insertion.html | |
xnoremap <expr> I <SID>force_blockwise_visual('I') | |
xnoremap <expr> A <SID>force_blockwise_visual('A') | |
function! s:force_blockwise_visual(next_key) "{{{ | |
if mode() ==# 'v' | |
return "\<C-v>" . a:next_key | |
elseif mode() ==# 'V' | |
return "\<C-v>0o$" . a:next_key | |
else " mode() ==# "\<C-v>" | |
return a:next_key | |
endif | |
endfunction}}} | |
"}}} | |
" Improved increment. | |
nmap <C-a> <SID>(increment) | |
nmap <C-x> <SID>(decrement) | |
nnoremap <silent> <SID>(increment) :AddNumbers 1<CR> | |
nnoremap <silent> <SID>(decrement) :AddNumbers -1<CR> | |
command! -range -nargs=1 AddNumbers | |
\ call s:add_numbers((<line2>-<line1>+1) * eval(<args>)) | |
function! s:add_numbers(num) | |
let prev_line = getline('.')[: col('.')-1] | |
let next_line = getline('.')[col('.') :] | |
let prev_num = matchstr(prev_line, '\d\+$') | |
if prev_num != '' | |
let next_num = matchstr(next_line, '^\d\+') | |
let new_line = prev_line[: -len(prev_num)-1] . | |
\ printf('%0'.len(prev_num).'d', | |
\ max([0, prev_num . next_num + a:num])) . next_line[len(next_num):] | |
else | |
let new_line = prev_line . substitute(next_line, '\d\+', | |
\ "\\=printf('%0'.len(submatch(0)).'d', | |
\ max([0, submatch(0) + a:num]))", '') | |
endif | |
if getline('.') !=# new_line | |
call setline('.', new_line) | |
endif | |
endfunction | |
"}}} | |
"--------------------------------------------------------------------------- | |
" Commands:"{{{ | |
" | |
" Toggle options. "{{{ | |
function! ToggleOption(option_name) | |
execute 'setlocal' a:option_name.'!' | |
execute 'setlocal' a:option_name.'?' | |
endfunction "}}} | |
" Toggle variables. "{{{ | |
function! ToggleVariable(variable_name) | |
if eval(a:variable_name) | |
execute 'let' a:variable_name.' = 0' | |
else | |
execute 'let' a:variable_name.' = 1' | |
endif | |
echo printf('%s = %s', a:variable_name, eval(a:variable_name)) | |
endfunction "}}} | |
" Display diff with the file. | |
command! -nargs=1 -complete=file Diff vertical diffsplit <args> | |
" Display diff from last save. | |
command! DiffOrig vert new | setlocal bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis | |
" Disable diff mode. | |
command! -nargs=0 Undiff setlocal nodiff noscrollbind wrap | |
" Open junk file."{{{ | |
command! -nargs=0 JunkFile call s:open_junk_file() | |
function! s:open_junk_file() | |
let junk_dir = $HOME . '/.vim_junk'. strftime('/%Y/%m') | |
if !isdirectory(junk_dir) | |
call mkdir(junk_dir, 'p') | |
endif | |
let filename = input('Junk Code: ', junk_dir.strftime('/%Y-%m-%d-%H%M%S.')) | |
if filename != '' | |
execute 'edit ' . filename | |
endif | |
endfunction"}}} | |
" :HighlightWith {filetype} ['a 'b] XXX: Don't work in some case."{{{ | |
command! -nargs=+ -range=% HighlightWith <line1>,<line2>call s:highlight_with(<q-args>) | |
" xnoremap [Space]h q:HighlightWith<Space> | |
function! s:highlight_with(args) range | |
if a:firstline == 1 && a:lastline == line('$') | |
return | |
endif | |
let c = get(b:, 'highlight_count', 0) | |
let ft = matchstr(a:args, '^\w\+') | |
if globpath(&rtp, 'syntax/' . ft . '.vim') == '' | |
return | |
endif | |
unlet! b:current_syntax | |
let save_isk= &l:isk " For scheme. | |
execute printf('syntax include @highlightWith%d syntax/%s.vim', | |
\ c, ft) | |
let &l:isk= save_isk | |
execute printf('syntax region highlightWith%d start=/\%%%dl/ end=/\%%%dl$/ ' | |
\ . 'contains=@highlightWith%d', | |
\ c, a:firstline, a:lastline, c) | |
let b:highlight_count = c + 1 | |
endfunction"}}} | |
" For git update in current directory. | |
command! GitPullAll call s:git_pull_all() | |
function! s:git_pull_all() | |
let current_dir = getcwd() | |
let cnt = 1 | |
let dirs = map(split(glob('*/.git'), '\n'), 'fnamemodify(v:val, ":p:h:h")') | |
let max = len(dirs) | |
for dir in filter(dirs, " | |
\ glob(v:val.'/*/*.vim') != '' || | |
\ glob(v:val.'/*/*/*.vim') != '' || | |
\ glob(v:val.'/*/*/*/*.vim') != ''") | |
lcd `=dir` | |
redraw | |
echo printf('%d/%d git pull in %s', cnt, max, dir) | |
let output = vimproc#system('git pull') | |
if vimproc#get_last_status() | |
echohl WarningMsg | echomsg output | echohl None | |
endif | |
echo '' | |
let cnt += 1 | |
endfor | |
echo 'Done!' | |
lcd `=current_dir` | |
endfunction | |
"}}} | |
"--------------------------------------------------------------------------- | |
" Functions:"{{{ | |
" | |
function! SnipMid(str, len, mask) "{{{ | |
if a:len >= len(a:str) | |
return a:str | |
elseif a:len <= len(a:mask) | |
return a:mask | |
endif | |
let len_head = (a:len - len(a:mask)) / 2 | |
let len_tail = a:len - len(a:mask) - len_head | |
return (len_head > 0 ? a:str[: len_head - 1] : '') | |
\ . a:mask . (len_tail > 0 ? a:str[-len_tail :] : '') | |
endfunction"}}} | |
"}}} | |
"--------------------------------------------------------------------------- | |
" Platform depends:"{{{ | |
" | |
if s:is_windows | |
" For Windows"{{{ | |
" In Windows, can't find exe, when $PATH isn't contained $VIM. | |
if $PATH !~? '\(^\|;\)' . escape($VIM, '\\') . '\(;\|$\)' | |
let $PATH = $VIM . ';' . $PATH | |
endif | |
" Shell settings. | |
" Use NYAOS. | |
"set shell=nyaos.exe | |
"set shellcmdflag=-e | |
"set shellpipe=\|&\ tee | |
"set shellredir=>%s\ 2>&1 | |
"set shellxquote=\" | |
" Use bash. | |
"set shell=bash.exe | |
"set shellcmdflag=-c | |
"set shellpipe=2>&1\|\ tee | |
"set shellredir=>%s\ 2>&1 | |
"set shellxquote=\" | |
" Change colorscheme. | |
" Don't override colorscheme. | |
if !exists('g:colors_name') && !has('gui_running') | |
colorscheme darkblue | |
endif | |
" Disable error messages. | |
let g:CSApprox_verbose_level = 0 | |
" Popup color. | |
hi Pmenu ctermbg=8 | |
hi PmenuSel ctermbg=1 | |
hi PmenuSbar ctermbg=0 | |
"}}} | |
else | |
" For Linux"{{{ | |
if exists('$WINDIR') | |
" Cygwin. | |
" Use bash. | |
set shell=bash | |
else | |
" Use zsh. | |
set shell=zsh | |
endif | |
" Set path. | |
let $PATH = expand('~/bin').':/usr/local/bin/:'.$PATH | |
" For non GVim. | |
if !has('gui_running') | |
" Enable 256 color terminal. | |
if !exists('$TMUX') | |
set t_Co=256 | |
" For screen."{{{ | |
if &term =~ '^screen' | |
augroup MyAutoCmd | |
" Show filename on screen statusline. | |
" But invalid 'another' screen buffer. | |
autocmd BufEnter * if $WINDOW != 0 && | |
\ bufname("") !~ "[A-Za-z0-9\]*://" | |
\ | silent! exe '!echo -n "kv:%:t\\"' | endif | |
" When 'mouse' isn't empty, Vim will freeze. Why? | |
autocmd VimLeave * :set mouse= | |
augroup END | |
" For Vim inside screen. | |
set ttymouse=xterm2 | |
endif | |
" For prevent bug. | |
autocmd MyAutoCmd VimLeave * set term=screen | |
"}}} | |
endif | |
if has('gui') | |
" Use CSApprox.vim | |
NeoBundleSource csapprox | |
" Convert colorscheme in Konsole. | |
let g:CSApprox_konsole = 1 | |
let g:CSApprox_attr_map = { | |
\ 'bold' : 'bold', | |
\ 'italic' : '', 'sp' : '' | |
\ } | |
if !exists('g:colors_name') | |
colorscheme candy | |
endif | |
else | |
" Use guicolorscheme.vim | |
NeoBundleSource vim-guicolorscheme | |
autocmd MyAutoCmd VimEnter,BufAdd * | |
\ if !exists('g:colors_name') | GuiColorScheme candy | |
" Disable error messages. | |
let g:CSApprox_verbose_level = 0 | |
endif | |
" Change cursor shape. | |
if &term =~ "xterm" | |
let &t_SI = "\<Esc>]12;lightgreen\x7" | |
let &t_EI = "\<Esc>]12;white\x7" | |
endif | |
endif | |
"}}} | |
endif | |
"}}} | |
"--------------------------------------------------------------------------- | |
" Others:"{{{ | |
" | |
" Enable mouse support. | |
set mouse=a | |
" If true Vim master, use English help file. | |
set helplang& helplang=en,ja | |
" Default home directory. | |
let t:cwd = getcwd() | |
"}}} | |
if !has('vim_starting') | |
call neobundle#call_hook('on_source') | |
endif | |
set secure |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment