scriptencoding utf8 "------------------- "-- Recipe Menu -- "------------------- " -- Parameter " -- Local_Function " -- Initialize " -- Plugin_Manage " -- Plugin_Configure " -- View_Setting " -- Action_Setting " -- Inner_Setting " -- Event_Method " -- Command_Util " -- Key_Mapping " -- File_Type " -- Environment_Pref " --- "----------------------------" " Target of this config " " - UNIX Type " " - Cygwin " " - Windows Kaoriya GVim " "----------------------------" " Eigo - Ingulisshu " "----------------------------" " Ideas {{{ "-- View prev and next fold head text ...on echo or other buffer ? on submode-foldings "-- Unite outline -> view C-Sharp <summary>~</summary> " }}} " Issues {{{ "-- C-o hard use on vimshell "-- automatic mkdir './C:' when execute NeoBundleInstall in windows kaoriya " -- does neobundle thinks that is repository...? "-- doesn't conceal-javadoc functioned ? "-- shot-f not functioned in i_<C-o> temporary normal mode "-- couldn't auto make vimproc at anywhere "-- conflicted? vim-ruby and rspec.vim when those was set NeoBundleLazy " -- does not loaded syntax of rspec.vim "-- incsearch.vim(?) throw an exception E874 when searched '<leader>~' "-- Exeption happened when input '.*' to unite textarea "-- 'cs' sneppet 'pragma' circulated with 'warning' in neosnippet-snippets "-- OverCommandLine throw (E803: ID not found: 1011) when press % some times. " -- but doesn't happned some times. "}}} " Todo {{{ "-- Eigo translate to English in this file "-- read help options.jax "-- read help windows.txt "-- read help 'cino' " }}} "---------------------------------------- " {- Hints -} " " @Bugs => This hoge has the bugs. " @Incompleted => This is not completed making. " @Unchecked => This was not unchecked that is operate right " @Unsupported => Do not supported functions when now. " @Unknowned => I don't know why this functioned. " /人◕ ‿‿ ◕人\ < Wakega wakaranaiyo! " @Unused => Not used this yet now, needs inquires deleting this. " @Deprecated => Deprecated This vimrc Version. " @Experiment => This is experimental implementation. " @Marked => I have eye on this. " @See => Referred URL, Saw Document, and etc... " @Code => A sample code using it "------------------- " Designating the target platform. " @Hoge{Win|Ubuntu} : This Hint for Win and Ubuntu. " @Hoge!{Mac} : This Hint for other than Mac. "---------------------------------------- " {- Booked something -} " mark Z => comand[BufMoveNewTab] " register z => inoremap[<C-k>Y] "---------------------------------------- "---------------------" " Parameter " "---------------------" "{{{ let g:vimrc = get(g:, 'vimrc', {}) let g:vimrc['loaded'] = get(g:vimrc, 'loaded', 0) let s:is_windows = has('win32') let s:is_cygwin = has('win32unix') let s:is_kaoriya = has('kaoriya') let s:is_doswin = s:is_windows && !s:is_cygwin && !has('gui') let s:is_unix = has('unix') let s:is_mac = has('mac') let s:is_mac_osx = has('macunix') let s:has_cygwin = isdirectory('/cygwin') let s:has_mingw = 0 "@Incomplete('dummy') let s:vim_home = expand('~/.vim') let s:backupdir = expand('~/.backup/vim_backup') let s:directory = s:backupdir . '/swp' let s:undodir = s:backupdir . '/undo' let s:viewdir = s:backupdir . '/view' let s:username = $USER let s:groupname = $GROUP !=# '' ? $GROUP : $USER "}}} "---------------------" " Local_Function " "---------------------" "{{{ function! s:system(cmd) if exists('*vimproc#system') return vimproc#system(a:cmd) else return system(a:cmd) endif endfunction function! s:echo_error(msg) echohl Error echo a:msg echohl None endfunction "}}} "-------------------------" " Initialize " "-------------------------" " autocmd Groups {{{ augroup PluginPrefs autocmd! augroup END augroup FileEvent autocmd! augroup END augroup ExtensionType autocmd! augroup END augroup HighlightPref autocmd! augroup END augroup KeyMapping autocmd! augroup END augroup KeyEvent autocmd! augroup END "}}} " For Support Kaoriya Vim {{{ if s:is_kaoriya " Set Environment let $HOME = $VIM let s:vim_home = expand('~/.vim') " Reset with $HOME let &runtimepath = &runtimepath . ',' . s:vim_home if s:has_cygwin let $PATH = '/cygwin/bin;/cygwin/usr/bin;/cygwin/usr/sbin;' . $PATH let $PATH = $HOME . '/bin;' . $PATH endif " Build Base Directories if !isdirectory(s:vim_home) call mkdir(s:vim_home) endif " For Using No Default vimproc let s:switch_dir = $VIM . '/switches/enabled' let s:suppress = s:switch_dir . '/disable-vimproc.vim' if s:is_windows && !s:has_mingw && filereadable(s:suppress) call delete(s:suppress) elseif s:is_windows && s:has_mingw && !filereadable(s:suppress) call writefile([], s:suppress) endif for s:disf in map(['/utf-8.vim', '/vimdoc-ja.vim'], 's:switch_dir . v:val') if !filereadable(s:disf) call writefile([], s:disf) endif endfor unlet s:switch_dir s:suppress s:disf " Unset Kaoriya Preference set noignorecase nosmartcase augroup FileEvent autocmd BufRead $MYVIMRC setl enc=utf8 fenc=utf8 augroup END endif "}}} " Check NeoBundle exists {{{ let s:bundledir = s:vim_home . '/bundle' let s:neobundledir = s:bundledir . '/neobundle.vim' if !isdirectory(s:bundledir) call mkdir(s:bundledir) endif function! s:remove_empty_bundledir() "{{{ let l:dirs = split(s:system('ls ' . s:bundledir), '\n') for l:dir in l:dirs let l:plugin_dir = s:bundledir . '/' . l:dir let l:is_empty = s:system('ls ' . l:plugin_dir) ==# '' if l:is_empty call s:system('rmdir ' . l:plugin_dir) endif endfor endfunction "}}} function! s:fetch_neobundle() " {{{ if executable('git') echo 'NeoBundle was not installed...' echo 'Installing NeoBundle.' execute '!git clone http://github.com/Shougo/neobundle.vim ' s:neobundledir return else call s:echo_error('Sorry, You do not have git command.') call s:echo_error('Cannot introduce NeoBundle.') throw 'neobundle.vim clone failed.' endif endfunction " }}} if has('vim_starting') try let &runtimepath = &runtimepath . ',' . s:vim_home . '/bundle/neobundle.vim' " Throws Error when nothing neobundle in runtime path call neobundle#begin() catch if isdirectory(s:neobundledir) && !exists(':NeoBundle') " Plugin Directories may be empty when git cloned new. call s:remove_empty_bundledir() echo 'bundle directories initialized.' endif try call s:fetch_neobundle() call neobundle#begin() echo 'NeoBundle installed.' echo 'Please closing vim and reopening vim once,' echo 'and executing :NeoBundleInstall .' catch call s:echo_error('neobundle.vim clone failed.') call s:echo_error('>> Vim Config Error <<') endtry endtry endif unlet s:neobundledir unlet s:bundledir "}}} " Check Backup, Swap and Undo directory exists {{{ if !isdirectory(s:backupdir) call mkdir(s:backupdir, 'p', 0700) call s:system(printf('chown -R %s:%s %s', s:username, s:groupname, s:backupdir)) endif if !isdirectory(s:directory) call mkdir(s:directory, 'p', 0700) call s:system(printf('chown -R %s:%s %s', s:username, s:groupname, s:directory)) endif if !isdirectory(s:undodir) call mkdir(s:undodir, 'p', 0700) call s:system(printf('chown -R %s:%s %s', s:username, s:groupname, s:undodir)) endif "}}} " Enable matchit.vim {{{ if !exists('loaded_matchit') " Load it runtime macros/matchit.vim " If I don't have matchit document, I get it let s:matchit_doc_from = expand('$VIMRUNTIME/macros/matchit.txt') let s:matchit_doc_to = expand('~/.vim/doc/matchit.txt') if !filereadable(s:matchit_doc_to) call writefile(readfile(s:matchit_doc_from), s:matchit_doc_to) endif unlet s:matchit_doc_to unlet s:matchit_doc_from endif "}}} "-------------------------" " Plugin_Manage " "-------------------------" "*** Plugin List ***"{{{ NeoBundleFetch 'Shougo/neobundle.vim' NeoBundleLazy 'basyura/twibill.vim' NeoBundle 'tyru/open-browser.vim' NeoBundleLazy 'basyura/bitly.vim' NeoBundle 'Shougo/unite.vim' NeoBundle 'Shougo/vimproc.vim' NeoBundleLazy 'basyura/TweetVim' NeoBundle 'mattn/webapi-vim' NeoBundle 'Shougo/vimshell.vim' NeoBundle 'rhysd/wandbox-vim' NeoBundle 'thinca/vim-quickrun' NeoBundleLazy 'kashewnuts/gmail.vim' NeoBundleLazy 'basyura/J6uil.vim' NeoBundle 'osyo-manga/vim-gyazo' NeoBundle 'yuratomo/w3m.vim' NeoBundle 'mattn/learn-vimscript' NeoBundleLazy 'rbtnn/vimconsole.vim' NeoBundle 'supermomonga/thingspast.vim' NeoBundle 'supermomonga/vimshell-kawaii.vim' NeoBundle 'mattn/excitetranslate-vim' NeoBundle 'mattn/unite-advent_calendar' NeoBundleLazy 'thinca/vim-splash' NeoBundle 'supermomonga/jazzradio.vim' NeoBundle 'mattn/favstar-vim' NeoBundle 'ujihisa/unite-colorscheme' NeoBundle 'Shougo/vinarise.vim' NeoBundle 'mattn/gist-vim' NeoBundle 'thinca/vim-ref' NeoBundle 'ujihisa/ref-hoogle' NeoBundleLazy 'vim-jp/vital.vim' NeoBundle 'Shougo/unite-outline' NeoBundleLazy 'rbtnn/puyo.vim' NeoBundleLazy 'mattn/benchvimrc-vim' NeoBundleLazy 'mattn/yamada-vim' NeoBundleLazy 'jvoorhis/coq.vim' NeoBundleLazy 'eagletmt/coqtop-vim' NeoBundle 'rhysd/vim-grammarous' NeoBundleLazy 'thinca/vim-themis' NeoBundle 'tomasr/molokai' NeoBundle 'aiya000/arot13.vim' NeoBundle 'aiya000/ahoge-put.vim' NeoBundleLazy 'kannokanno/previm' NeoBundle 'kamichidu/vim-vdbc' NeoBundle 'mattn/vdbi-vim' NeoBundle 'LeafCage/foldCC' NeoBundleLazy 'katono/rogue.vim' NeoBundle 'aiya000/asql.vim' NeoBundleLazy 'kamichidu/vim-benchmark' NeoBundle 'kana/vim-submode' NeoBundle 'mfumi/ref-dicts-en' NeoBundle 'thinca/vim-painter' NeoBundle 'osyo-manga/vim-anzu' NeoBundle 'osyo-manga/vim-over' NeoBundle 'tyru/restart.vim' NeoBundle 'vim-jp/vimdoc-ja' NeoBundleLazy 'rbtnn/game_engine.vim' NeoBundle 'h1mesuke/vim-alignta' NeoBundle 'haya14busa/incsearch.vim' NeoBundle 'thinca/vim-scouter' NeoBundle 'deris/vim-shot-f' NeoBundle 'oplatek/Conque-Shell' NeoBundle 'sgelb/TaskList.vim' NeoBundle 'tyru/vim-altercmd' NeoBundle 'mbbill/undotree' NeoBundle 'Shougo/neomru.vim' NeoBundle 'aiya000/adrone.vim' NeoBundleFetch 'Shougo/fakecygpty' NeoBundle 'nathanaelkane/vim-indent-guides' NeoBundleLazy 'LeafCage/vimhelpgenerator' NeoBundleLazy 'thinca/vim-threes' NeoBundle 'vim-ruby/vim-ruby' NeoBundle 'Keithbsmiley/rspec.vim' NeoBundle 'tsukkee/unite-help' NeoBundle 'altercation/vim-colors-solarized' NeoBundle 'aiya000/aho-bakaup.vim' NeoBundleLazy 'yaasita/ore_markdown' NeoBundle 'chrisbra/vim-diff-enhanced' NeoBundle 'Shougo/neosnippet.vim' NeoBundle 'Shougo/neosnippet-snippets' call neobundle#end() "}}} "*** Plugin Depends and Auto Config ***" {{{ call neobundle#config('vimproc.vim', { \ 'build' : { \ 'unix' : 'make -f make_unix.mak', \ 'mac' : 'make -f make_mac.mak', \ 'cygwin' : 'make -f make_cygwin.mak', \ 'windows' : 'make -f make_mingw32.mak' \ } \}) call neobundle#config('TweetVim', { \ 'depends' : [ \ 'basyura/twibill.vim', \ 'tyru/open-browser.vim', \ 'h1mesuke/unite-outline', \ 'basyura/bitly.vim', \ 'Shougo/unite.vim', \ 'Shougo/vimproc.vim', \ 'mattn/favstar-vim' \ ], \ 'autoload' : {'commands' : 'TweetVim'} \}) call neobundle#config('vimshell.vim', { \ 'depends' : 'Shougo/vimproc.vim' \}) call neobundle#config('gmail.vim', { \ 'depends' : 'Shougo/vimproc.vim', \ 'autoload' : {'commands' : 'Gmail'} \}) call neobundle#config('J6uil.vim', { \ 'depends' : [ \ 'mattn/webapi-vim', \ 'Shougo/vimproc.vim', \ 'tyru/open-browser.vim', \ 'Shougo/unite.vim' \ ], \ 'autoload' : {'commands' : 'J6uil'} \}) call neobundle#config('vim-gyazo', { \ 'depends' : [ \ 'tyru/open-browser.vim', \ 'basyura/TweetVim' \ ] \}) call neobundle#config('vimshell-kawaii.vim', { \ 'depends' : 'Shougo/vimshell.vim' \}) call neobundle#config('vimconsole.vim', { \ 'autoload' : {'filetypes' : 'vim'} \}) call neobundle#config('vim-splash', { \ 'autoload' : {'commands' : 'Splash'} \}) "@Experimental('config moved to here') call neobundle#config('jazzradio.vim', { \ 'autoload' : { \ 'unite_sources' : ['jazzradio'], \ 'commands' : [ \ 'JazzradioUpdateChannels', \ 'JazzradioStop', { \ 'name' : 'JazzradioPlay', \ 'complete' : 'customlist,jazzradio#channel_id_comlete' \ } \ ], \ 'function_prefix' : 'Jazzradio', \ 'depends' : 'Shougo/unite.vim' \ } \}) call neobundle#config('ref-hoogle', { \ 'depends' : 'thinca/vim-ref' \}) call neobundle#config('vital.vim', { \ 'autoload' : {'filetypes' : 'vim'} \}) call neobundle#config('puyo.vim', { \ 'autoload' : {'commands' : 'Puyo'}, \ 'depends' : 'rbtnn/game_engine.vim' \}) call neobundle#config('benchvimrc-vim', { \ 'autoload' : {'commands' : 'BenchVimrc'} \}) call neobundle#config('yamada-vim', { \ 'autoload' : {'commands' : 'Yamada'} \}) call neobundle#config('coq.vim', { \ 'autoload' : {'filetypes' : 'coq'} \}) call neobundle#config('coqtop-vim', { \ 'autoload' : {'filetypes' : 'coq'}, \ 'depends' : 'Shougo/vimproc.vim' \}) call neobundle#config('vim-grammarous', { \ 'disabled' : !executable('java') \}) call neobundle#config('vim-themis', { \ 'autoload' : {'filetypes' : [ \ 'vim', \ 'vimspec' \ ]} \}) call neobundle#config('previm', { \ 'autoload' : {'filetypes' : 'markdown'} \}) call neobundle#config('rogue.vim', { \ 'autoload' : {'commands' : [ \ 'Rogue', \ 'RogueRestore', \ 'RogueResume', \ 'RogueScores' \ ]} \}) call neobundle#config('ref-dicts-en', { \ 'depends' : 'thinca/vim-ref' \}) call neobundle#config('fakecygpty', { \ 'build' : { \ 'windows' : expand('gcc fakecygpty.c -o ~/bin/fakecygpty.exe') \ } \}) call neobundle#config('vimhelpgenerator', { \ 'autoload' : {'commands' : [ \ 'VimHelpGenerator', \ 'HelpIntoMarkdown' \ ]} \}) call neobundle#config('vim-threes', { \ 'autoload' : {'commands' : [ \ 'ThreesShowRecord', \ 'ThreesStart' \ ]} \}) "@Bugs('rspec.vim do not highlight syntax before loading vim-ruby') "call neobundle#config('vim-ruby', { "\ 'autoload' : {'filetype' : 'ruby'} "\}) "call neobundle#config('rspec.vim', { "\ 'autoload' : {'filetype' : 'ruby'} "\}) "@Bugs('Do not functioned on windows with this config') call neobundle#config('ore_markdown', { \ 'buld' : { \ 'unix' : 'bundle install --gemfile ./bin/Gemfile', \ 'windows' : 'bundle install --gemfile .\bin\Gemfile', \ 'mac' : 'bundle install --gemfile ./bin/Gemfile' \ }, \ 'autoload' : {'commands' : 'OreMarkdown'} \}) " }}} "------------------------" "*** Plugin_Configure ***" "------------------------" "--- netrw ---" {{{ let g:netrw_preview = 1 " }}} "--- matchit.vim ---" {{{ "augroup FileEvent " " uooooooooooooo... oh, my triple operator !!!!!!!!!!! " " Why if set you, happend an error when doing match it... " autocmd FileType * let b:match_words = &matchpairs . ',?::' "augroup END " }}} "--- unite.vim ---"{{{ "@Code(':Unite javasrc') let g:unite_source_alias_aliases = { \ 'javasrc' : { \ 'source' : 'file_rec', \ 'args' : '~/Documents/workspace/Java/src' \ } \} "}}} "--- vim-quickrun ---" {{{ " let g:quickrun_config = { \ '_' : { \ 'split' : '', \ 'runner' : 'vimproc', \ 'runner/vimproc/updatetime' : 10, \ 'hook/time/enable' : 1 \ }, \ 'cpp' : { \ 'command' : 'g++', \ 'cmdopt' : '-std=c++14' \ }, \ 'java' : { \ 'cmdopt' : '-source 1.8', \ 'runner' : 'process_manager' \ }, \ 'vimspec' : { \ 'command' : 'themis', \ 'cmdopt' : '--runtimepath ".."', \ 'exec' : '%c %o %s:p | tr -d "\r"' \ } \} if s:is_windows let g:quickrun_config['cs'] = { \ 'command' : 'csc.exe', \ 'exec' : ['%c %o %s:p', '%s:p:r.exe', 'del %s:p:r.exe'], \ 'hook/output_encode/encoding' : 'cp932:utf8' \} elseif s:is_unix let g:quickrun_config['cs'] = { \ 'command' : 'gmcs', \ 'exec' : ['%c %o %s:p > /dev/null', 'mono %s:p:r.exe', 'rm %s:p:r.exe'], \ 'tempfile' : '{tempname()}.cs' \} endif if s:is_cygwin let g:quickrun_config['java'] = { \ 'command' : 'javac', \ 'exec' : ['%c %o `echo %s | sed s:\:/:g | cygpath -w -f -`', '%c %s:t:r %a'], \ 'hook/output_encode/encoding' : 'Shift_JIS' \} let s:javav = s:system('java -version') let g:quickrun_config.java['cmdopt'] = \ s:javav =~# '1\.8' ? '-source 1.8 -encoding UTF-8' : \ s:javav =~# '1\.7' ? '-source 1.7 -encoding UTF-8' \ : '-encoding UTF-8' unlet s:javav endif " }}} "--- vimproc.vim ---"{{{ if s:is_windows && !s:has_mingw "@Incompleted('I couldn't use a NeoBundleDisable on this situation') "NeoBundleDisable 'vimproc.vim' set runtimepath-=~/.vim/bundle/vimproc.vim/ endif " }}} "--- TweetVim ---"{{{ let g:tweetvim_async_post = 1 "}}} "--- vimshell.vim ---"{{{ "@Experimental('test commented out, this without needs?') " Add to VimShell Commands Directory of My Home "execute ':set runtimepath+=' . s:vim_home . '/autoload/vimshell/commands' let g:vimshell_no_save_history_commands = { \ 'history': 1, \ 'ls' : 1, \ 'clear' : 1 \} let g:vimshell_enable_transient_user_prompt = 1 let g:vimshell_force_overwrite_statusline = 1 let g:vimshell_max_command_history = 10000 let g:vimshell_scrollback_limit = 10000 " This variable defined by my command " Connect to bash's hereis let g:vimshell_hereis_file = expand('~/.bashrc_places') "}}} "--- vimshell-kawaii.vim ---"{{{ let g:vimshell_kawaii_smiley = 1 "}}} "--- excitetraslate-vim ---"{{{ " Don't yank result to @" register let g:excitetranslate_options = ["buffer"] "}}} "--- w3m.vim ---"{{{ let g:w3m#external_browser = 'firefox' "let g:w3m#homepage = 'http://www.bing.com/' let g:w3m#homepage = 'http://www.google.co.jp/' "}}} "--- vimconsole.vim ---"{{{ let g:vimconsole#auto_redraw = 1 "}}} "--- foldCC ---"{{{ let g:foldCCtext_maxchars = 120 "}}} "--- rogue.vim ---"{{{ let g:rogue#directory = expand('~/.rogue_vim') if !isdirectory(g:rogue#directory) call mkdir(g:rogue#directory) endif "}}} "--- vim-submode ---"{{{ let g:submode_timeout = 0 augroup FileEvent " Window Resizer autocmd FileType * call submode#enter_with('window_resize', 'n', '', '<C-s>w') autocmd FileType * call submode#map('window_resize', 'n', '', 'j', '<C-w>+') autocmd FileType * call submode#map('window_resize', 'n', '', 'k', '<C-w>-') autocmd FileType * call submode#map('window_resize', 'n', '', 'h', '<C-w><') autocmd FileType * call submode#map('window_resize', 'n', '', 'l', '<C-w>>') autocmd FileType * call submode#map('window_resize', 'n', '', '=', '<C-w>=') autocmd FileType * call submode#map('window_resize', 'n', '', '_', '<C-w>_') " Fold Mover autocmd FileType * call submode#enter_with('fold_move', 'n', '', '<C-s>z') autocmd FileType * call submode#map('fold_move', 'n', 'e', 'j', "foldlevel('.') > 0 ? 'zczjzozz' : 'zjzozz'") autocmd FileType * call submode#map('fold_move', 'n', 'e', 'k', "foldlevel('.') > 0 ? 'zczkzo[zzz' : 'zkzo[zzz'") autocmd FileType * call submode#map('fold_move', 'n', '', 'h', '[z') autocmd FileType * call submode#map('fold_move', 'n', '', 'l', ']z') " Buffer Changer autocmd FileType * call submode#enter_with('buffer_change', 'n', '', '<C-s>b') autocmd FileType * call submode#map('buffer_change', 'n', 's', 'n', ':bnext<CR>') autocmd FileType * call submode#map('buffer_change', 'n', 's', 'p', ':bprevious<CR>') " Tab Mover " s:loopable_tab_move_prev() "{{{ function! LoopableTabMovePrev() if tabpagenr() is 1 execute ':tabmove' tabpagenr('$') else execute ':tabmove -1' endif endfunction "}}} " s:loopable_tab_move_next() "{{{ function! LoopableTabMoveNext() if tabpagenr() is tabpagenr('$') execute ':tabmove 0' else execute ':tabmove +1' endif endfunction "}}} autocmd FileType * call submode#enter_with('tab_move', 'n', '', '<C-s>t') autocmd FileType * call submode#map('tab_move', 'n', 's', 'n', ':call LoopableTabMoveNext()<CR>') autocmd FileType * call submode#map('tab_move', 'n', 's', 'p', ':call LoopableTabMovePrev()<CR>') " WinTab Mover " Current buffer move to next tab "{{{ command! BufTabMovePrev execute 'normal! mZ:hide<CR>gT:vsp<CR>`Z' command! BufTabMoveNext execute 'normal! mZ' . (winnr('$') <= 1 ? ':hide<CR>' : ':hide<CR>gt') . ':vsp<CR>`Z' "}}} autocmd FileType * call submode#enter_with('wintab_move', 'n', '', '<C-s>N', ':BufTabMoveNext<CR>') autocmd FileType * call submode#enter_with('wintab_move', 'n', '', '<C-s>P', ':BufTabMovePrev<CR>') autocmd FileType * call submode#map('wintab_move', 'n', '', 'N', ':BufTabMoveNext<CR>') autocmd FileType * call submode#map('wintab_move', 'n', '', 'P', ':BufTabMovePrev<CR>') autocmd FileType * call submode#map('wintab_move', 'n', '', 'H', '<C-w>H') autocmd FileType * call submode#map('wintab_move', 'n', '', 'J', '<C-w>J') autocmd FileType * call submode#map('wintab_move', 'n', '', 'K', '<C-w>K') autocmd FileType * call submode#map('wintab_move', 'n', '', 'L', '<C-w>L') augroup END "}}} "--- vim-ref ---" {{{ let g:ref_use_vimproc = 1 " }}} "--- ref-dicts-en ---" {{{ "@See('http://d.hatena.ne.jp/akishin999/20131024/1382569289') let g:ref_source_webdict_sites = { \ 'weblio' : { \ 'url' : 'http://ejje.weblio.jp/content/%s' \ } \} let g:ref_source_webdict_sites['default'] = 'weblio' function! s:weblio_filter(output) "{{{ let l:lines = split(a:output, "\n") "@Incompleted('do not filtered') let l:lines1 = map(l:lines, 'substitute(v:val, "\v(発音記号|音声を聞く|ダウンロード再生)\n", "", "g")') return join(l:lines1[60 : ], "\n") endfunction "}}} let g:ref_source_webdict_sites['weblio'].filter = function('s:weblio_filter') " }}} "--- restart.vim ---" {{{ let g:restart_sessionoptions = 'blank,curdir,folds,help,localoptions,tabpages' " }}} "--- vimdoc-ja ---"{{{ " vimdoc-ja is secondary order set helplang=en,ja "}}} "--- Conque-Shell ---"{{{ let g:ConqueTerm_CloseOnEnd = 1 let g:ConqueTerm_SessionSupport = 1 let g:ConqueTerm_ReadUnfocused = 1 let g:ConqueTerm_Color = 1 let g:ConqueTerm_InsertOnEnter = 0 let g:ConqueTerm_StartMessages = 1 "}}} "--- TaskList.vim ---"{{{ " TaskList search these let g:tlTokenList = ["FIXME", "TODO", "XXX", "NOTE"] " Open window at bottom let g:tlWindowPosition = 1 " Restore opened position when closed TaskList let g:tlRememberPosition = 1 "}}} "--- vim-indent-guides ---"{{{ let g:indent_guides_default_mapping = 0 let g:indent_guides_guide_size = 1 let g:indent_guides_auto_colors = 0 " Define guide colors augroup HighlightPref autocmd VimEnter,ColorScheme * highlight default link IndentGuidesOdd PmenuSel autocmd VimEnter,ColorScheme * highlight default link IndentGuidesEven Pmenu augroup END " If matched file extension pattern, indent-guides is enabled augroup FileEvent autocmd WinEnter,BufWinEnter * IndentGuidesDisable autocmd WinEnter,BufWinEnter *.xml,*.html,*css,*scss,*.erb IndentGuidesEnable augroup END "}}} "--- vim-colors-solarized ---"{{{ let g:solarized_contrast = "high" "}}} "--- aho-bakaup.vim ---"{{{ " Devolute to Bakaup set nobackup " Powered Up Auto File Backup when written let g:bakaup_backup_dir = s:backupdir let g:bakaup_auto_backup = 1 "}}} "--- For Debug ---"{{{ " Local my plugins let s:makes = ['arot13.vim', \ 'ahoge-put.vim', \ 'asql.vim', \ 'adrone.vim', \ 'aho-bakaup.vim'] let s:makes_dir = '~/Repository/' " If valid local plugin, disable bundled same plugin for s:plug in s:makes let s:plug_dir = s:makes_dir . s:plug if isdirectory(expand(s:plug_dir)) let &runtimepath .= ',' . s:plug_dir execute ':NeoBundleDisable' s:plug end endfor unlet s:plug_dir s:plug s:makes_dir s:makes "}}} "--- For Private ---"{{{ " Read Privacy Config if filereadable(expand('~/.vimrc_private')) source ~/.vimrc_private endif "}}} "-------------------------" " View_Setting " "-------------------------" "{{{ " Set Basic Preferences set number nowrap hlsearch list scrolloff=8 " Status Bar always displayed set laststatus=2 "@See('http://sourceforge.jp/magazine/07/11/06/0151231') " Status Bar format set statusline=%F%m\%=[FileType=%y][Format=%{&ff}] " ☆ Fix View 2byte Code (Not support gnome-terminal) set ambiwidth=double " Powered Up Syntax Highlight " {{{ augroup HighlightPref autocmd ColorScheme * highlight Visual cterm=underline ctermfg=White ctermbg=Cyan autocmd ColorScheme * highlight IncSearch ctermfg=Black ctermbg=Cyan autocmd ColorScheme * highlight Pmenu cterm=standout ctermfg=Blue autocmd ColorScheme * highlight PmenuSel ctermfg=Black ctermbg=White autocmd ColorScheme * highlight TabLine cterm=standout ctermfg=Blue autocmd ColorScheme * highlight TabLineSel cterm=NONE ctermfg=Cyan autocmd ColorScheme * highlight TabLineFill cterm=standout ctermfg=Blue autocmd ColorScheme * highlight VertSplit cterm=NONE ctermfg=Cyan ctermbg=Blue autocmd ColorScheme * highlight StatusLine ctermfg=Cyan ctermbg=Black autocmd ColorScheme * highlight StatusLineNC ctermfg=Blue autocmd ColorScheme * highlight LineNr ctermfg=Blue autocmd ColorScheme * highlight CursorLine cterm=underline ctermfg=Cyan augroup END augroup HighlightPref autocmd ColorScheme * highlight RcEmSpace cterm=standout ctermfg=LightBlue autocmd VimEnter,WinEnter * call matchadd('RcEmSpace', ' ') augroup END augroup HighlightPref autocmd InsertEnter * highlight StatusLine ctermfg=Black ctermbg=Cyan autocmd InsertLeave * highlight StatusLine ctermfg=Cyan ctermbg=Black augroup END " }}} " Set for Color Scheme if !g:vimrc['loaded'] set background=dark colorscheme desert endif " Indent Wrapped Text set breakindent linebreak " View cursor column on <C-g> set noruler "@See('http://d.hatena.ne.jp/thinca/20111204/1322932585') " Sugoi view tabline function! s:tabpage_label(n) "{{{ let l:title = gettabvar(a:n, 'title') if l:title !=# '' return l:title endif let l:bufnrs = tabpagebuflist(a:n) let l:hi = a:n is tabpagenr() ? '%#TabLineSel#' : '%#TabLine#' let l:no = len(l:bufnrs) if l:no is 1 let l:no = '' endif let l:mod = len(filter(copy(l:bufnrs), "getbufvar(v:val, '&modified')")) ? '+' : '' let l:sp = (l:no . l:mod) ==# '' ? '' : ' ' let l:curbufnr = bufnrs[tabpagewinnr(a:n) - 1] let l:fname = pathshorten(bufname(l:curbufnr)) if l:fname ==# '' let l:fname .= '[ NoName ]' endif let l:label = l:no . l:mod . l:sp . l:fname return '%' . a:n . 'T' . l:hi . l:label . '%T%#TabLineFill#' endfunction "}}} function! WithDelimitterTabLine() "{{{ let l:titles = map(range(1, tabpagenr('$')), 's:tabpage_label(v:val)') let l:delimitter = ' | ' let l:tabpages = l:delimitter . join(l:titles, l:delimitter) . l:delimitter . '%#TabLineFill#%T' return l:tabpages endfunction "}}} set tabline=%!WithDelimitterTabLine() showtabline=2 " Turn off highlight nohlsearch "}}} "-------------------------" " Action_Setting " "-------------------------" "{{{ " Backspace can delete it set backspace=indent,eol,start " No auto Carriage Return and Set tab style set textwidth=0 tabstop=4 shiftwidth=4 " C type auto indent on set autoindent cindent " Don't jump bottom to top and top to bottom when searching set nowrapscan " Fold Text with foldmarker and fold sets set foldmethod=marker set foldtext=FoldCCtext() set foldcolumn=1 let &fillchars = 'vert:|,fold: ' set foldopen=search,jump,mark,percent,insert,tag,undo set foldclose=all " Collection Swap File let &directory = s:directory " Save View Position when execute ':mkview' let &viewdir = s:viewdir " Hold Undo Archive when file closed set undofile let &undodir = s:undodir " Bell Sound is instead of Screen flash. set visualbell " Disable Auto Commentalize New Line set formatoptions-=ro " Ignore case on NormalMode searching and InsertMode completion set ignorecase noinfercase " No timeout key maps set notimeout " Do not set file name order priority on c-mode completion set suffixes= " Do foldopen all when visual_mode cursor_move augroup KeyEvent " s:visual_fold_all() "{{{ let s:visual_fold_toggle = get(s:, 'visual_fold_toggle', 0) function! s:visual_fold_all() if mode() =~# "^[vV\<C-v>]" if !s:visual_fold_toggle && &foldenable set nofoldenable execute 'normal! zz' let s:visual_fold_toggle = 1 endif else if s:visual_fold_toggle set foldenable execute 'normal! zz' let s:visual_fold_toggle = 0 endif endif endfunction "}}} autocmd CursorMoved * call s:visual_fold_all() augroup END "}}} "-------------------------" " Inner_Setting " "-------------------------" "{{{ " Default File Encoding set fileencoding=utf-8 encoding=utf-8 " Auto Judge file encode set fileencodings=utf-8,sjis,euc-jp,cp932,ucs-bom,iso-2022-jp-3,iso-2022-jp,eucjp-ms,euc-jisx0213,ucs-bom,latin1,default " Leaving a history and it limit is a 500 pieces set history=500 " Adding Runtime Path set runtimepath+=~/.vim/vimball " Set Vimball Install place let g:vimball_home = s:vim_home . '/vimball' " Display Command Complement set wildmenu " Path Delimiter is Slash set shellslash " Add Match Pairs set matchpairs+=<:> " Load Target for ctags set tags=./tags,~/tags " Explore wake up default dir set browsedir=buffer " Set spell lang set spelllang=en_US " Set reference path, using by :find, gf and more set path=.,,./** "@Experiment('commented out') " Manually generate my help tags "if isdirectory(expand('~/.vim/doc')) " helptags ~/.vim/doc "endif "}}} "-------------------------" " Event_Method " "-------------------------" "{{{ " Save Cursor Position when file closed augroup FileEvent function! s:visit_past_position() "{{{ let l:past_posit = line("'\"") if l:past_posit > 0 && l:past_posit <= line('$') execute 'normal! g`"' endif endfunction "}}} autocmd BufReadPost * call <SID>visit_past_position() augroup END augroup FileEvent " If you using wim command prompt, listchars using safe chars autocmd VimEnter,WinEnter,BufWinEnter,BufRead,EncodingChanged * \ if &encoding == 'utf-8' && !s:is_doswin \| let &listchars = 'tab:»_,trail:_,extends:»,precedes:«,nbsp:%,eol:↲' \| else \| let &listchars = 'tab:>_,trail:_,extends:>,precedes:<,nbsp:%' \| endif augroup END augroup KeyEvent "autocmd UserGettingBored * echo 'Fight!!' augroup END "}}} "-------------------------" " Command_Util " "-------------------------" " For Override {{{ call altercmd#load() " buffer open commands with filetype 'none' command! -bang NewOverridden new<bang> | setf none AlterCommand new NewOverridden command! -bang VnewOverridden vnew<bang> | setf none AlterCommand vnew VnewOverridden command! -bang EnewOverridden enew<bang> | setf none AlterCommand enew EnewOverridden command! -bang TabnewOverridden tabnew<bang> | setf none AlterCommand tabnew TabnewOverridden " }}} " Usefull {{{ " Grep and Open current buffer command! -nargs=1 GrepNow vimgrep <args> % | cwindow " Save a Temporary Directory " {{{ "@Marked('Changed "FileType *" to "BufNew *"') autocmd FileEvent BufNew * let b:tdir_dir = get(b:, 'tdir_dir', 'Not set tdir') command! TDirPwd echo b:tdir_dir function! s:set_temporary_dir(path) "{{{ if isdirectory(a:path) let b:tdir_dir = a:path ==# '.' ? expand('%:p:h') \ : a:path echo b:tdir_dir else call s:echo_error('No such temporary root dir') endif endfunction "}}} command! -nargs=1 TDirSet call s:set_temporary_dir(<q-args>) command! TDirSetCurrentDir call s:set_temporary_dir('.') function! s:cd_temporary_dir() "{{{ if b:tdir_dir ==# 'Not set tdir' call s:echo_error('Not set temporary root dir') else execute 'cd' b:tdir_dir echo b:tdir_dir endif endfunction "}}} command! TDirCd call s:cd_temporary_dir() " }}} " Revese Lines function! s:reverse_line() range " {{{ if a:firstline is a:lastline return endif let l:lines = [] let l:posit = getpos('.') let l:z = @z for l:line in range(a:firstline, a:lastline) execute 'normal! "zdd' call add(l:lines, @z) endfor for l:r in l:lines let @z = l:r execute 'normal! "zP' endfor let @z = l:z call setpos('.', l:posit) endfunction " }}} command! -range=% ReverseLine :<line1>, <line2> call s:reverse_line() " Catenate and echo files function! s:cat_file(...) "{{{ let l:catenate = '' for l:filePath in a:000 let l:catenate .= join(readfile(l:filePath), "\n") endfor echo l:catenate endfunction "}}} command! -nargs=* -complete=file Cat call s:cat_file(<f-args>) " Low accuracy randome integer function! s:random_int(max) "{{{ let l:max = a:max isnot# '' ? a:max : 65535 let l:matchEnd = matchend(reltimestr(reltime()), '\d\+\.') + 1 return reltimestr(reltime())[l:matchEnd :] % (l:max + 1) endfunction "}}} command! -nargs=? PutRandom execute 'normal! a' . s:random_int(<q-args>) "@See('http://leafcage.hateblo.jp/entry/2013/08/02/001600') " Time Watcher command! TimerStart let s:startTime = reltime() command! TimerEcho echo reltimestr( reltime(s:startTime) ) command! TimerPut execute 'normal! o' . reltimestr(reltime(s:startTime)) " Rename current buffer file function! s:rename_to(to_file) "{{{ let l:this_file = expand('%:t') let l:editing_file = &modified if l:editing_file echoerr 'Please :write this file' return endif let l:failed = rename(l:this_file, a:to_file) if l:failed echoerr printf('Rename %s to %s is failed', l:this_file, a:to_file) return endif let l:bufnr = bufnr('%') execute ':edit' a:to_file execute ':' . l:bufnr . 'bdelete' echo printf('Renamed %s to %s', l:this_file, a:to_file) endfunction "}}} command! -nargs=1 Rename call <SID>rename_to(<q-args>) "}}} " Life Helper {{{ " Vim Utils {{{ command! VimConfig e $MYVIMRC command! VimConfigTab tabnew $MYVIMRC command! Reload so $MYVIMRC \| if has('gui_running') \| so $MYGVIMRC \| endif command! ForceSave w !sudo tee > /dev/null % command! CdBufDir cd %:p:h command! ColorPreview Unite colorscheme -auto-preview " }}} " Twitter {{{ "Note: if ask more, add hooks " (let g:vimrc.private['twitter']['curr_ac'] = ~~) " on tweetvim's TweetVimSwitchAccount command. "-- Basic --" command! Twitter TweetVimHomeTimeline command! TwitterTab tabnew | Twitter command! Tweet TweetVimSay "-- Private Account --" function! TwitterPrivateFunc() "{{{ if !exists('g:vimrc.private["twitter"]["priv_ac"]') call s:echo_error('Not set env variable => g:vimrc.private["twitter"]["priv_ac"]') return endif execute ':TweetVimSwitchAccount' g:vimrc.private['twitter']['priv_ac'] let g:vimrc.private['twitter']['curr_ac'] = g:vimrc.private['twitter']['priv_ac'] execute ':TweetVimHomeTimeline' endfunction "}}} command! TwitterPrivate call TwitterPrivateFunc() command! TwitterPrivateTab tabnew | TwitterPrivate function! TweetPrivateFunc() "{{{ if !exists('g:vimrc.private["twitter"]["priv_ac"]') call s:echo_error('Not set env variable => g:vimrc.private["twitter"]["priv_ac"]') return endif execute ':TweetVimSwitchAccount' g:vimrc.private['twitter']['priv_ac'] execute ':TweetVimSay' "@Incompleted('wait sync here') "execute ':TweetVimSwitchAccount' g:vimrc.private['twitter']['curr_ac'] endfunction "}}} command! TweetPrivate call TweetPrivateFunc() "-- Public Account --" function! TwitterPublicFunc() "{{{ if !exists("g:vimrc.private['twitter']['publ_ac']") call s:echo_error("Not set env variable => g:vimrc.private['twitter']['publ_ac']") return endif execute ':TweetVimSwitchAccount ' g:vimrc.private['twitter']['publ_ac'] let g:vimrc.private['twitter']['curr_ac'] = g:vimrc.private['twitter']['publ_ac'] execute ':TweetVimHomeTimeline' endfunction "}}} command! TwitterPublic call TwitterPublicFunc() command! TwitterPublicTab tabnew | TwitterPublic function! TweetPublicFunc() "{{{ if !exists('g:vimrc.private["twitter"]["publ_ac"]') call s:echo_error('Not set env variable => g:vimrc.private["twitter"]["publ_ac"]') return endif execute ':TweetVimSwitchAccount ' g:vimrc.private['twitter']['publ_ac'] execute ':TweetVimSay' "@Incompleted('wait here') "execute ':TweetVimSwitchAccount ' g:vimrc.private['twitter']['curr_ac'] endfunction "}}} command! TweetPublic call TweetPublicFunc() command! Bitly TweetVimBitly cnoreabbr tvs TweetVimSwitchAccount " }}} " To Service Name cnoreabbr Lingr J6uil command! Lingr <NOP> " Beautifull Life command! JazzUpdate JazzradioUpdateChannels command! JazzList Unite jazzradio cnoreabbr JazzPlay JazzradioPlay command! JazzPlay <NOP> command! JazzStop JazzradioStop " Translates Languages cnoreabbr Translate ExciteTranslate cnoreabbr Weblio Ref webdict weblio command! Translate <NOP> command! Weblio <NOP> " }}} " Development {{{ " Open Develop Buffer {{{ " vimconsole.vim cnoreabbr Log VimConsoleLog cnoreabbr LogClear VimConsoleClear cnoreabbr LogOpen VimConsoleOpen command! Log <NOP> command! LogClear <NOP> command! LogOpen <NOP> " GHCi cnoreabbr RunGhc !runghc % cnoreabbr Ghci VimShellInteractive ghci cnoreabbr Sghci VimShellInteractive --split='sp' ghci cnoreabbr Vghci VimShellInteractive --split='vsp' ghci cnoreabbr GhciTab VimShellInteractive --split='tabnew' ghci cnoreabbr Hoogle Ref hoogle command! RunGhc <NOP> command! Ghci <NOP> command! Sghci <NOP> command! Vghci <NOP> command! GhciTab <NOP> command! Hoogle <NOP> " js cnoreabbr Js VimShellInteractive js cnoreabbr Sjs VimShellInteractive --split='sp' js cnoreabbr Vjs VimShellInteractive --split='vsp' js cnoreabbr JsTab VimShellInteractive --split='tabnew' js command! Js <NOP> command! Sjs <NOP> command! Vjs <NOP> command! JsTab <NOP> " irb cnoreabbr Irb VimShellInteractive irb cnoreabbr Sirb VimShellInteractive --split='sp' irb cnoreabbr Virb VimShellInteractive --split='vsp' irb cnoreabbr IrbTab VimShellInteractive --split='tabnew' irb command! Irb <NOP> command! Sirb <NOP> command! Virb <NOP> command! IrbTab <NOP> " }}} " Run Program {{{ "@Incompleted('does not removed another temporary class') " If you cannot use QuickRun or want to use IO, you can use this. function! s:java_run_func() "{{{ let l:javaname = expand('%:t:r') let l:javav = s:system('java -version') if l:javav =~# '1.8' let l:command = ['javac -source 1.8 -encoding utf8', 'java'] elseif l:javav =~# '1.7' let l:command = ['javac -source 1.7 -encoding utf8', 'java'] else let l:command = ['javac -encoding utf8', 'java'] endif if s:is_cygwin if executable('cocot') let l:command[0] = 'cocot ' . l:command[0] let l:command[1] = 'cocot ' . l:command[1] else call s:echo_error('You must be get [cocot] command.') return endif endif execute ':!' . \ printf('%s %s.java', l:command[0], l:javaname) . ';' . \ printf('%s %s', l:command[1], l:javaname) . ';' call delete(l:javaname . '.class') endfunction "}}} command! RunJava call s:java_run_func() " Same as RunJava for Ruby cnoreabbr RunRuby !ruby % command! RunRuby <NOP> " }}} " }}} "-------------------------" " Key_Mapping " "-------------------------" " Disables {{{ augroup KeyMapping " I can use some mapping to hoge<C-c> autocmd FileType * nnoremap <C-c> <NOP> autocmd FileType * nnoremap <C-c><C-c> <C-c> autocmd FileType * nnoremap <Up> <NOP> autocmd FileType * nnoremap <Down> <NOP> autocmd FileType * nnoremap <Left> <NOP> autocmd FileType * nnoremap <Right> <NOP> autocmd FileType * inoremap <Up> <NOP> autocmd FileType * inoremap <Down> <NOP> autocmd FileType * inoremap <Left> <NOP> autocmd FileType * inoremap <Right> <NOP> autocmd FileType * cnoremap <Left> <NOP> autocmd FileType * cnoremap <Right> <NOP> autocmd FileType * cnoremap [Left] <Left> augroup END " }}} " Bashnize Command Mode {{{ augroup KeyMapping autocmd FileType * nmap <C-j> <CR> autocmd FileType * imap <C-j> <CR> autocmd FileType * cnoremap <C-b> <Left> autocmd FileType * cnoremap <C-f> <Right> autocmd FileType * cnoremap <C-a> <Home> autocmd FileType * cnoremap <C-h> <BS> autocmd FileType * cnoremap <C-d> <Del> autocmd FileType * cnoremap <C-e> <End> autocmd FileType * cnoremap <C-k><C-k> <C-\>e getcmdpos() < 2 ? '' : getcmdline()[:getcmdpos()-2]<CR> augroup END " }}} " Global KeyMaps {{{ " Prepare temporary functions {{{ " Compress continuous space function! s:compress_spaces() "{{{ let l:recent_pattern = @/ try execute ':substitute/\s\s\+/ /g' execute 'normal! ==' catch finally let @/ = l:recent_pattern endtry nohlsearch endfunction "}}} " Move cursor to topmost of this indent function! s:cursor_up_to_lid() "{{{ let l:first_line = 1 while 1 let l:p = getcurpos()[2] execute 'normal! k' let l:indent_changed = l:p isnot getcurpos()[2] if l:indent_changed || line('.') is l:first_line if l:indent_changed execute 'normal! j' endif break endif endwhile endfunction "}}} " Easily putting short separator for many filetypes " function! s:put_short_separator(put_upper) {{{ augroup FileEvent autocmd FileType,WinEnter,BufWinEnter * let s:long_separator = \ &ft =~# '\v(vim|vimspec)' ? '"#-=- -=- -=- -=- -=- -=- -=- -=- -=-#"' \: &ft =~# '\v(java|cs|cpp|c)' ? '/* ---===---===---===---===---===---===--- */' \: &ft ==# 'haskell' ? '-- - - - - - - - - - - - - - - - --' \: &ft ==# 'coq' ? '(* - - - - - - - - - - - - - - - *)' \: &ft ==# 'mysql' ? '-- - - - - - - - - - - - - - - - --' \: &ft =~# '\v(markdown|eruby)' ? '<!-- - - - - - - - - - - - - - - - -->' \: &ft =~# '\v(ruby|sh)' ? '#- - - - - - - - - - - - - - - - -#' \: &ft =~# '\v(text|none)' ? '- - - - - - - - - - - - - - - - - - - -' \ : 'long_separator_undefined' augroup END function! s:put_long_separator(put_upper) execute 'normal!' (a:put_upper ? 'O' : 'o') execute 'normal! 0D' execute 'normal! i' s:long_separator execute 'normal! ==' endfunction "}}} " Easily putting long separator for many filetypes " function! s:put_short_separator(put_upper) {{{ augroup FileEvent autocmd FileType,WinEnter,BufWinEnter * let s:short_sparator = \ &ft =~# '\v(vim|vimspec)' ? '"#--- --- ---#"' \: &ft =~# '\v(java|cs|cpp|c)' ? '/* -=-=-=-=-=-=-=-=- */' \: &ft ==# 'haskell' ? '-- - - - - - --' \: &ft ==# 'coq' ? '(* - - - - - *)' \: &ft ==# 'mysql' ? '-- - - - - - --' \: &ft =~# '\v(markdown|eruby)' ? '<!-- - - - - - -->' \: &ft =~# '\v(ruby|sh)' ? '#- - - - - - -#' \: &ft =~# '\v(text|none)' ? '- - - - - - - - - -' \ : 'short_separator_undefined' augroup END function! s:put_short_separator(put_upper) execute 'normal!' (a:put_upper ? 'O' : 'o') execute 'normal! 0D' execute 'normal! i' s:short_sparator execute 'normal! ==' endfunction " }}} " Move cursor to bottommost of this indent function! s:cursor_down_to_ground() "{{{ let l:last_line = line('$') while 1 let l:p = getcurpos()[2] execute 'normal! j' let l:indent_changed = l:p isnot getcurpos()[2] if l:indent_changed || line('.') is l:last_line if l:indent_changed execute 'normal! k' endif break endif endwhile endfunction "}}} " Optimize key operation to one hand " function! s:toggle_onehand_mode() "{{{ let s:onehand_enabled = get(s:, 'onehand_enabled', 0) function! s:toggle_onehand_mode() if s:onehand_enabled nunmap n nunmap p nunmap f nunmap b nunmap o nunmap i nunmap u " doautocmd for normally keymappings let &filetype = &filetype else nnoremap n gt nnoremap p gT nnoremap f <C-f> nnoremap b <C-b> nnoremap o <C-o> nnoremap i <C-i> nnoremap u <C-w><C-w> endif let s:onehand_enabled = !s:onehand_enabled echo (s:onehand_enabled ? '' : 'no') . 'onehand' endfunction "}}} " If you has nofile buffer, close it. "@Marked('maybe this was not does purported function') function! s:bufclose_filetype(ft) "{{{ for l:w in range(1, winnr('$')) let l:buf_ft = getwinvar(l:w, '&ft') if l:buf_ft ==# a:ft execute ':' . l:w . 'wincmd w' execute ':quit' break endif endfor endfunction "}}} " }}} " Override mapping {{{ augroup KeyMapping " † Rebirth Of The Neo Ex autocmd FileType * nnoremap Q gQ autocmd FileType * nnoremap <C-n> gt autocmd FileType * nnoremap <C-p> gT autocmd FileType * inoremap <C-l> <Esc> autocmd FileType * vnoremap <C-l> <Esc> autocmd FileType * cnoremap <C-l> <Esc> augroup END " }}} " Appends " {{{ augroup KeyMapping autocmd FileType * nnoremap <C-m> o<Esc> autocmd FileType * nnoremap <silent> m: :<C-u>marks<CR> autocmd FileType * nnoremap <silent> q: :<C-u>register<CR> autocmd FileType * nnoremap <silent> z: :<C-u>tabs<CR> autocmd FileType * nnoremap <silent> g: :<C-u>buffers<CR> autocmd FileType * nnoremap <silent> g> :<C-u>messages<CR> autocmd FileType * nnoremap <silent> <leader>b :<C-u>NewOverridden<CR>:resize 5<CR>:setl buftype=nofile<CR> autocmd FileType * nnoremap <silent> <leader>B :<C-u>NewOverridden<CR>:resize 5<CR> autocmd FileType * nnoremap <silent> <leader>ps :<C-u>call <SID>put_short_separator(0)<CR> autocmd FileType * nnoremap <silent> <leader>Ps :<C-u>call <SID>put_short_separator(1)<CR> autocmd FileType * nnoremap <silent> <leader>pl :<C-u>call <SID>put_long_separator(0)<CR> autocmd FileType * nnoremap <silent> <leader>Pl :<C-u>call <SID>put_long_separator(1)<CR> autocmd FileType * nnoremap <silent> <leader>pd :<C-u>execute 'normal! a' . strftime('%c')<CR> autocmd FileType * nnoremap <silent> <leader><leader>h :<C-u>helpclose<CR> autocmd FileType * nnoremap <silent> <Space><Space> :<C-u>call <SID>compress_spaces()<CR> autocmd FileType * nnoremap <silent> <leader>k :<C-u>call <SID>cursor_up_to_lid()<CR> autocmd FileType * nnoremap <silent> <leader>j :<C-u>call <SID>cursor_down_to_ground()<CR> autocmd FileType * nnoremap <silent> <C-k><C-r> :<C-u>Reload<CR> autocmd FileType * nnoremap <silent> <C-k><C-l> :<C-u>nohlsearch<CR> autocmd FileType * nnoremap <silent> <C-k><C-j> :<C-u>write<CR> autocmd FileType * nnoremap <silent> <C-k>J :<C-u>wall<CR> " doautocmd for Events [FileType *] autocmd FileType * nnoremap <silent> <C-k>r :<C-u>let &filetype = &filetype<CR> autocmd FileType * nnoremap <silent> <C-k>l :<C-u>source %<CR> autocmd FileType * inoremap <silent> <C-k><C-j> <Esc>:write<CR> autocmd FileType * inoremap <silent> <C-k>J <Esc>:wall<CR> autocmd FileType * inoremap <C-k><C-k> <C-o>"_d$ autocmd FileType * inoremap <C-k><C-y> <Esc>k"zyyjV"zp:let @z = ''<CR>A "autocmd FileType * vnoremap <silent> [k :<C-u>call <SID>cursor_up_to_lid()<CR> "autocmd FileType * vnoremap <silent> ]k :<C-u>call <SID>cursor_up_to_lid()<CR> "autocmd FileType * vnoremap <silent> [j :<C-u>call <SID>cursor_down_to_ground()<CR> "autocmd FileType * vnoremap <silent> ]j :<C-u>call <SID>cursor_down_to_ground()<CR> autocmd FileType * cnoremap <C-k><C-p> <Up> autocmd FileType * cnoremap <C-k><C-n> <Down> autocmd FileType * cnoremap <C-]> '<,'> augroup END " }}} " Foldings {{{ augroup KeyMapping autocmd FileType * nnoremap <expr> h foldclosed('.') > -1 ? 'zo' : 'h' autocmd FileType * nnoremap <expr> l foldclosed('.') > -1 ? 'zo' : 'l' autocmd FileType * nnoremap zj zjzo autocmd FileType * nnoremap zk zkzo autocmd FileType * nnoremap z< V$%zf augroup END " }}} " Windows and Buffers {{{ augroup KeyMapping autocmd FileType * nnoremap <Space>h <C-w>h autocmd FileType * nnoremap <Space>j <C-w>j autocmd FileType * nnoremap <Space>k <C-w>k autocmd FileType * nnoremap <Space>l <C-w>l autocmd FileType * nnoremap <silent> <C-w>t :<C-u>TabnewOverridden<CR> autocmd FileType * nnoremap <silent> <C-w>T :<C-u>tabclose<CR> autocmd FileType * nnoremap <silent> <C-w>c :<C-u>bdelete<CR> autocmd FileType * nnoremap <silent> <C-w>C :<C-u>bdelete!<CR> autocmd FileType * nnoremap <silent> <C-w>N :<C-u>EnewOverridden!<CR> autocmd FileType * nnoremap <silent> <C-w>Q :<C-u>quitall<CR> autocmd FileType * nnoremap <silent> <C-w>" :<C-u>resize 5<CR> autocmd FileType * nnoremap <silent><expr> <C-w>bt 'mZ:tabnew<CR>`Zzz' . (foldlevel('.') > 0 ? 'zo' : '') autocmd FileType * nnoremap <silent><expr> <C-w>bT 'mZ<C-w>c:tabnew<CR>`Zzz' . (foldlevel('.') > 0 ? 'zo' : '') augroup END " }}} " Toggle options {{{ augroup KeyMapping autocmd FileType * nnoremap <silent><expr> <C-h><C-d> (&diff ? ':diffoff' : ':diffthis') . '\|set diff?<CR>' autocmd FileType * nnoremap <silent><expr> <C-h><C-v> ':setl virtualedit=' . (&virtualedit ==# '' ? 'all' : '') . ' virtualedit?<CR>' autocmd FileType * nnoremap <silent> <C-h><C-w> :<C-u>setl wrap! wrap? <CR> autocmd FileType * nnoremap <silent> <C-h><C-c> :<C-u>setl cursorline! cursorline? <CR> autocmd FileType * nnoremap <silent> <C-h><C-e> :<C-u>setl expandtab! expandtab? <CR> autocmd FileType * nnoremap <silent> <C-h><C-r> :<C-u>setl relativenumber! relativenumber?<CR> autocmd FileType * nnoremap <silent> <C-h><C-l> :<C-u>setl list! list? <CR> autocmd FileType * nnoremap <silent> <C-h><C-n> :<C-u>setl number! number? <CR> autocmd FileType * nnoremap <silent> <C-h><C-s> :<C-u>setl wrapscan! wrapscan? <CR> autocmd FileType * nnoremap <silent> <C-h>jk :<C-u>call <SID>toggle_onehand_mode()<CR> autocmd FileType * inoremap <silent> <C-k><C-e> <C-o>:setl expandtab! expandtab?<CR> augroup END " }}} " for Plugins {{{ augroup KeyMapping " netrw autocmd FileType * nnoremap <silent> <leader>e :<C-u>Vexplore<CR> autocmd FileType * nnoremap <silent> <leader><leader>e :<C-u>Sexplore<CR> autocmd FileType * nnoremap <silent> <leader>E :<C-u>Explore<CR> autocmd FileType * nnoremap <silent> <leader><leader>E :<C-u>Texplore<CR> " open-browser.vim autocmd FileType * nmap <leader>w <Plug>(openbrowser-open) " vim-quickrun autocmd FileType * nnoremap <silent> <leader><leader>r :<C-u>call <SID>bufclose_filetype('quickrun')<CR> " vimshell autocmd FileType * nnoremap <silent> <leader>v :<C-u>VimShell -split-command=vsp -toggle<CR> autocmd FileType * nnoremap <silent> <leader><leader>v :<C-u>VimShell -split-command=sp -toggle<CR> autocmd FileType * nnoremap <silent> <leader>V :<C-u>VimShellBufferDir -create<CR> autocmd FileType * nnoremap <silent> <leader><leader>V :<C-u>VimShell -split-command=tabnew -create<CR> " Unite autocmd FileType * nnoremap <silent> <leader>uf :<C-u>Unite -ignorecase -start-insert outline:foldings<CR> autocmd FileType * nnoremap <silent> <leader>um :<C-u>Unite -ignorecase neomru/file<CR> autocmd FileType * nnoremap <silent> <leader><leader>u :<C-u>call <SID>bufclose_filetype('unite')<CR> " excitetranslate-vim autocmd FileType * nnoremap <silent> <leader>t :<C-u>ExciteTranslate<CR> " vim-over autocmd FileType * nnoremap <silent> :%s/ :<C-u>OverCommandLine<CR>%s/ autocmd FileType * nnoremap <silent> :s/ :<C-u>OverCommandLine<CR>s/ autocmd FileType * nnoremap <silent><expr> <C-k><C-s> ':OverCommandLine<CR>%s/\<' . expand('<cword>') . '\>/' autocmd FileType * nnoremap <silent><expr> <C-k>S ':OverCommandLine<CR>%s/\<' . expand('<cword>') . '\>/' . expand('<cword>') autocmd FileType * vnoremap <silent> :s/ :<C-u>OverCommandLine<CR>'<,'>s/ autocmd FileType * OverCommandLineNoremap <C-l> <Esc> " anzu-chan autocmd FileType * nmap n <Plug>(anzu-n-with-echo)zv autocmd FileType * nmap N <Plug>(anzu-N-with-echo)zv autocmd FileType * nmap * <Plug>(anzu-star-with-echo)zv autocmd FileType * nmap # <Plug>(anzu-sharp-with-echo)zv autocmd FileType * nmap <C-w>* <C-w>v<Plug>(anzu-star-with-echo)zv autocmd FileType * nmap <C-w># <C-w>v<Plug>(anzu-sharp-with-echo)zv " incsearch.vim autocmd FileType * nmap <expr> / foldclosed('.') > -1 ? 'zv<Plug>(incsearch-forward)' : '<Plug>(incsearch-forward)' autocmd FileType * nmap <silent> <leader>/ /\m\C autocmd FileType * nmap <silent> <leader><leader>/ /\m\C\<\>[Left][Left] autocmd FileType * nmap g/ /\<<C-r>"\><CR> autocmd FileType * nmap <expr> ? foldclosed('.') > -1 ? 'zv<Plug>(incsearch-backward)' : '<Plug>(incsearch-backward)' autocmd FileType * nmap <silent> <leader>? ?\m\C autocmd FileType * nmap <silent> <leader><leader>? ?\m\C\<\>[Left][Left] autocmd FileType * nmap g? ?\<<C-r>"\><CR> autocmd FileType * IncSearchNoreMap <C-j> <CR> autocmd FileType * IncSearchNoreMap <C-b> <Left> autocmd FileType * IncSearchNoreMap <C-f> <Right> autocmd FileType * IncSearchNoreMap <C-a> <Home> autocmd FileType * IncSearchNoreMap <C-h> <BS> autocmd FileType * IncSearchNoreMap <C-d> <Del> autocmd FileType * IncSearchNoreMap <C-e> <End> autocmd FileType * IncSearchNoreMap <C-l> <Esc> " TaskList.vim autocmd FileType * nmap <leader>T <Plug>TaskListToggle " undotree autocmd FileType * nnoremap <leader>U :<C-u>UndotreeToggle<CR> " neosnippet.vim autocmd FileType * imap <expr> <C-s> neosnippet#expandable() ? '<Plug>(neosnippet_expand)' : '<Plug>(neosnippet_jump)' autocmd FileType * smap <expr> <C-s> neosnippet#expandable() ? '<Plug>(neosnippet_expand)' : '<Plug>(neosnippet_jump)' augroup END " }}} " }}} " Buffer Local KeyMaps {{{ augroup PluginPrefs autocmd FileType int-* nnoremap <buffer> q <NOP> autocmd FileType int-* nnoremap <buffer> <C-n> gt autocmd FileType int-* nnoremap <buffer> <C-p> gT autocmd FileType int-* nnoremap <buffer> <C-l> <NOP> autocmd FileType int-* nmap <buffer> <C-]> <Plug>(vimshell_int_clear) autocmd FileType int-* nmap <buffer> Q <Plug>(vimshell_int_exit) autocmd FileType int-* nmap <buffer> gj <Plug>(vimshell_int_next_prompt) autocmd FileType int-* nmap <buffer> gk <Plug>(vimshell_int_previous_prompt) autocmd FileType int-* inoremap <buffer> <C-l> <Esc> autocmd FileType int-* inoremap <buffer> <C-b> <Left> autocmd FileType int-* inoremap <buffer> <C-f> <Right> autocmd FileType int-* inoremap <buffer> <C-e> <End> autocmd FileType int-* inoremap <buffer> <C-d> <Del> autocmd FileType int-* imap <buffer> <C-n> <C-o><Plug>(vimshell_int_next_prompt)<End> autocmd FileType int-* imap <buffer> <C-p> <C-o><Plug>(vimshell_int_previous_prompt)<End> autocmd FileType int-* imap <buffer> <C-]> <C-o><Plug>(vimshell_int_clear) autocmd FileType int-* imap <buffer> <CR> <Plug>(vimshell_int_execute_line) autocmd FileType int-* imap <buffer> <C-k><C-p> <Plug>(vimshell_int_history_unite) autocmd FileType ref-* nnoremap <silent><buffer> Q :<C-u>quit<CR> augroup END " }}} "-------------------------" " File_Type " "-------------------------" "{{{ " Call matchadd when that file is target filetype function! s:matchadd_with_filetype(ft, tag, regex, priority, id) "{{{ if &filetype == a:ft try let l:id = matchadd(a:tag, a:regex, a:priority, a:id) catch /\vE(799|801)/ " Suppress repeate add let l:id = a:id endtry else try call matchdelete(a:id) catch /\vE(802|803)/ " Suppress repeate delete endtry let l:id = a:id endif return l:id endfunction "}}} " If buffer does not has filetype, set filetype 'none' augroup ExtensionType autocmd VimEnter,BufNew * if &ft ==# '' | setf none | endif augroup END augroup FileEvent " -- Vi Improved -- autocmd VimEnter,ColorScheme * highlight rcMyHint cterm=standout ctermfg=DarkYellow autocmd BufWinEnter * let s:rcMyHint = s:matchadd_with_filetype('vim', 'rcMyHint', '\s*"\zs@\w\+(.*)\ze', 10, get(s:, 'rcMyHint', 10001)) " Haskell autocmd VimEnter,ColorScheme * highlight rcHeadSpace cterm=underline ctermfg=DarkGray autocmd BufWinEnter * let s:rcHeadSpace = s:matchadd_with_filetype('haskell', 'rcHeadSpace', '^\s\+', 10, get(s:, 'rcHeadSpace', 10002)) " C-Sharp autocmd VimEnter,ColorScheme * highlight default link RcTypeInference Identifier autocmd VimEnter,WinEnter *.cs syntax keyword RcTypeInference var dynamic augroup END " For Plugin Types augroup FileEvent "@Incomplete('do not functioned') "@Incomplete('do not functioned as exchanger') " netrw autocmd FileType netrw highlight default link CursorLine Visual augroup END "}}} "-------------------------" " Environment_Pref " "-------------------------" "{{{ if filereadable(expand('~/.vimrc_env')) source ~/.vimrc_env endif "}}} filetype plugin indent on syntax enable let g:vimrc['loaded'] = 1