Skip to content

Instantly share code, notes, and snippets.

@EsProgram
Created January 20, 2016 18:49
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 EsProgram/eee6678713a2e4b9d68a to your computer and use it in GitHub Desktop.
Save EsProgram/eee6678713a2e4b9d68a to your computer and use it in GitHub Desktop.
"Display
gui
" 透明度
set transparency=220
colorscheme koehler
syntax on "シンタックスカラーリングを設定する
set number "行番号を表示する
set title "編集中のファイル名を表示する
set showcmd "入力中のコマンドを表示する
set ruler "座標を表示する
set showmatch "閉じ括弧の入力時に対応する括弧を表示する
set matchtime=3 "showmatchの表示時間
set laststatus=2 "ステータスラインを常に表示する
"起動時のメッセージを消す(ウガンダに寄付しないフトドキモノです)
set shortmess+=I
" 起動時に最大化する
autocmd GUIEnter * simalt ~x
" ビジュアル選択(D&D他)を自動的にクリップボードへ (:help guioptions_a)
set guioptions+=a
" カーソルが一番上や下に移動した時のビープ音を消す&画面フラッシュも消す
set vb t_vb=
" カーソルを点滅させない
set guicursor=a:blinkon0
" ツールバー消す
set guioptions-=Tset guioptions+=a
"----------------------------
" NeoBundle初期化
" ---------------------------
filetype off
filetype plugin on
if has("vim_starting")
set nocompatible
set runtimepath+=~/.vim/bundle/neobundle.vim
endif
call neobundle#begin(expand('~/.vim/bundle/'))
NeoBundleFetch 'Shougo/neobundle.vim'
" ~/.pyenv/shimsを$PATHに追加
" jedi-vim や vim-pyenc のロードよりも先に行う必要がある、はず。
let $PATH = "~/.pyenv/shims:".$PATH
"----------------------------
" 以下Bundle
"----------------------------
" 基本入力補完
NeoBundle 'Shougo/neocomplete.vim'
let g:neocomplete#max_list = 200
" コメントON/OFFを手軽に実行
NeoBundle 'tomtom/tcomment_vim'
" vimでシェルを起動
NeoBundle 'Shougo/vimshell.vim'
" ヤンク管理
NeoBundle 'vim-scripts/YankRing.vim'
" インデントガイド
NeoBundle 'nathanaelkane/vim-indent-guides'
" ソリューション
NeoBundle 'scrooloose/nerdtree'
nnoremap <silent><C-e> :NERDTreeToggle<CR>
" 括弧補完
NeoBundle 'Townk/vim-autoclose'
" 様々な言語の構文チェッカー兼整形
NeoBundle 'scrooloose/syntastic'
let g:syntastic_python_checkers = ['pyflakes', 'pep8']
" 癒やし
NeoBundle 'drillbits/nyan-modoki.vim'
" Webデザイン関連
NeoBundle 'othree/html5.vim'
NeoBundle 'mattn/emmet-vim'
let g:user_emmet_mode = 'iv'
let g:user_emmet_leader_key = '<C-Y>'
let g:use_emmet_complete_tag = 1
let g:user_emmet_settings = {
\ 'lang' : 'ja',
\ 'html' : {
\ 'filters' : 'html',
\ },
\ 'css' : {
\ 'filters' : 'fc',
\ },
\ 'php' : {
\ 'extends' : 'html',
\ 'filters' : 'html',
\ },
\}
augroup EmmitVim
autocmd!
autocmd FileType * let g:user_emmet_settings.indentation = ' '[:&tabstop]
augroup END
NeoBundle 'hail2u/vim-css3-syntax'
" Python補完
NeoBundleLazy "davidhalter/jedi-vim", {
\ "autoload": {
\ "filetypes": ["python", "python3", "djangohtml"],
\ },
\ "build": {
\ "mac": "pip install jedi",
\ "unix": "pip install jedi",
\ }}
NeoBundleLazy 'tell-k/vim-autopep8', {
\ "autoload": {
\ "filetypes": ["python", "python3", "djangohtml"]
\ }}
" Djangoを正しくVimで読み込めるようにする
NeoBundleLazy "lambdalisue/vim-django-support", {
\ "autoload": {
\ "filetypes": ["python", "python3", "djangohtml"]
\ }}
" Vimで正しくvirtualenvを処理できるようにする
NeoBundleLazy "jmcantrell/vim-virtualenv", {
\ "autoload": {
\ "filetypes": ["python", "python3", "djangohtml"]
\ }}
" pyenv 処理用に vim-pyenv を追加
" Note: depends が指定されているため jedi-vim より後にロードされる(ことを期待)
NeoBundleLazy "lambdalisue/vim-pyenv", {
\ "depends": ['davidhalter/jedi-vim'],
\ "autoload": {
\ "filetypes": ["python", "python3", "djangohtml"]
\ }}
" UNDO機能の強化
NeoBundleLazy "sjl/gundo.vim", {
\ "autoload": {
\ "commands": ['GundoToggle'],
\}}
nnoremap <Leader>g :GundoToggle<CR>
" ちょっとしたスクリプトをVim開いたまま実行
NeoBundleLazy "thinca/vim-quickrun", {
\ "autoload": {
\ "mappings": [['nxo', '<Plug>(quickrun)']]
\ }}
nmap <Leader>r <Plug>(quickrun)
let s:hooks = neobundle#get_hooks("vim-quickrun")
function! s:hooks.on_source(bundle)
let g:quickrun_config = {
\ "*": {"runner": "remote/vimproc"},
\ }
endfunction
call neobundle#end()
" インストールチェック
NeoBundleCheck
filetype on
filetype plugin indent on
"-------------------------------------------------
" 通常設定
"-------------------------------------------------
set expandtab "タブ入力を複数の空白入力に置き換える
set tabstop=2 "画面上でタブ文字が占める幅
set shiftwidth=2 "自動インデントでずれる幅
set softtabstop=2 "連続した空白に対してタブキーやバックスペースキーでカーソルが動く幅
set autoindent "改行時に前の行のインデントを継続する
set smartindent "改行時に入力された行の末尾に合わせて次の行のインデントを増減する
" バックアップファイルを作成しない
set nobackup
" スワップファイルを作成しない
set noswapfile
" バックアップファイルを作らない
set nowritebackup
" viminfoファイルを作成しない
set viminfo=
" undoファイルを作らない
set noundofile
" エンコーディング
set fileencoding=utf-8
set hidden " バッファを閉じる代わりに隠す(Undo履歴を残すため)
set switchbuf=useopen " 新しく開く代わりにすでに開いてあるバッファを開く
set ignorecase " 大文字小文字を区別しない
set smartcase " 検索文字に大文字がある場合は大文字小文字を区別
set incsearch " インクリメンタルサーチ
set hlsearch " 検索マッチテキストをハイライト (2013-07-03 14:30 修正)
set infercase " 補完時に大文字小文字を区別しない
set number " 行番号の表示
set textwidth=0 " 自動的に改行が入るのを無効化
set cursorline " カーソル行の背景色を変える
set cursorcolumn " カーソル位置のカラムの背景色を変える
set laststatus=2 " ステータス行を常に表示
set cmdheight=2 " メッセージ表示欄を2行確保
set showmatch " 対応する括弧を強調表示
" set list " 不可視文字を表示
" set listchars=tab:?\ ,eol:,extends:?,precedes:? " 不可視文字の設定
" スクリーンベルを無効化
set t_vb=
set novisualbell
" OSのクリップボードを使う
set clipboard+=unnamed
set clipboard=unnamed
" コマンドラインモードでTABキーによるファイル名補完を有効にする
set wildmenu wildmode=list:longest,full
""ノーマルモードでの設定
" 削除でレジスタに格納しない(ビジュアルモードでの選択後は格納する)
nnoremap x "_x
" nnoremap dd "_dd
" ノーマルモード中でもエンターキーで改行挿入でインサートモードに戻る
noremap <CR> i<CR>
" j, k による移動を折り返されたテキストでも自然に振る舞うように変更
nnoremap j gj
nnoremap k gk
" Ctrl + hjkl でウィンドウ間を移動
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" Shift + 矢印でウィンドウサイズを変更
nnoremap <S-Left> <C-w><<CR>
nnoremap <S-Right> <C-w>><CR>
nnoremap <S-Up> <C-w>-<CR>
nnoremap <S-Down> <C-w>+<CR>
" insertモードでの設定
inoremap <C-s> <Esc>:w<CR>
inoremap <C-q> <Esc>:q<CR>
" rename用のマッピングを無効にしたため、代わりにコマンドを定義
command! -nargs=0 JediRename :call jedi#rename()
" ctrl-c/v/x等の使用
source $VIMRUNTIME/mswin.vim
"------------------------------------
" neocomplete設定
"------------------------------------
"Note: This option must set it in .vimrc(_vimrc). NOT IN .gvimrc(_gvimrc)!
" Disable AutoComplPop.
let g:acp_enableAtStartup = 0
" Use neocomplete.
let g:neocomplete#enable_at_startup = 1
" Use smartcase.
let g:neocomplete#enable_smart_case = 1
" Set minimum syntax keyword length.
let g:neocomplete#sources#syntax#min_keyword_length = 3
let g:neocomplete#lock_buffer_name_pattern = '\*ku\*'
" Plugin key-mappings.
inoremap <expr><C-g> neocomplete#undo_completion()
inoremap <expr><C-l> neocomplete#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 neocomplete#close_popup() . "\<CR>"
" For no inserting <CR> key.
return pumvisible() ? neocomplete#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> neocomplete#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>"
inoremap <expr><C-y> neocomplete#close_popup()
inoremap <expr><C-e> neocomplete#cancel_popup()
" Close popup by <Space>.
inoremap <expr><Space> pumvisible() ? neocomplete#close_popup() : "\<Space>"
"------------------------------------
"Python関連設定
"------------------------------------
"PythonのSyntatic無効
let g:syntastic_mode_map = {
\ 'mode': 'active',
\ 'active_filetypes': ['php', 'coffeescript', 'sh', 'vim'],
\ 'passive_filetypes': ['html', 'haskell', 'python']
\}
let g:jedi#goto_assignments_command = "<leader>g"
let g:jedi#goto_definitions_command = "<leader>d"
let g:jedi#documentation_command = "K"
let g:jedi#usages_command = "<leader>n"
let g:jedi#completions_command = "<C-Space>"
let g:jedi#rename_command = "<leader>r"
let g:jedi#show_call_signatures = "1"
" pythonのrename用のマッピングがquickrunとかぶるため回避させる
let g:jedi#rename_command = ""
let g:jedi#documentation_command = ""
" docstringは表示しない
"autocmd FileType python setlocal completeopt-=preview
autocmd FileType python setlocal omnifunc=jedi#completions
let g:jedi#completions_enabled = 0
let g:jedi#auto_vim_configuration = 0
if !exists('g:neocomplete#force_omni_input_patterns')
let g:neocomplete#force_omni_input_patterns = {}
endif
" let g:neocomplete#force_omni_input_patterns.python = '\%([^. \t]\.\|^\s*@\|^\s*from\s.\+import \|^\s*from \|^\s*import \)\w*'
let g:neocomplete#force_omni_input_patterns.python = '\h\w*\|[^. \t]\.\w*'
" 構文整形:Shift + F で自動修正
" original http://stackoverflow.com/questions/12374200/using-uncrustify-with-vim/15513829#15513829
function! Preserve(command)
" Save the last search.
let search = @/
" Save the current cursor position.
let cursor_position = getpos('.')
" Save the current window position.
normal! H
let window_position = getpos('.')
call setpos('.', cursor_position)
" Execute the command.
execute a:command
" Restore the last search.
let @/ = search
" Restore the previous window position.
call setpos('.', window_position)
normal! zt
" Restore the previous cursor position.
call setpos('.', cursor_position)
endfunction
function! Autopep8()
call Preserve(':silent %!autopep8 -')
endfunction
autocmd FileType python nnoremap <S-f> :call Autopep8()<CR>
"------------------------------------
" HTML 5 tags
"------------------------------------
syn keyword htmlTagName contained article aside audio bb canvas command
syn keyword htmlTagName contained datalist details dialog embed figure
syn keyword htmlTagName contained header hgroup keygen mark meter nav output
syn keyword htmlTagName contained progress time ruby rt rp section time
syn keyword htmlTagName contained source figcaption
syn keyword htmlArg contained autofocus autocomplete placeholder min max
syn keyword htmlArg contained contenteditable contextmenu draggable hidden
syn keyword htmlArg contained itemprop list sandbox subject spellcheck
syn keyword htmlArg contained novalidate seamless pattern formtarget
syn keyword htmlArg contained formaction formenctype formmethod
syn keyword htmlArg contained sizes scoped async reversed sandbox srcdoc
syn keyword htmlArg contained hidden role
syn match htmlArg "\<\(aria-[\-a-zA-Z0-9_]\+\)=" contained
syn match htmlArg contained "\s*data-[-a-zA-Z0-9_]\+"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment