環境
vim 8.0
意識してること
- 使っているMBAが古い(mid 2011)ので、ラグがなるべく出ないようにする。
- rails使ってバックエンド開発が本業なので、若干ruby・rails寄り。
- win・mac・linuxで環境依存出さないようにしたい(あくまで希望)。
- 以前使ってたsublime textもリスペクトしてる。
本題
「これ、もっとこうできますよ」的なアドバイスいただけると非常に助かります。
if $compatible
set nocompatible " Be iMproved
endif
set rtp+=~/.vim/dein/repos/github.com/Shougo/dein.vim
" プラグイン管理(dein)
call dein#begin(expand('~/.vim/dein'))
call dein#add('vim-airline/vim-airline') "powerline系
call dein#add('vim-airline/vim-airline-themes') "powerline系テーマ
let g:airline_powerline_fonts = 1
set laststatus=2
let g:airline#extensions#tabline#enabled = 1
let g:airline_theme = 'dark'
call dein#add('scrooloose/nerdtree') "ファイル関係をツリー表示[ss]
call dein#add('ryanoasis/vim-devicons') "ツリーにアイコン表示
call dein#add('Xuyuanp/nerdtree-git-plugin') "NERDTreeにgitを表示
call dein#add('tiagofumo/vim-nerdtree-syntax-highlight') "NERDTreeにgitを表示
nnoremap :ss :NERDTreeToggle
let NERDTreeShowHidden = 1
let g:nerdtree_tabs_open_on_console_startup = 1
"vim-nerdtree-syntax-highlight
let s:rspec_red = 'FE405F'
let s:git_orange = 'F54D27'
let g:NERDTreeExactMatchHighlightColor = {} " this line is needed to avoid error
let g:NERDTreeExactMatchHighlightColor['.gitignore'] = s:git_orange " sets the color for .gitignore files
let g:NERDTreePatternMatchHighlightColor = {} " this line is needed to avoid error
let g:NERDTreePatternMatchHighlightColor['.*_spec\.rb$'] = s:rspec_red " sets the color for files ending with _spec.rb
" vim-devicons
let g:webdevicons_conceal_nerdtree_brackets = 1
let g:WebDevIconsNerdTreeAfterGlyphPadding = ' '
" dir-icons
let g:WebDevIconsUnicodeDecorateFolderNodes = 1
let g:DevIconsEnableFoldersOpenClose = 1
let g:WebDevIconsUnicodeDecorateFolderNodesDefaultSymbol = ''
let g:DevIconsDefaultFolderOpenSymbol = ''
" file-icons
let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols = {}
let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['html'] = ''
let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['css'] = ''
let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['md'] = ''
let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['txt'] = ''
call dein#add('jistr/vim-nerdtree-tabs') "NERDTreeからタブを開く
nnoremap <silent> <C-e> :NERDTreeFocusToggle
" nnoremap <C-n> gt
nnoremap <C-p> gT
call dein#add('Shougo/neosnippet.vim') "補完
call dein#add('Shougo/neosnippet-snippets') "補完
call dein#add('terryma/vim-multiple-cursors') "複数カーソル検索
nnoremap :mmm :MultipleCursorsFind
vnoremap :mmm :MultipleCursorsFind
call dein#add('tpope/vim-fugitive') "コマンドでgit add,commit,push
let g:airline#extensions#branch#enabled = 1
call dein#add('airblade/vim-gitgutter') "gitの編集状態をgutterに表示
"neocomplcache
call dein#add('Shougo/neocomplcache') "vimスクリプト補完
" Disable AutoComplPop.
let g:acp_enableAtStartup = 0
" Use neocomplcache.
let g:neocomplcache_enable_at_startup = 1
" Use smartcase.
let g:neocomplcache_enable_smart_case = 1
" Set minimum syntax keyword length.
let g:neocomplcache_min_syntax_length = 3
let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'
" Define dictionary.
let g:neocomplcache_dictionary_filetype_lists = {
\ 'default' : ''
\ }
" Plugin key-mappings.
inoremap <expr><C-g> neocomplcache#undo_completion()
inoremap <expr><C-l> neocomplcache#complete_common_string()
" Recommended key-mappings.
" <CR>: close popup and save indent.
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
function! s:my_cr_function()
return neocomplcache#smart_close_popup() . "\<CR>"
endfunction
" <TAB>: completion.
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
inoremap <expr><C-y> neocomplcache#close_popup()
inoremap <expr><C-e> neocomplcache#cancel_popup()
let g:loaded_matchparen = 1
call dein#add('itchyny/vim-parenmatch') "閉じ括弧に下線
" call dein#add('itchyny/vim-cursorword') "同じ単語に下線
call dein#add('othree/html5.vim') "シンタックスハイライトをHTML5に対応
let g:html5_event_handler_attributes_complete = 1
let g:html5_rdfa_attributes_complete = 1
let g:html5_microdata_attributes_complete = 1
let g:html5_aria_attributes_complete = 1
call dein#add('tomtom/tcomment_vim') "コメントアウトショートカット
nmap ww gcc
vmap ww gcc
if !exists('g:tcomment_types')
let g:tcomment_types = {}
endif
let g:tcomment_types['eruby'] = '<%# %s %>'
let g:tcomment_types['erb'] = '<%# %s %>'
let g:tcomment_types['scss'] = '/* %s */'
call dein#add('alvan/vim-closetag', {'lazy':0, 'on_ft': ['html','xhtml']}) "閉じタグ自動補完
call dein#add('vim-ruby/vim-ruby') "rubyのシンタックスや補完
call dein#add('tpope/vim-rails') "railsの補完やシンタックスハイライト
autocmd User Rails.view* NeoSnippetSource ~/.vim/snippet/ruby.rails.view.snip
autocmd User Rails.controller* NeoSnippetSource ~/.vim/snippet/ruby.rails.controller.snip
autocmd User Rails/db/migrate/* NeoSnippetSource ~/.vim/snippet/ruby.rails.migrate.snip
autocmd User Rails/config/routes.rb NeoSnippetSource ~/.vim/snippet/ruby.rails.route.snip
call dein#add('alpaca-tc/vim-endwise.git') "railsのdef...endを補完
let g:endwise_no_mappings=1
call dein#add('mikoto2000/buffer_selector.vim') "バッファリストを表示
noremap <Space><Space> <Esc>:call buffer_selector#OpenBufferSelector()<Enter>
call dein#add('jelera/vim-javascript-syntax') "javascriptシンタックス
call dein#add('hail2u/vim-css3-syntax') "css3シンタックス
call dein#add('lilydjwg/colorizer') "色表示
call dein#add('cakebaker/scss-syntax.vim') "scssシンタックス
call dein#add('slim-template/vim-slim') "slimシンタックス
call dein#add('Shougo/context_filetype.vim') "ファイルタイプ判定
call dein#add('osyo-manga/vim-precious')
autocmd BufNewFile,BufRead *.{html,htm,vue*} set filetype=html
call dein#add('nathanaelkane/vim-indent-guides') "インデントの可視化
let g:indent_guides_enable_on_vim_startup=1
let g:indent_guides_auto_colors = 0
" 奇数インデントのカラー
autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd guibg=#333333 ctermbg=235
" 偶数インデントのカラー
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=#2c2c2c ctermbg=240
let g:indent_guides_exclude_filetypes = ['help', 'nerdtree']
call dein#end()
set encoding=utf-8 "エンコード系
set fileencoding=utf-8 "エンコード系
set termencoding=UTF-8 "エンコード系
set fileformat=unix "ファイルフォーマット
set scrolloff=5 "スクロール時に下見えるようにする
syntax on "シンタックスハイライト
set t_Co=256 "配色設定
colorscheme Benokai "カラースキーマ
set number "行表示
set backspace=2 "backspaceの機能設定(字下げ、行末、挿入の開始点を超えて削除)
set cursorline "カーソルがいる行をハイライト表示
set nocursorcolumn "カーソル位置のカラムをハイライト表示しない
set whichwrap=b,s,h,l,<,>,[,] "左右のカーソル移動で行移動
set noswapfile "swapfileを生成しない
set norelativenumber "行の相対表示をやめる
set laststatus=2 "Always display the statusline in all windows
set showtabline=2 "Always display the tabline, even if there is only one tab
set tabstop=2 " タブを表示するときの幅
set shiftwidth=2 " タブを挿入するときの幅
set noshowmode "モード表示をOFF
set clipboard+=unnamed,autoselect " クリップボード
" set foldmethod=syntax "シンタックスに応じてzcでコードを折りたたむ
set foldlevel=100 "Don't autofold anything
set matchpairs& matchpairs+=<:> "対応括弧に<>を追加
set showmatch " 対応括弧をハイライト表示する
set matchtime=3 " 対応括弧の表示秒数を3秒にする
"prefix
nnoremap EE <C-w>
"Escape
inoremap ff <Esc>
vnoremap ff <Esc>
"インデント揃えてペースト
"インデント崩れるのでやめた
" nnoremap p p=`]
"ノーマルモードで改行してインサートモード
nnoremap <CR> A<CR><Esc>
"上スライド
nnoremap MM ddkkp
" nnoremap MM ddkkp=`]
"下スライド
nnoremap mm ddp
" nnoremap mm ddp=`]
"行複製
nnoremap tt ddPP
vnoremap tt dd<Esc>PP
" nnoremap tt ddPP=`]
"閉じ自動保管
inoremap { {}<LEFT>
inoremap [ []<LEFT>
inoremap ( ()<LEFT>
inoremap < <><LEFT>
inoremap " ""<LEFT>
inoremap ' ''<LEFT>
inoremap { {}<LEFT>
highlight Comment ctermfg=239
highlight Number ctermfg=09
highlight LineNr ctermfg=07
highlight Directory ctermfg=118
highlight RubyInstanceVariable ctermfg=208
highlight htmlTag ctermfg=15
highlight htmlEndTag ctermfg=15
autocmd BufRead,BufNewFile *.rb set filetype=ruby
autocmd BufRead,BufNewFile *.slim setfiletype slim
autocmd BufRead,BufNewFile jquery.*.js set ft=javascript syntax=jquery
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\""
"全角スペースをハイライト表示
function! ZenkakuSpace()
highlight ZenkakuSpace cterm=reverse ctermfg=DarkMagenta gui=reverse guifg=DarkMagenta
endfunction
if has('syntax')
augroup ZenkakuSpace
autocmd!
autocmd ColorScheme * call ZenkakuSpace()
autocmd VimEnter,WinEnter * match ZenkakuSpace / /
augroup END
call ZenkakuSpace()
endif
if dein#check_install()
call dein#install()
endif