Skip to content

Instantly share code, notes, and snippets.

@aiya000
Created March 31, 2015 12:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aiya000/f1354ce0b482922631cf to your computer and use it in GitHub Desktop.
Save aiya000/f1354ce0b482922631cf to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment